Android ndk Android 4.0为包含的库解包错误的eabi

Android ndk Android 4.0为包含的库解包错误的eabi,android-ndk,Android Ndk,情况是这样的:我已经建立了一个本机库,以便在其他应用程序中重新分发。因为我们使用的是ARMv7 NEON,所以我们提供了两个版本的库:一个用于大多数设备,另一个用于ARMv5/ARMv6的“后备”有限功能版本。到目前为止,一切都很好,效果也很好 然而,出于某种原因,一个运行在Nexus S上的Android 4.0.3新创建的应用程序获取了错误的库版本(armeabi而不是armeabi-v7a) 如果深入研究设备文件系统,我们会发现/data/app/my_app.apk包含库的正确版本。然而

情况是这样的:我已经建立了一个本机库,以便在其他应用程序中重新分发。因为我们使用的是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也是armeabi版本。但是,奇怪的是,/data/data/my_other_app/lib/my_lib.so是正确的armeabi-v7a版本

因此,问题是: 1) WTF??
2) Android如何决定从APK中提取哪个eabi?

是的,这是ICS中已知的错误-它选择了错误的库

请在此处阅读:


我还应该提到,我的app.apk在安卓2.2.1手机上运行得非常好。这让我们回到了问题#1。这似乎与正在发生的情况相符,但问题仍然存在:当两个应用程序都使用相同的捆绑库时,为什么问题会出现在一个应用程序中而不是另一个应用程序中?在第一个链接中,讨论了在armeabi-v7a上解包的库取决于.so文件在apk存档中的顺序。也许这就是正在发生的事情。这是有道理的,但奇怪的是,每个项目中的顺序是一致的(而且总是不同的)。。。我已经建立了几个版本的工作应用程序没有问题。但是,拥有一个单独的功能库似乎是可行的,所以我不打算进一步研究它。谢谢你的链接!!Moodstocks的博客文章说,这不仅仅取决于档案中文件的顺序。如果你想了解为什么要看下面杰伊·弗里曼的精彩评论。