当我在genymotion模拟器设备上安装我的应用程序时,它无法安装好,在控制台上我得到了“INSTALL_FAILED_CPU_ABI_INCOMPATIBLE” 我试了另一个应用程序,安装得很好。我不知道为什么。
答案 0 :(得分:38)
应用程序(当然是游戏)必须只是ARM。 Genymotion是一个x86平台,因此将应用程序编译为目标x86。
您可以手动安装ARM支持: http://forum.xda-developers.com/showthread.php?t=2528952
答案 1 :(得分:7)
如果您使用的是IntelliJ,则可能与项目的默认配置有关。除非另有说明,否则IntelliJ将假定本机库将存储在Libs
文件夹中。这通常是开发人员存储他们的JAR
库的地方。 IntelliJ构建过程会将JAR
文件打包到APK中的Native文件夹中。
如果您遇到此问题,可以找到一个好的操作方法:
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE Intellj
这有助于解决我遇到的问题。
答案 2 :(得分:3)
您可以在此处查看我的答案:
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE on device using intellij
我知道它是为IntelliJ编写的,但你可能会遇到与Eclipse类似的问题,它认为一些普通的Java文件或jar库是本机代码并将其包含在已编译的APK中。一个快速找到的方法是打开最终的APK(它只是一个jar文件,因此大多数实用程序应该能够解压缩它)并确保您看到的唯一内容是META-INF
,{{1} },res
,AndroidManifest.xml
和classes.dex
。普通Java Android应用程序中可能存在其他有效文件,但一般情况下,如果您在其中看到其他任何内容,尤其是resources.arsc
文件夹,则可能是编译过程认为其他内容是本机的结果库(使用JNI编译的C / C ++代码)。
如果是这种情况,则需要将Eclipse配置为不将您正在使用的Java库解释为本机代码。现在,我个人不使用Eclipse,所以我不知道正确的设置在哪里,但基于this答案,看起来Eclipse自动假定根目录中的libs
文件夹您的项目包含本机库。最简单的解决方案可能是将您正在使用的任何Java库移动到不同的文件夹(例如libs
)。
答案 3 :(得分: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中的Native Library文件位置。
答案 4 :(得分:0)
同样问题的原因在我的案例中有所不同。
我在Android应用项目的/libs
目录中添加了一些依赖项jar。其中一个罐子以罐子形式输出了库;即jar文件中的jar。我注意到使用具有这种结构的jar创建的apk与基于x86的设备不兼容(不知道为什么)。