簡體   English   中英

Android Studio 應用程序可在真實設備上運行,但無法在模擬器上運行

[英]Android Studio app runs on real device but won't run on an emulator

我的 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 一起運行的“相同”設備上運行。 我該如何解決這個問題,以便應用程序也能在模擬器上運行?

因為模擬器在PC上。 99.9999% 的 PC 是 x86 設備。 當您放棄對 x86 的支持時,也就放棄了對模擬器的支持。 閱讀 x86 支持以修復它。

您也許可以找到對 ARM CPU 進行完整模擬並在其上運行 Android 的東西,但預計它的執行速度約為 1/10。 我們在早期的 Android 時代就經歷過這種情況,大多數人並沒有為它太糟糕的模擬器而煩惱(他們只在真實設備上進行了測試)。

我將 x86 文件夾添加回 jniLibs 並將 abiFilters 'x86' 添加到 build.gradle(應用程序),現在它可以工作了。

要生成 x86 機器代碼,請將 x86 添加到 Application.mk 文件中的 APP_ABI 定義。 例如:

APP_ABI: = armeabi armeabi-v7a x86

遇到了類似的問題,我在 build.gradle 中的 abiFilters 列表中添加了“x86”,它在同步和構建后工作。

ndk {
       abiFilters "armeabi-v7a", "arm64-v8a", "x86_64", "x86"
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM