すべてのプロダクト
Search
ドキュメントセンター

Mobile Testing - Deprecated:INSTALL_FAILED_NO_MATCHING_ABIS

最終更新日:Jan 17, 2025

問題の説明

この例外は、インストールされたアプリにネイティブライブラリ(通常は .so ファイル)が含まれているものの、対応する CPU アーキテクチャのライブラリファイルがデバイスに存在しない場合に発生します。たとえば、開発者が ARMv7 ベースのアプリをコンパイルした場合に、そのアプリを Intel ベースのデバイスにインストールしようとすると、この例外が発生します。

解決策

この例外は、インストールされたアプリにネイティブライブラリ(通常は .so ファイル)が含まれているものの、対応する CPU アーキテクチャのライブラリファイルがデバイスに存在しない場合に発生します。アプリのコンパイル時に、NDK を使用して対応する CPU アーキテクチャのライブラリファイルをコンパイルすることをお勧めします。

1. Application.mk ファイルを記述します。 jni ディレクトリ(hello-jni.c ディレクトリと同じレベル)に Application.mk ファイルを作成し、次のコードをファイルに追加します。

APP_ABI := armeabi armeabi-v7a x86

このコードは、一度に 3 つのプロセッサ用の .so ファイルを生成できることを意味します。 Application.mk ファイルが存在しない場合、または使用しない場合は、ndk-build パラメータに次のコードを追加します。

APP_ABI="armeabi armeabi-v7a x86 mips"

次のコードが実行されます。

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

2. .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 ディレクトリに 3 つの armeabi/armeabi-v7a/x86 フォルダが生成され、これらのフォルダに libhello-jni.so ファイルが生成されます。

3. Eclipse で HelloJni プロジェクトを再コンパイルして、APK ファイルを生成します。 Eclipse で HelloJni プロジェクトを再コンパイルして、APK ファイルを生成します。 libhello-jni.so ファイルは APK ファイルに含まれています。