9

私はAndroidマーケットにアプリを持っていて、そのクラッシュレポートで、java.lang.UnsatisfiedLinkErrorがクラッシュし、それが別の.soファイルに対して発生するたびに発生します。

エラーは次のようになります

java.lang.ExceptionInInitializerError
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load *****: findLibrary returned null

また

java.lang.ExceptionInInitializerError
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: alloc_mem_region[871]: OOPS: 116 cannot map library ********. no vspace available.

また

java.lang.UnsatisfiedLinkError: Couldn't load ******: findLibrary returned null
at java.lang.Runtime.loadLibrary(Runtime.java:429)
at java.lang.System.loadLibrary(System.java:554)

一部のデバイスが一部の.soファイルを見つけられないようです。クラッシュは特定の.soファイルではありません。アプリに約4つの.soファイルがあり、1つでクラッシュすることもあれば、別の1つでクラッシュすることもあります。

Androidのほぼすべてのバージョンでテストしましたが、テスト中にこの問題を再現することはできませんでした...

任意のポインタをいただければ幸いです

ありがとう

4

4 に答える 4

5

私自身も同様の問題を見てきました。これは非常に少数のユーザーに影響を与えているようで、デバイスの種類やオペレーティング システムと直接関連付けることはできません。しかし、私が行った調査から、Cyanogenmod Google コード ページで議論を見つけました。簡単に要約すると、その mod の一部のビルドは、Google がシステム レベルのライブラリに加えた変更を正確にコピーしていないようです。つまり、一部のシンボル (__android_log_printなど) が、ライブラリの読み込みに失敗するなどのエラーを引き起こしている可能性があります。

私はこれをさらに突き止めようとしている最中ですが、これまでに持っているものを共有したいと思いました.

于 2012-10-20T16:29:14.153 に答える
1

Do you know the phones and/or the android versions that produce this problem?

What's the size of the libraries? Maybe you are hitting some memory limits of older phones while loading the libraries?

于 2011-12-26T01:05:38.540 に答える
0

UnsatisfiedLinkError私のアプリはエミュレーターとテスト用に持っているいくつかの Android デバイスで正常に動作していましたが、マーケットから についてのレポートを取得していました。ある時点で、生成された .apk アーカイブを開いたところ、libs/<ABI>使用しているリンク ライブラリの 1 つ (.soファイル) が欠落しているフォルダーがほとんどないことに気付きました。arm64 対応の CPU を搭載した Android デバイスは、リンクされたライブラリの一部をロードし、アプリが使用するライブラリのいずれかの arm64 バージョンを見つけることができない場合に (arm7v にフォールバックする代わりに) クラッシュすることが判明しました。

詳細を含む同様の問題については、 https ://realm.io/docs/java/latest/#couldnt-load-librealm-jniso で説明しています。

簡単に言うと、build.gradle に arm64 を除外する追加の構成を追加しました。

android {
  ndk {
    abiFilters "armeabi", "armeabi-v7a", "x86"
  }
}

補足として、arm64-v8a CPU は arm-v7a 命令セットと互換性があり、32 ビット Thumb 命令を実行できますが、64 ビット ライブラリと 32 ビット ライブラリを混在させることはできません。

于 2015-11-25T17:13:31.453 に答える
0

libxxxx.so にメモリを割り当てすぎている可能性があります

「原因: java.lang.UnsatisfiedLinkError: ライブラリを読み込めません: alloc_mem_region[871]: OOPS: 116 ライブラリをマップできません* * .vspace が利用できません。」

于 2013-01-16T09:05:41.780 に答える