Android Studio 应用程序可在真实设备上运行,但无法在模拟器上运行
Posted
技术标签:
【中文标题】Android Studio 应用程序可在真实设备上运行,但无法在模拟器上运行【英文标题】:Android Studio app runs on real device but won't run on an emulator 【发布时间】:2018-10-29 11:59:29 【问题描述】:我的 android Studio 应用使用 OpenCV 和 NDK。 apk 太大所以我决定不支持 x86 设备(我只想支持 armeabi-v7a 和 arm64-v8a),因此 C++ 开发人员删除了对 x86 ABI 的支持,他不再可用.在我的应用程序中,我有:
abiFilters 'armeabi-v7a', 'arm64-v8a'
但是,现在,该应用可以在 Google Pixel 真实设备(或 真实设备),但不在 Google Pixel 模拟器(或任何模拟器)上。模拟器的构建失败并显示以下消息:
无法为 ABI 构建:x86 支持的 ABI 有:armeabi-v7a、arm64-v8a
我无法理解它如何在真实设备上正常运行,但不能在使用 AVD 运行的“相同”设备上运行。我该如何解决这个问题,以便应用程序也可以在模拟器上运行?
【问题讨论】:
【参考方案1】:因为模拟器在 PC 上。 99.9999% 的 PC 是 x86 设备。当您放弃对 x86 的支持时,您就放弃了对模拟器的支持。阅读 x86 支持以修复它。
您也许可以找到完全模拟 ARM CPU 并在其上运行 Android 的东西,但预计它的运行速度约为 1/10。我们在早期的 Android 时代就经历过这种情况,大多数人都没有使用模拟器,这太糟糕了(他们只在真实设备上进行了测试)。
【讨论】:
【参考方案2】:遇到了类似的问题,我在 build.gradle 的 abiFilters 列表中添加了“x86”,它在同步和构建后工作。
ndk
abiFilters "armeabi-v7a", "arm64-v8a", "x86_64", "x86"
【讨论】:
【参考方案3】:我将 x86 文件夹添加回 jniLibs 和 abiFilters 'x86' 到 build.gradle(应用程序),它现在可以工作了。
【讨论】:
【参考方案4】:要生成 x86 机器代码,请将 x86 添加到 Application.mk 文件中的 APP_ABI 定义中。例如:
APP_ABI: = armeabi armeabi-v7a x86
【讨论】:
以上是关于Android Studio 应用程序可在真实设备上运行,但无法在模拟器上运行的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio Google Maps 可在 Android 设备上运行,但不能在模拟器上运行
Xamarin表单,在Visual Studio Android Emulator上运行的应用程序但在真实设备上崩溃
如何在使用 Xamarin for Visual Studio 的真实 Android 设备上进行调试?