情况如下:我已经构建了一个 native 库,以便在其他应用程序中重新分发。由于我们使用 ARMv7 NEON,因此我们提供了两个版本的库:一个适用于大多数设备,另一个适用于 ARMv5/ARMv6 的“后备”有限功能版本。到目前为止一切顺利,而且效果很好。
但是,由于某种原因,在 Android 4.0.3 的 Nexus S 上运行的新创建的应用程序选择了错误的库版本(armeabi 而不是armeabi-v7a)。
如果我们深入研究设备文件系统,我们会发现/data/app/my_app.apk 包含正确版本的库。然而,当Android将其解压到/data/data/my_app时,我们发现/data/data/my_app/lib/my_lib.so是armeabi版本。但是,奇怪的是,/data/data/my_other_app/lib/my_lib.so 是正确的armeabi-v7a 版本。
所以问题是: 1)什么?? 2)Android如何决定从APK中提取哪个eabi?
最佳答案
是的,这是 ICS 中的已知错误 - 它选择了错误的库。
在这里阅读:
关于android-ndk - Android 4.0 为包含的库解压错误的 eabi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050765/