我的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运行的“相同”设备上运行。如何修复此问题以便应用程序也可以在模拟器上运行?
答案 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"
}