在我的产品中,我发现当我将APK文件安装到运行android 4.0.1的Galaxy Nexus上时,正在安装不正确的。so文件。我有一个所谓的"胖"APK,其中包括armeabi, armeabi-v7a和x86的本机代码。
我发现armeabi CPU ABI的。so文件是从APK文件中提取的,而不是armeabi-v7a .so文件。如果我从APK文件中删除"armeabi"文件夹,那么galaxy nexus会正确地从armeabi-v7a文件夹中安装。so文件。
我已经验证了nexus的CPU ABI是"armeabi-v7a",它的辅助ABI是"armeabi"。
有没有其他人看到这个问题,他们有没有找到一种方法来解决这个问题,而不从APK的lib目录中删除"armeabi"文件夹?
这似乎是一个bug。我也通过使用本地代码创建一个小项目来测试它,Galaxy Nexus确实选择了错误的库(armeabi而不是armeabi-v7a)。
我已经在http://code.google.com/p/android/issues/detail?id=25321上报告了这个bug,并附上了示例项目。请给它打星,以引起Android工程师的注意。
似乎另一个StackOverflow问题也源于这个bug: Android浮点数学性能。