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

Android Studio app runs on real device but won't run on an emulator

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

abiFilters 'armeabi-v7a'、'arm64-v8a'

但是,现在,该应用程序将 运行 在 Google 像素真实设备(或 真实设备),但不在 Google Pixel 模拟器(或任何模拟器)上。模拟器的构建失败并显示消息:

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

我无法理解它如何在真实设备上 运行 正常,但在带有 AVD 的 "same" 设备 运行 上却不行。我该如何解决这个问题,以便该应用程序也能在模拟器上 运行?

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

您也许可以找到对 ARM CPU 和 运行 Android 进行完整模拟的东西,但预计它的性能大约是 ARM 的 1/10速度。我们在早期 Android 的日子里就经历过这种情况,而且大多数人都不会为模拟器而烦恼它太糟糕了(他们只在真实设备上测试过)。

我将 x86 文件夹添加回 jniLibs 并将 abiFilters 'x86' 添加到 build.gradle(应用程序),现在可以使用了。

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

APP_ABI: = armeabi armeabi-v7a x86

遇到了类似的问题,我将 "x86" 添加到 build.gradle 中的 abiFilters 列表中,它在同步和构建后有效。

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