6

巨大なネイティブ ライブラリを使用する Android アプリケーションを開発しています。一部のお客様から、起動時のクラッシュについて苦情が寄せられています。そのうちの 1 人が logcat ダンプを提供してくれました。

07-19 10:55:15.139 E/AndroidRuntime(16539)FATAL EXCEPTION: AsyncTask #3
07-19 10:55:15.139 E/AndroidRuntime(16539)java.lang.RuntimeException: An error occured while executing doInBackground()
07-19 10:55:15.139 E/AndroidRuntime(16539)at android.os.AsyncTask$3.done(AsyncTask.java:200)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.util.concurrent.FutureTask.run(FutureTask.java:138)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.lang.Thread.run(Thread.java:1019)
07-19 10:55:15.139 E/AndroidRuntime(16539)Caused by: java.lang.ExceptionInInitializerError
07-19 10:55:15.139 E/AndroidRuntime(16539)at my.app.appinit.NativeInitAsyncTask.doInBackground(NativeInitAsyncTask.java:86)
07-19 10:55:15.139 E/AndroidRuntime(16539)at my.app.appinit.NativeInitAsyncTask.doInBackground(NativeInitAsyncTask.java:44)
07-19 10:55:15.139 E/AndroidRuntime(16539)at android.os.AsyncTask$2.call(AsyncTask.java:185)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
07-19 10:55:15.139 E/AndroidRuntime(16539)... 4 more
07-19 10:55:15.139 E/AndroidRuntime(16539)Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1935]:    94 missing essential tables
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.lang.Runtime.loadLibrary(Runtime.java:434)
07-19 10:55:15.139 E/AndroidRuntime(16539)at java.lang.System.loadLibrary(System.java:554)
07-19 10:55:15.139 E/AndroidRuntime(16539)at nativewrapper.NativeObject.<clinit>(NativeObject.java:30)
07-19 10:55:15.139 E/AndroidRuntime(16539)... 8 more
07-19 10:55:15.179 W/ActivityManager(162)Force finishing activity my.app.packagename/my.app.FirstActivity

お客様の電話モデルは Samsung Galaxy Ace (gt-s5830) です。インターネットを掘り下げることで、Android リンカーからこのコードを見つけました ( http://source-android.frandroid.com/bionic/linker/linker.c ): それを見ると、zygote (pid 94) ができるようですアプリケーション (pid 1935) のライブラリをロードしないでください。これを修正するためのヒントや回避策が見つかりません。何か考えはありますか? ありがとう。

4

2 に答える 2

0

アプリケーションビルドを最新のndkリリースで更新します。

java.lang.UnsatisfiedLinkError

例外は、ネイティブライブラリ(Windowsの場合はDLL / Linuxの場合はSO)が見つからないために発生します。UNIXおよびその他のシステムでは、システム上のランタイムライブラリとビルド済みのネイティブライブラリに関連付けられているランタイムライブラリのバージョンの違いが原因である可能性もあります。

于 2012-08-23T20:11:15.153 に答える
0

これは、「LOAD A LIBRARY」への静的ブロックのエラーのようです。

これらのことを確認してください

  1. ライブラリ名の先頭から「lib」を削除し、末尾から「.so」を削除します。例: ライブラリが libTest.so の場合

静的ブロック内のコードは

static{

System.loadLibrary("Test");

}
  1. プロジェクトをクリーンアップしてください。
于 2013-08-17T12:31:53.747 に答える