当我在Genymotion模拟器设备上安装我的应用程序时,它无法正常安装,在控制台上显示“INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”。我尝试了另一个应用程序,它成功安装了。我不知道原因。
该应用程序(很明显是个游戏)必须仅限于ARM架构。Genymotion是x86平台,因此需要将该应用程序编译为针对x86的目标平台。
您可以手动安装ARM支持: http://forum.xda-developers.com/showthread.php?t=2528952
META-INF
、res
、AndroidManifest.xml
、classes.dex
和 resources.arsc
。在正常的Java Android应用程序中可能有其他有效的文件,但通常情况下,如果您看到任何其他内容,特别是 libs
文件夹,则可能是编译过程认为这些其他内容是本地库(使用JNI编译的C / C ++代码)的结果。libs
文件夹包含本地库。最简单的解决方案可能是将您正在使用的任何Java库移动到另一个文件夹(例如 libraries
)。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中的本地库文件位置。
在我的情况下,同样的问题的原因是不同的。
我在我的Android应用程序项目的/libs
目录中添加了一些依赖JAR。其中一个JAR以JAR格式导出库;即一个JAR文件内部有另一个JAR文件。我注意到使用具有这种结构的JAR创建的APK与基于x86的设备不兼容(不知道为什么)。