在Genymotion设备上安装应用程序,遇到“INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”错误。

24
当我在Genymotion模拟器设备上安装我的应用程序时,它无法正常安装,在控制台上显示“INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”。我尝试了另一个应用程序,它成功安装了。我不知道原因。

2
你的应用程序是否有任何本地代码(是否使用了C/C++和JNI),还是仅使用Java? - FuegoFro
@FuegoFro 没有,我没有... - topxebec
有什么建议可以解决 Eclipse 编辑器的问题吗? - CoDe
我按照这个方法做了,结果成功了:http://forum.xda-developers.com/showthread.php?t=2528952 - topxebec
5个回答

38

1
谢谢@slvn,我不知道如何编译应用程序以针对x86目标,但是我按照您的URL指示手动安装了ARM支持,它起作用了。 - topxebec

7
如果你使用的是IntelliJ,可能与项目的默认配置有关。除非另有指定,否则IntelliJ将假定本地库将存储在Libs文件夹中。这通常是开发人员存储其JAR库的地方。IntelliJ构建过程将把JAR文件打包到APK的Native文件夹中。
如果你遇到了这个问题,你可以找到一个很好的操作指南: INSTALL_FAILED_CPU_ABI_INCOMPATIBLE Intellj 这有助于解决我遇到的问题。

1
这对我有效。原因是IntelliJ会将“google-play-services.jar.properties”从Google Play服务中复制到apk内的“lib”文件夹中。安装程序似乎认为“google-play-services.jar.properties”是CPU架构名。 - Randy Sugianto 'Yuku'

3
您可能想查看我在这里的答案:INSTALL_FAILED_CPU_ABI_INCOMPATIBLE on device using intellij
我知道它是为IntelliJ编写的,但您可能会遇到Eclipse类似的问题,即它认为一些普通的Java文件或jar库是本地代码并将其包含在编译后的APK中。快速找出的方法是打开最终的APK(它只是一个jar文件,因此大多数实用程序都可以解压缩它),并确保您看到的只有 META-INFresAndroidManifest.xmlclasses.dexresources.arsc。在正常的Java Android应用程序中可能有其他有效的文件,但通常情况下,如果您看到任何其他内容,特别是 libs 文件夹,则可能是编译过程认为这些其他内容是本地库(使用JNI编译的C / C ++代码)的结果。
如果是这种情况,则需要配置Eclipse不将您正在使用的Java库解释为本地代码。现在,我个人不使用Eclipse,因此我不知道正确的设置在哪里,但基于答案,看起来Eclipse自动假定根目录中的 libs 文件夹包含本地库。最简单的解决方案可能是将您正在使用的任何Java库移动到另一个文件夹(例如 libraries)。

1

http://blog.iteedee.com/2014/02/android-install_failed_cpu_abi_incompatible-intellj/ 当您尝试在不支持的CPU架构的设备上安装Android应用程序时,会生成INSTALL_FAILED_CPU_ABI_INCOMPATIBLE错误。此错误通常与未针对设备的CPU架构(例如:x86、ARMv6、ARMv7等)打包的本地库有关。

现在,如果您有一个不使用任何本地库或*.so文件的应用程序,则可能会对此感到困惑。如果您使用IntelliJ IDEA IDE进行Android开发,则可能会将所有相关的.JAR文件打包到APK中的本地库文件位置。


0

在我的情况下,同样的问题的原因是不同的。

我在我的Android应用程序项目的/libs目录中添加了一些依赖JAR。其中一个JAR以JAR格式导出库;即一个JAR文件内部有另一个JAR文件。我注意到使用具有这种结构的JAR创建的APK与基于x86的设备不兼容(不知道为什么)。


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