2011-12-15 1 views
9

Androidマーケットにアプリがあり、そのクラッシュレポートで java.lang.UnsatisfiedLinkErrorがクラッシュし、別の.soファイルになるたびに発生します。マーケットから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ファイル。私は約4つの.soファイルが私のアプリであり、時にはそれは1のためにクラッシュし、別のクラッシュすることがあります。

テストの間、私は、Androidのほぼすべてのバージョンを上のテストけれども、私は、この問題を再現することができませんでした

...

任意のポインタは非常に

おかげ

+1

リンク方法を教えていただければ、役に立ったと思ってください。 – Warpzit

+1

ちょうどSystem.loadLibrary( "mylibrary")。私がすでにデバイスのほとんどで言及したように、問題はありません..しかし、私はまだ市場からのいくつかのレポートを取得します.. – Naveen

+0

私はまだこの問題を整理することができませんでしたが、アプリケーションをSDカードに移動するいくつかのデバイスの問題を解決します...私が見つけたデバイスは、HTC Wildfire SのようなHTCデバイスです。 – Naveen

答えて

1

をいただければ幸いあなたは携帯電話を知っていますし、 /またはこの問題を引き起こすアンドロイドのバージョン?

ライブラリのサイズはどのくらいですか?ライブラリをロードしている間、古い携帯電話のメモリ制限にぶつかっているかもしれませんか?

+0

それは理由の一つかもしれません...私が言ったように、私は持っているデバイスのいずれにも再現できず、Androidマーケットのログはデバイス情報を提供しません... – Naveen

5

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

私はこれをさらにピン留めしようとしていますが、これまでのことを分かち合うと思っていました。

0

たぶん、あなたはによって引き起こさlibxxxx.so

」にあまりにも多くのメモリをアロケーション:ます。java.lang.UnsatisfiedLinkError:ライブラリを読み込むことができません:alloc_mem_regionは[871]:OOPS:116ライブラリ* *をマッピングすることはできません。利用可能なvspaceはありません。

0

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

詳細同様の問題がここで説明されています https://realm.io/docs/java/latest/#couldnt-load-librealm-jniso

かいつまんで、私は私のビルドで追加の設定を追加しました。arm64除外のGradle、:サイドノートとして

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

を - arm64-v8aのCPUは設定アームv7a命令と互換性があり、それらは32ビットThumb命令を実行することができるが、64および32ビット・ライブラリーを混合ではありません許可されます。

関連する問題