繁体   English   中英

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),所以C++开发者删除了对x86 ABI的支持,他不再可用. 在我的应用程序gradle中,我有:

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

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

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

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

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

您也许可以找到对 ARM CPU 进行完整模拟并在其上运行 Android 的东西,但预计它的执行速度约为 1/10。 我们在早期的 Android 时代就经历过这种情况,大多数人并没有为它太糟糕的模拟器而烦恼(他们只在真实设备上进行了测试)。

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

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

APP_ABI: = armeabi armeabi-v7a x86

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM