web-dev-qa-db-ja.com

ApkをインストールするときのINSTALL_FAILED_NO_MATCHING_ABIS

私は自分のアプリをAndroid LプレビューIntel Atom仮想デバイスにインストールしようとしましたが、エラーで失敗しました:

INSTALL_FAILED_NO_MATCHING_ABIS

どういう意味ですか?

421
Peter Zhao

INSTALL_FAILED_NO_MATCHING_ABISはネイティブライブラリを持っていて、あなたのcpuアーキテクチャ用のネイティブライブラリを持っていないアプリをインストールしようとしているときです。たとえば、 armv7 用にアプリケーションをコンパイルし、 Intel アーキテクチャを使用するエミュレータにインストールしようとした場合は、うまくいきません。

572

INSTALL_FAILED_NO_MATCHING_ABISは、ネイティブライブラリを持ち、cpuアーキテクチャ用のネイティブライブラリを持たないアプリをインストールしようとしているときです。たとえば、armv7用にアプリをコンパイルし、その代わりにIntelアーキテクチャを使用するエミュレータにインストールしようとしている場合は、うまくいきません。

Visual Studio 2015でXamarinを使用する。 この問題を解決するには:

  1. あなたのxamarinを開きます。
  2. Androidプロジェクトを右クリック
  3. クリックプロパティ
  4. Androidのオプションをクリックします
  5. [詳細設定]タブをクリックします
  6. "Supported architectures"の下で、以下をチェックしてください。

    1. armeabi-v7a
    2. x86
  7. 保存する

  8. F5(ビルド)

編集: /この解決方法は、Visual Studio 2017でも機能することが報告されています。

編集2: /この解決策は Mac用のVisual Studio 2017 での作業として報告されています - /。

145
Asher Garland

私は別のスレッドから回答を投稿しています。なぜならそれは私にとってはうまくいったからです。トリックは両方のアーキテクチャーのサポートを追加することです。

私が直接の答えを見つけることができず、私がやりたいことを得るためにいくつかの異なる投稿を見なければならなかったので、これを投稿してください...

これを私のモジュールのbuild.gradleスクリプトInside Android {}ブロックに追加するだけで、x86アクセラレーター(HAXM)エミュレーターを使用することができました。

splits {
        abi {
            enable true
            reset()
            include 'x86', 'armeabi-v7a'
            universalApk true
        }
    }

実行(ビルド)...これで、出力フォルダに(yourapp)-x86-debug.apkが作成されます。実行時に自動インストールする方法はあると確信していますが、好みのHAXMエミュレータを起動してコマンドラインを使用するだけです。

adb install (yourapp)-x86-debug.apk
81
Driss Bounouar

Genymotionを使用している場合は、 インストールARM Translation and GApps が必要です - /

58
R00We

これは実際、アプリのマルチインデックス化によって引き起こされる可能性がある奇妙なエラーです。これを回避するには、アプリケーションの build.gradle ファイルで次のブロックを使用します。

Android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]
32
IgorGanapolsky

私はここにたくさんの答えがあったことを知っていますが、TL; DRバージョンはこれです(Xamarin Studioを使っているなら):

  1. ソリューションツリーでAndroidプロジェクトを右クリック
  2. Optionsを選択
  3. Android Buildに行く
  4. Advancedタブに行きます
  5. エミュレータで使用しているアーキテクチャを確認してください(おそらくx86/armeabi-v7a/armeabi
  6. Kickassアプリを作る:)
11
Jonathan Perry

この解決策は私のために働いた。これを試して、あなたのアプリの build.gradle ファイルに以下の行を追加してください。

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}
7
vaibhav

@ enl8enmentnowのコメントは、genymotionを使用して問題を解決するための答えになるはずです。

ARMトランスレータを使用してもGenymotionでこの問題が発生する場合は、Google Nexus 10のようなx86仮想デバイスを作成しているためです。代わりにARM仮想デバイスを選択してください。カスタム錠.

7
muetzenflo

Visual Studio mac - ここでサポートを変更できます。

enter image description here

6
LeRoy

これは私のために働いた... Android> Gradleスクリプト> build.gradle(モジュール:app)Android内に追加*

Android {
  //   compileSdkVersion 27
     defaultConfig {
        //
     }
     buildTypes {
        //
     }
    // buildToolsVersion '27.0.3'

    splits {
           abi {
                 enable true
                 reset()
                 include 'x86', 'armeabi-v7a'
                 universalApk true
               }
    }
 }

