【问题标题】:Android Studio app runs on real device but won't run on an emulatorAndroid Studio 应用程序可在真实设备上运行,但无法在模拟器上运行
【发布时间】: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 运行的“相同”设备上运行。我该如何解决这个问题,以便应用程序也可以在模拟器上运行?

【问题讨论】:

    标签: android opencv android-ndk avd abi


    【解决方案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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-05-01
            • 2016-09-02
            • 1970-01-01
            • 1970-01-01
            • 2014-03-27
            • 1970-01-01
            • 2014-09-01
            相关资源
            最近更新 更多