使用adb命令遠程在Genymotion上安裝apk軟件時,執行命令報錯,如下
C:\WINDOWS\system32>adb install C:\Users\lly\Downloads\Wandoujia.apk
Performing Push Install
C:\Users\lly\Downloads\Wandoujia.apk: 1 file pushed. 50.7 MB/s (14476557 bytes in 0.272s)
pkg: /data/local/tmp/Wandoujia.apk
Failure [INSTALL_FAILED_NO_MATCHING_ABIS]
查看了一下資料,原因如下:
由於安裝的APP中使用了與當前CPU架構不一致的native libraries,所以導致報錯,因為現在絕大多數的智能手機還都是采用ARM架構的,雖然android是支持ARM和x86架構,但是它們的指令集是有差別的,APP在開發的時候使用的是ARM的本地庫,而我們在用AVD創建模擬器的時候使用的是x86的CPU,因此導致報錯。所以,如果APP是在x86架構下編譯的我們就創建x86cpu的模擬器,如果APP是在ARM架構編譯的我們就創建ARMcpu的模擬器。
解決辦法:
解決問題可以分為兩個方法:
方法一、讓genymotion模擬器支持arm架構。
既然創建的是x86模擬器,那么需要使用轉換包使其能夠支持arm。
下載ARM_Translation_Marshmallow 包,啟動模擬器,把這個zip文件直接拖進模擬器,提示中點擊OK,顯示如下圖則表示安裝成功
然后我們重啟一下模擬器再次嘗試安裝app,重啟的時候可能會慢一點。
方法二、讓該app項目將arm和x86的文件都包含進去。
可以在app的build.gradle中的android{}添加如下內容:
splits {
abi {
enable true
reset()
include ‘x86’, ‘armeabi-v7a’,‘x86_64’
universalApk true
}
}
其中對應的含義如下所示:
一般情況下第一中方法即可解決,如果不行可以嘗試第二種方法
參考資料:
https://blog.csdn.net/Leafage_M/java/article/details/86675699