首先,我的应用程序通常可以正常运行。我在所有四个32位CPU / ABI上拥有众多客户端,他们在运行应用程序时没有遇到任何问题。本机库是为所有四种体系结构而构建的。图书馆在那里,方法全部到位并命名正确。然而,我偶尔会收到异常报告,因为无法加载本机库:
java.lang.UnsatisfiedLinkError: Couldn't load foo from loader
dalvik.system.PathClassLoader [DexPathList[[zip file "/data/app/com.myapp-1.apk"],
nativeLibraryDirectories=[/data/app-lib/com.myapp-1, /vendor/lib, /system/lib]]]:
findLibrary returned null
我无法在模拟器上或在我可以访问的多个设备中重现这一点。我从以下设备获得了此例外的报告:
Sony Xperia LT29i (Android 4.3)
Sony Xperia C5303 (Android 4.3)
LG Optimus E405 (Android 2.3.6)
这是非常具体的。到目前为止,我有27个报告,但只有这三个设备。所有这些都是armeabi-v7a设备,不确定它是否重要。
请问任何想法?
编辑:从Optimus获得一些 logcat:
I/ActivityManager(23495): process name to start: com.myapp
I/ActivityManager(23495): Start proc com.myapp for activity com.myapp/.Main: pid=5755 uid=10078 gids={3003, 1015, 1007}
就是这样。下面没有任何内容表明错误。
答案 0 :(得分:2)
4.3中修复了影响应用更新的普遍问题,但似乎问题并没有完全消失。 Recent updates错误地调用了Xperia设备。最终用户卸载+重新安装应该可以解决问题。
答案 1 :(得分:2)
卸载并重新安装工作,但不幸的是,您可能会失去用户。为了解决这个问题,在我的项目中使用了铬的解决方案,它并不完美,但看起来很有效:
try {
System.loadLibrary("YourLib");
} catch (UnsatisfiedLinkError e) {
System.load("YourLibPath");
}
答案 2 :(得分:-1)
我把System.loadLibrary(" libMyLibrary")放回了null。我将其更改为System.loadLibrary(" MyLibrary")并且它有效。