Android Studio应用程序在真实设备上运行,但赢得了';不要在模拟器上运行

Android Studio应用程序在真实设备上运行,但赢得了';不要在模拟器上运行,android,opencv,android-ndk,avd,abi,Android,Opencv,Android Ndk,Avd,Abi,我的Android Studio应用程序使用OpenCV和NDK。APK太大了,所以我决定不支持X86设备(我只想支持ARMEABI V7A和ARM64-V8A),所以对x86 ABI的支持被C++开发人员删除,他不再可用。在我的应用程序gradle中,我有: ABI过滤器“armeabi-v7a”、“arm64-v8a” 然而,现在,该应用程序将在Google Pixel real设备上运行 一个真正的设备),但不是在谷歌像素模拟器(或任何模拟器)。仿真器的生成失败,并显示以下消息: 无法为A

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

ABI过滤器“armeabi-v7a”、“arm64-v8a”

然而,现在,该应用程序将在Google Pixel real设备上运行 一个真正的设备),但不是在谷歌像素模拟器(或任何模拟器)。仿真器的生成失败,并显示以下消息:

无法为ABI生成:x86支持的ABI为:armeabi-v7a、arm64-v8a


我无法理解它如何在真正的设备上运行良好,但在与AVD运行的“同一”设备上却不能。如何修复此问题,使应用程序也能在模拟器上运行?

因为模拟器位于PC上。99.9999%的PC是x86设备。当您放弃对x86的支持时,您也放弃了对仿真器的支持。Readd x86支持来修复它


你也许可以找到一个可以完全模拟ARM CPU并在其上运行Android的东西,但预计它的运行速度大约是ARM CPU的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"
    }