Android Studio应用程序可以在真实设备上运行,但无法在模拟器上运行。

4
我的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上运行“相同”的设备却无法运行。如何修复这个问题,使应用程序也能在模拟器上运行?
4个回答

2
面对类似的问题,我在build.gradle中的abiFilters列表中添加了"x86",在同步和构建后它就可以工作了。
ndk {
       abiFilters "armeabi-v7a", "arm64-v8a", "x86_64", "x86"
    }

1
因为模拟器在PC上。99.9999%的PC都是x86设备。当您停止支持x86时,就停止了对模拟器的支持。重新添加x86支持以解决此问题。
您可能能够找到一些完全模拟ARM CPU并在其上运行Android的东西,但预计其性能只有1/10左右。我们在早期的Android时代经历过这种情况,大多数人不会使用模拟器进行测试,因为效果太差(他们只在真实设备上进行测试)。

0
我将x86文件夹添加回jniLibs,并在build.gradle(app)中添加了abiFilters 'x86',现在它可以正常工作了。

0

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

APP_ABI: = armeabi armeabi-v7a x86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接