enter image description here

4
user8554744

私は(モジュールアプリで)build.gradleに追加されたbitcoinJライブラリ(org.bitcoinj:bitcoinj-core:0.14.7)を使用して、Androidスコープ内のパッケージオプションを使用して、この問題を抱えていました。それは私を助けました。

Android {
...
    packagingOptions {
        exclude 'lib/x86_64/darwin/libscrypt.dylib'
        exclude 'lib/x86_64/freebsd/libscrypt.so'
        exclude 'lib/x86_64/linux/libscrypt.so'
    }
}
3
ediBersh

私の場合、xamarinプロジェクトで、プロパティを選択してVisual Studioのエラーを削除-> Androidオプションを選択し、[共有ランタイムを使用]および[高速展開を使用]をチェックします(そのうちの1つ enter image description here

3
saleem kalro

Android 8の場合:

Apache.commons.io:2.4

それはINSTALL_FAILED_NO_MATCHING_ABISを与えます、それを2.5か2.6に変えようとしてください、そしてそれはそれを働かせるかそれをコメントアウトします。

3
Saba Jafarzadeh

ビジュアルスタジオコミュニティエディション2017では、AndroidオプションからサポートされているABIの選択がうまくいかない場合があります。

その場合は、.csprojに次の行があり、同じビルド構成に重複する行がないことを確認してください。

 <AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>

編集するには

  1. Androidプロジェクトをアンロードする
  2. 右クリックして「プロジェクトの編集」を選択します。
  3. 上記の行がビルド構成で一度だけあることを確認してください。
  4. 保存する
  5. Androidプロジェクトを右クリックして再読み込み
2

Macでのgenymotionのために、私のapkをインストールしている間私はINSTALL_FAILED_NO_MATCHING_ABISエラーを得ていました。

私のプロジェクトには "APP_ABI"はありませんでしたが、それに合わせて追加したところ、両方のアーキテクチャに対して1つのapkしか作成されませんでしたが、うまくいきました。 https://stackoverflow.com/a/35565901/3241111

1

かなり遅くなりましたが、これに遭遇しました。これはXamarin.Android用です。リリースモードでデバッグしようとしていないことを確認してください。リリースモードでデバッグしようとすると、まったく同じエラーになります。リリースからデバッグに切り替えるだけで、私のものは正しくインストールできました。

0
Nieminen

私の場合は、x86バージョンのアプリケーションをダウンロードする必要がありました。

  1. https://www.apkmirror.com/ に移動します。
  2. アプリを検索
  3. リストの最初のものを選択してください
  4. ページの上部を見てください、どこにある[会社名]> [アプリケーション名]> [バージョン番号]
  5. アプリケーション名をクリック
  6. 'All Variants'をクリック
  7. リストにはダウンロードするx86版が含まれているはずです。
0
Fidel

基本的に上記のことをすべて試しても同じエラーが出ます。「私も前にこの問題に直面しているので」、ndkを使用しているライブラリがどれであるかを確認します。 (Oreo)+、同様に私はその.jarファイルを追加するMicrosoft SignalRソケットライブラリを使用しています、そして後で私は現在そのgitページに解決策がないので私はそのライブラリを削除します。

それで、あなたが使用しているライブラリをチェックして、もしあなたがそのライブラリを熱心に必要としていたらそれについて検索してください。

0
Sumit Kumar

私は、Android 7(Nougat)からAndroid 8(Oreo)に移行したときに、この問題に直面しました。

私は上に挙げたいくつかの方法を試してみましたが、不幸にも何もうまくいきませんでした。

それで私は.apkファイルをそれを抽出した.Zipファイルに変えて、このファイルがあった lib フォルダを見つけました /x86_64/darwin/libscrypt.dylib そう私はこれを削除しましたmy build.gradle Androidセクションの下のモジュールのコード(例)

packagingOptions {
    exclude 'lib/x86_64/darwin/libscrypt.dylib'
    exclude 'lib/x86_64/freebsd/libscrypt.so'
    exclude 'lib/x86_64/linux/libscrypt.so'
}

歓声の問題は解決しました

0
Khan.N

これは私に起こりました。私はSDKマネージャをチェックしました、そしてそれは私が使っていたものが更新を持っていたことを私に言いました。私はそれを更新して問題は解決しました。

0
Barry Fruitman