Android:无法加载库(94个缺少基本表)

时间:2012-08-02 10:47:26

标签: android linker android-ndk

我正在开发一个使用庞大的本机库的Android应用程序。一些客户抱怨启动时崩溃,其中一个客户向我们提供了他的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) ,我无法找到任何暗示或解决方法来解决这个问题,任何想法? 感谢。

2 个答案:

答案 0 :(得分:0)

使用最新的ndk版本更新您的应用程序版本。

java.lang.UnsatisfiedLinkError中

发生异常是因为找不到本机库(Windows / SO for Linux上的DLL)。在UNIX和其他系统上,它也可能是由系统上的运行时库与与预构建的本机库关联的运行时库之间的版本差异引起的。

答案 1 :(得分:0)

这似乎是静态块中的“LOAD A LIBRARY”错误。

检查这些事情

  1. 从开头删除“lib”,从库名称的末尾删除“.so”。 例如:如果库是libTest.so
  2. 你的静态块内的代码应该是

    static{
    
    System.loadLibrary("Test");
    
    }
    
    1. 确保清理项目。