回答:
INSTALL_FAILED_NO_MATCHING_ABIS
ネイティブライブラリがあり、CPUアーキテクチャ用のネイティブライブラリがないアプリをインストールしようとしているときです。たとえば、armv7用のアプリをコンパイルし、それをIntelアーキテクチャを使用するエミュレータにインストールしようとすると、機能しません。
INSTALL_FAILED_NO_MATCHING_ABISは、ネイティブライブラリがあり、CPUアーキテクチャ用のネイティブライブラリがないアプリをインストールしようとしている場合です。たとえば、armv7用のアプリをコンパイルし、それをIntelアーキテクチャを使用するエミュレータにインストールしようとすると、機能しません。
Visual Studio 2015でXamarinを使用します。 この問題を修正するには:
[サポートされているアーキテクチャ]で、次の項目をオンにします。
セーブ
編集:このソリューションはVisual Studio 2017でも機能することが報告されています。
編集2:このソリューションは、Visual Studio 2017 for Macでも機能することが報告されています。
別のスレッドからの回答を投稿しています。これは私にとってうまくいったからです。トリックは、両方のアーキテクチャのサポートを追加することです。
これを投稿するのは、直接的な答えが見つからず、目的の結果を得るためにいくつかの異なる投稿を確認する必要があったためです...
これをモジュールのbuild.gradleスクリプトandroid {}ブロック内に追加するだけで、x86 Accelerated(HAXM)エミュレーターを使用できました。
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
実行(ビルド)...これで、出力フォルダーに(yourapp)-x86-debug.apkが作成されます。Runでのインストールを自動化する方法があると確信していますが、好みのHAXMエミュレーターを起動してコマンドラインを使用するだけです。
adb install (yourapp)-x86-debug.apk
(yourapp)-x86-debug.apk
。プロジェクトの出力でファイルが見つかりませんでした。
Genymotionを使用している場合は、ARM TranslationとGAppをインストールする必要があります
これは確かに奇妙なエラーであり、アプリのマルチデキシングによって発生する可能性があります。これを回避するには、アプリのbuild.gradleファイルで次のブロックを使用します。
android {
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
...[rest of your gradle script]
Android 8の場合:
apache.commons.io:2.4
INSTALL_FAILED_NO_MATCHING_ABISが表示されます。2.5または2.6に変更すると、機能するか、コメント化されます。
@ enl8enmentnowのコメントは、genymotionを使用して問題を解決するための回答になるはずです。
ARMトランスレータを使用している場合でも、Genymotionでこの問題が発生するのは、Google Nexus 10などのx86仮想デバイスを作成しているためです。代わりに、カスタムタブレットのようなARM仮想デバイスを選択してください。
私は、androidスコープ内のパッケージオプションであるbuild.gradle(モジュールアプリ内)に追加されたbitcoinJライブラリ(org.bitcoinj:bitcoinj-core:0.14.7)を使用してこの問題を抱えていました。それは私を助けました。
android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
}
Macのgenymotionの場合、APKのインストール中にINSTALL_FAILED_NO_MATCHING_ABISエラーが発生しました。
私のプロジェクトでは "APP_ABI"はありませんでしたが、それに応じて追加しました。両方のアーキテクチャで1つのAPKしかビルドしませんでしたが、うまくいきました。 https://stackoverflow.com/a/35565901/3241111
Visual Studio Community Edition 2017では、AndroidオプションからサポートされているABIの選択が機能しない場合があります。
その場合、.csprojに次の行があり、同じビルド構成に重複する行がないことを確認してください。
<AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
編集するには、
基本的に上記のすべてを試しても同じエラー「私もこの問題に直面しているため」が発生する場合は、追加した.jarまたは.aarまたはモジュールがndkを使用する1つのライブラリであり、8.0をサポートしていないことを確認してください(Oreo)+、同様に.jarファイルを追加するMicrosoft SignalRソケットライブラリを使用していて、その後、Oreoにアプリがインストールされていないことがわかりました。その後、現在そのgitページに解決策がないため、そのライブラリを削除し、別のライブラリを探します。
そのため、使用しているライブラリを確認し、必要な場合は検索してください。
この問題は、Android 7(Nougat)からAndroid 8(Oreo)に移行したときに発生しました。
私は上記のいくつかの方法を試しましたが、不運にも何もうまくいきませんでした。
だから私は.apkファイルを.zipファイルに変更してそれを抽出し、このファイルがあった/x86_64/darwin/libscrypt.dylibが見つかったlibフォルダーを見つけたので、これを削除するには、androidセクションの下のbuild.gradleモジュールにコードを追加しました(すなわち)
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
乾杯の問題は解決しました
一般的に、どのライブラリの依存関係に互換性のないABIがあるかを調べるには、
インストールapkの問題の場合、INSTALL_FAILED_NO_MATCHING_ABISを解決するために、バージョンをアップグレードするか、これらのライブラリを削除/置換してみてください
私の場合、x86バージョンのアプリケーションをダウンロードする必要がありました。