情况如下:我已经构建了一个本机库,用于在其他应用程序中重新分发。因为我们使用的是 ARMv7 NEON,所以我们发布了两个版本的库:一个用于大多数设备,一个用于 ARMv5/ARMv6 的“后备”有限功能版本。到目前为止一切都很好,而且效果很好。
但是,由于某种原因,在 Nexus S 上运行 Android 4.0.3 的新创建应用程序选择了错误的库版本(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)WTF??2) Android 如何决定从 APK 中提取哪个 eabi?