解決:安裝測試APP發生INSTALL_FAILED_NO_MATCHING_ABIS的問題

這個INSTALL_FAILED_NO_MATCHING_ABIS問題會發生在安裝APK內有Native Library的APP,例如react-native。關於ABI的說明可參考官方文件

發生問題點:

$ adb install app-debug.apk 

Performing Streamed Install

adb: failed to install app-debug.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

解法5步驟:

1. 用zip解壓縮軟體打開/解開APK
2. 查看lib資料裡頭的資料夾名稱,其對應支援的機器羅列如下
  • armeabi是arm v5架構32位元的Native Library
  • armeabi-v7a是arm v7架構32位元的Native Library
  • arm64-v8a是arm架構64位元的Native Library
  • x86是32位元電腦的Native Library
  • x86_64是64位元電腦的Native Library
  • mips是32位元MIPS架構機器的Native Library
  • mips64是64位元MIPS架構機器的Native Library
備註:以上刪除線部份是因為NDK在NDK r17之後就不再支援

3. 確認你的機器是哪個架構

使用USB連接你的機器,adb shell進入機器內用指令查看支援架構
# getporp | grep abi
[ro.odm.product.cpu.abilist]: [armeabi-v7a,armeabi]
[ro.odm.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.odm.product.cpu.abilist64]: []
[ro.product.cpu.abi]: [armeabi-v7a]
[ro.product.cpu.abi2]: [armeabi]
[ro.product.cpu.abilist]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist64]: []
[ro.vendor.product.cpu.abilist]: [armeabi-v7a,armeabi]
[ro.vendor.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.vendor.product.cpu.abilist64]: []

若以我手邊的機器來說就是支援armeabi-v7a,armeabi所以就要在產生app時指定這兩個abi

4. 在你的Android Project設定確認有指定要產生的Native Library,懶的管的話就都產生

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

若是cmake可以參考這篇

5. 重編譯你的Project後再重複第一步驟

確認有生成Native Library後,再用adb裝一次測試APP就會成功了

留言