Android Studio应用程序在真实设备上运行,但不会在模拟器上运行

时间:2018-05-19 03:45:18

标签: android opencv android-ndk avd abi

我的Android Studio应用使用OpenCV和NDK。 apk太大所以我决定我不想支持x86设备(我只想支持armeabi-v7a和arm64-v8a),所以C ++开发人员删除了对x86 ABI的支持,他不再可用了。在我的应用程序中,我有:

abiFilters'armeabi-v7a','arm64-v8a'

然而,现在,该应用程序将在Google Pixel真实设备(或 一个真实的设备),但不是在谷歌Pixel模拟器(或任何模拟器)上。模拟器的构建失败,并显示以下消息:

无法为ABI构建:x86支持的ABI是:armeabi-v7a,arm64-v8a

我无法理解它如何在真实设备上正常运行,但不能在与AVD运行的“相同”设备上运行。如何修复此问题以便应用程序也可以在模拟器上运行?

4 个答案:

答案 0 :(得分:1)

因为模拟器在PC上。 99.9999%的PC是x86设备。当您放弃对x86的支持时,您放弃了对模拟器的支持。读取x86支持以修复它。

您可能能够找到能够完全模拟ARM CPU并在其上运行Android的东西,但期望它以大约1/10的速度运行。我们在Android早期的日子里经历过这种情况,并且大多数人都没有使用模拟器这么糟糕(他们只在真实设备上测试过)。

答案 1 :(得分:0)

我将x86文件夹添加回jniLibs和abiFilters的'x86'到build.gradle(app),现在可以正常工作。

答案 2 :(得分:0)

要生成x86机器代码,请将x86添加到Application.mk文件中的APP_ABI定义中。例如:

APP_ABI: = armeabi armeabi-v7a x86

答案 3 :(得分:0)

遇到类似的问题,我在build.gradle的abiFilters列表中添加了“ x86”,并且在同步和构建后可以正常工作。

ndk {
       abiFilters "armeabi-v7a", "arm64-v8a", "x86_64", "x86"
    }