全部產品
Search
文件中心

Mobile Testing - Deprecated:INSTALL_FAILED_NO_MATCHING_ABIS

更新時間:Jul 13, 2024

問題分析

當安裝的App包含native libraries(一般是so檔案)的時候,如果沒有對應機器CPU架構的庫檔案,就會出現這種問題。比如,開發人員編譯了一個armv7平台的App,但是想要裝在intel架構的裝置上,就會出現這個錯誤。

解決方案

安裝的App包含Native Libraries(一般是so檔案)的時候,因為沒有對應機器CPU架構的庫檔案,就會報出此類問題。建議在編譯App時,先用NDK編譯出相應的CPU架構的庫檔案。

步驟一:編寫Application.mk檔案在jni目錄下(例如,即hello-jni.c同級目錄下)建立一個Application.mk檔案,在檔案中添加如下代碼:

APP_ABI := armeabi armeabi-v7a x86

這段話表示你可以同時產生三個處理器的so庫。如果沒有或不想使用Application.mk檔案,則在ndk-build參數中添加如下代碼:

APP_ABI=”armeabi armeabi-v7a x86 mips”

即運行:

ndk-build APP_ABI=”armeabi armeabi-v7a x86 mips”

步驟二:產生.so共用庫檔案Android.mk檔案已經編寫好了,現在可以用Android NDK開發包中的ndk-build指令碼產生對應的.so共用庫了,方法如下:

mqc@ubuntu:~/workspace/android/NDK/hello-jni$ ls 
AndroidManifest.xml  assets  bin  default.properties  gen  jni  libs  obj  res  src 
mqc@ubuntu:~/workspace/android/NDK/hello-jni$ ndk-build 
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserverGdbsetup       : libs/armeabi/gdb.setupInstall        : libhello-jni.so => libs/armeabi/libhello-jni.so 

這樣,在檔案夾hello-jni/libs下產生了三個檔案夾armeabi/armeabi-v7a/x86,裡面已經正確的產生了libhello-jni.so共用庫了。

步驟三:在eclipse重新編譯HelloJni工程,產生apkeclipse中重新整理下HelloJni工程,重新編譯產生apk,libhello-jni.so共用庫會一起打包在apk檔案內。