有些客户在升级我的Android应用程序时会收到java.lang.UnsatisfiedLinkError。我该如何解决?

时间:2012-06-25 03:33:35

标签: java android installation java-native-interface

每次更新我的Android应用时,有几个随机客户会收到此异常。我把它缩小到两个原因,都与使用jni有关。

  1. 升级应用时会删除* .so库。
  2. 升级应用时,* .so库未升级,旧版本仍然存在。
  3. 设备报告不表示此问题与操作系统版本,内存或任何合理的问题有关。而不是关注为什么Android在升级库时遇到问题,我希望有人知道如何手动将库从应用程序的APK中拉出来并在遇到此错误时将它们放在正确的目录中。

1 个答案:

答案 0 :(得分:2)

好像你可能有一个ABI不匹配 - 或者可能是一个人们一直在谈论的Android bug导致的 false ABI不匹配,其中一个通用的arm库可能不被接受专业品种是首选。

至于你的解决方法......你不能写入应用程序安装的lib /目录,但如果你使用带有精确路径/文件名的System.load()而不是loadLibrary(),你可以将库放在别处。只是一个图书馆名称。我认为从apk中提取任意内容没有任何官方(如未来证明)方式,尽管目前使用zipfile类(使用Context.getPackageCodePath()之类的东西来发现它是相当容易的)位置和安装变量 apk的名称)

检查库加载尝试是否成功,并报告有关设备失败的信息可能同样有用。