24

当我在 genymotion 模拟器设备上安装我的应用程序时,它不能很好地安装,在控制台上我得到“INSTALL_FAILED_CPU_ABI_INCOMPATIBLE”我尝试了另一个应用程序,它安装得很好。我不知道为什么。

4

5 回答 5

38

应用程序(当然是游戏)只能是 ARM。Genymotion 是一个 x86 平台,因此将应用程序编译为以 x86 为目标。

您可以手动安装 ARM 支持:http: //forum.xda-developers.com/showthread.php?t=2528952

于 2013-12-06T09:48:42.727 回答
7

如果您使用的是 IntelliJ,它可能与项目的默认配置有关。除非另有说明,否则 IntelliJ 将假定本机库将存储在该Libs文件夹中。这通常是开发人员存储他们的JAR库的地方。IntelliJ 构建过程会将文件打包JAR到 APK 中的 Native 文件夹中。

如果你遇到这个问题,你可以找到一个很好的How-to

INSTALL_FAILED_CPU_ABI_INCOMPATIBLE Intellj

这有助于解决我遇到的问题。

于 2014-02-06T16:41:46.123 回答
3

您可能想在这里查看我的答案:

在使用 intellij 的设备上安装 INSTALL_FAILED_CPU_ABI_INCOMPATIBLE

我知道它是为 IntelliJ 编写的,但您可能会在 Eclipse 中遇到类似的问题,它认为一些普通的 Java 文件或 jar 库是本机代码,并将其包含在编译的 APK 中。快速查找的方法是打开最终的 APK(它只是一个 jar 文件,因此大多数实用程序应该能够解压缩它)并确保您看到的唯一内容是META-INFresAndroidManifest.xmlclasses.dexresources.arsc. 在普通的 Java Android 应用程序中可能还有其他有效文件,但一般来说,如果您在其中看到其他任何内容,尤其是libs文件夹,则可能是编译过程认为这些其他内容是本机库(编译 C/使用 JNI 的 C++ 代码)。

如果是这种情况,您需要将 Eclipse 配置为不将您使用的 Java 库解释为本机代码。现在,我个人不使用 Eclipse,所以我不知道正确的设置在哪里,但是根据这个答案,看起来 Eclipse 会自动假定libs项目根目录中的文件夹包含本机库。最简单的解决方案可能是将您正在使用的任何 Java 库移动到不同的文件夹(例如libraries)。

于 2013-12-22T10:36:49.800 回答
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 文件位置。

于 2014-12-30T06:05:28.697 回答
0

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

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

于 2014-10-30T11:13:04.903 回答