预装有.so库文件的Android应用无法升级

7
我在一家运营商工作,我们在Android手机上预装应用程序。
然而,一些预装的应用程序一旦从市场升级后就会崩溃。
问题在于:
- 应用程序包含一个.so库文件
- 为了将完整的应用程序预装到手机上,.so库文件必须单独放置在lib目录中(/system/lib/libXXXXjni.so)
- 当预装应用程序从市场升级并运行时,新APK中的.so库文件未被找到,而是先找到较旧的预装.so文件-这会导致崩溃,因为两个.so文件内容不同。
有没有人有建议的解决方法,或者了解可能帮助我解决这个问题的库搜索算法?
一个可能的解决方案是简单地重命名库文件,但这足够吗?
提前感谢...
1个回答

0
当你预加载时,尝试将应用程序库放在以下位置: /data/data/com.package.foobar/lib/libXXXXjni.so
重命名库可能会起作用。可以使用应用程序的版本号作为.so文件的名称。但是构建过程会变得更加复杂。

对于任何类型的预加载情况,设备是否需要具有根访问权限才能重命名/data/data位置中的文件? - Maximus
我在考虑升级版本后,该库会有一个新的名称。重命名将在开发者的机器上进行(以及在代码中的System.loadLibrary(...)调用中)。我认为最好的方法是将库预加载到应用程序的lib目录中,而不是/system/lib。 - abh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接