「デバイスはx86をサポートしていますが、APKはarmeabi-v7aのみをサポートしています」というエラーの理由は何ですか


90

GitHubからいくつかのプロジェクトをテストしてAndroidStudioで遊んでいますが、apkをエミュレートしようとすると、エミュレーターを選択できません。

それは私に言います:

デバイスはx86をサポートしていますが、APKはarmeabi-v7aのみをサポートしています

なぜこれを行うのですか?


どのAVDを使用しましたか?どのようなシステムイメージですか?どのGitHubプロジェクトですか?
OneCricketeer 2017年

つまり、Intelx86イメージはARMコードを実行しません。
OneCricketeer 2017年



さて、ARM eabiv7システムイメージまたはIntelAtom x86イメージを使用しましたか?インストールしたものをSDKマネージャーで確認してください。
OneCricketeer 2017年

回答:


85

同じ問題が発生しました。module :appからbuild.gradleをチェックアウトします。そのような構成があることがわかります:

    ndk {
        abiFilters "armeabi-v7a", "x86"
    }

私がすべてコメントしたとき、すべてがうまくいきました。

私はReactNativeAndroidプロジェクトに対処しようとしていました


1
build.gradleを意味していると思います;)
Ryan James

2
私は同じ問題を抱えていましたが、私にとっては「x86」がそこにありませんでした
トーマス2017

1
これは私にとってはうまくいきました-しかし、私がしなければならなかったのは、実際のデバイスでデバッグを許可することだけで、この行のコメントを再び解除することができました。
ブーマーロジャース

どのセクションにndkを配置する必要がありますか?
ÖmrümÇetin

java / kotlinでは機能しませんでした。ビルドされますが、アプリがクラッシュします。
mozilla_firefox

77

USBデバッグをオフにして、ハードウェアデバイスでオンに戻します。


10
私が通常は反対票を投じるコメントですが、実際にはうまくいきます!
Ahmed Hegazy 2018

2
これは、Allow computer to connect to this deviceプロンプトが最初は表示されなかったが、2回目は表示されたために機能します。
カイルクレッグ

これは、GitHubから新しいプロジェクトを開始したときに「このコンピューターを覚えている」とマークされたコンピューターで機能しました。
Z.Bagley19年

そう。新しいプロセッサアーキテクチャをABIフィルタに追加した後、スタジオはデバイスの認識を停止しました。このヒントは、問題の解決に役立ちました。
Vetalll

私にとって、これはエミュレーターで起こっています
AkhilSurapuram19年

41

Android Studioで、[ビルド]メニューを選択し、

ここに画像の説明を入力してください

次に、[ビルドバリアントの選択... ]をクリックし、[ビルドバリアント]ウィンドウでx86Debug(またはリリース)を選択します。

ここに画像の説明を入力してください

PS:MacでAndroid Studio2.3を使用しています


これは完全に機能しました-私のgradleセットアップはARMとx86の両方のビルドを定義しましたが、ARMバリアント(iOSの場合)ではなくx86バリアントをビルドするようにAndroidStudioに指示する必要がありました。ありがとう!
jevon 2018

プロジェクトを選択する必要があることに注意してください。そうしないと、これを行うオプションがグレー表示されます。それを灰色にすることができる他のいくつかの条件もあると思います-あなたはきれいにして再構築する必要があるかもしれません。
Dronz

16

Linuxの場合:ファイル>キャッシュの無効化/電話での再起動:代わりに、このデバイスの変更を写真の転送(PTP)に請求します


1
上記の答えはどれも機能していませんでした。これはうまくいきました。どうもありがとう。
thedarkpassenger 2018

からに変更しCamera (PTP)ましたがMedia Device (MTP)、それも機能します。ありがとうございました!
粉雪

11

同様の問題があり、以下のように「abiFilters」リストに「x86」値を追加することで解決しました-

[build.gradle(Module:app)ファイルを開きます] そしてdeafultSectionで「ndk」を検索し、それに「x86」を追加します!

ndk {
            abiFilters "armeabi", "armeabi-v7a", "x86"
        }

それが役に立てば幸い!!!


1
armeabiSDK 19以降をターゲットにしている場合は、おそらくドロップする必要があります。Android自体は4.4以降それをサポートしていません
mradzinski 2018年

9

Linuxマシンの私のケースでadb devices示しました。

List of devices attached 
44b194f5    no permissions

次に、adbサーバーを再起動しました

sudo adb kill-server

その後

sudo adb start-server

次に、デバイスを接続してデバッグをオンにし、次のように入力します

adb devices
List of devices attached 
44b194f5    device

ついにデバイス上で実行できました


7

私の場合、私のアプリはいくつかのネイティブライブラリを使用しています。各プラットフォームでは、対応するライブラリを構築する必要があります。

したがって、x86(またはその他の)プラットフォームのネイティブライブラリは生成されません。どこかにabifilterを追加する必要があります。

abiフィルターを指定できる場所はいくつかあります。

  • Application.mkは、次のように必要なプラットフォームを追加します。

    APP_ABI := armeabi armeabi-v7a x86
    
  • build.gradle

    abiFiltersを見つけて、次のように必要なプラットフォームを追加します。

    abiFilters   "armeabi","armeabi-v7a","x86"
    


6

デバイスはx86をサポートしていますが、APKはarmeabi-v7aのみをサポートしています)

x86エミュレータで画像を使用したようです。

別のものを作成します。必要に応じて、[その他の画像]タブを選択してARMデバイスを検索します。

または、実際のデバイスで実行します。あなたがリストしたリポジトリは、Raspberry Pi 3 / ODroidで実行することを意図していると思います。


6

確認できます。開発者向けオプションでUSBデバッグのオフ/オンを切り替えると、問題が解決しました。たぶん、Android Studioの[展開ターゲットの選択]ウィンドウをキャンセルし、USBデバッグを切り替えた後にアプリを再実行してみてください。



4

デバイスに移動してSettings >> Developer Options >> Restore Default Settings有効にするだけですUSB debugging



2

私の物理的なデバイスで、私はこれを手に入れ始めました。修正は、開発者設定に移動し、USBデバッグのオンとオフを切り替えることでした。


2

Ubuntuを使用する場合:

  1. USBデバッグがオンになっていることを確認してください
  2. ケーブル接続を確認してください
  3. 通知バーでAndroidシステムの通知を確認し、タッチして充電状態をファイル転送に変更します
  4. ここでターミナルに移動し、次のように入力します。このコマンドを実行した後、adb devices adb restartを実行すると、デバイスがリストに表示されます。


0

実際の電話でコードをテストします。それでも同じ問題が発生する場合は、コードを再度インポートします。その前に、SDKを更新し、ARMシステムイメージを使用して新しいエミュレーターを作成する必要があります。


0

多くの場合、これは、ラップトップ/コンピューターにデバイスへのアクセスを許可していないことを意味します。デバイスを確認し、[アクセスを許可]ボタンとデバッグ権限をクリックします。


0

x86プロセッサを使用してAVDを実行すると、ARMエミュレータを使用するよりも10倍高速になりますが、ほとんどの場合、ARM用にAPKをコンパイルするだけです。x86 AVDを使用してエミュレーションをより高速に実行するには、次のことを行う必要がありました(Cocos2d-xプロジェクトの場合)。

  • app / jni / Android.mk

    APP_ABI := armeabi-v7a:x86
    
  • gradle.properties

    PROP_APP_ABI=armeabi-v7a:x86
    
  • app / build.gradle

    android {
        ...
        defaultConfig {
            ...
            ndk {
                abiFilters = []
                abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
            }
        }
    }
    


0

Android Studioをアップデートした後、私はそれを思いついた。私の場合、ビルド設定がx86Debug-x86に自動的に構成されていないために発生しました。[ビルド] >> [ビルドバリアントの選択] >> [ビルドバリアント]オプションをarmeabi-v7aからx86Debug-x86またはエミュレーターで必要なものに変更するだけで変更できます。


0

セキュリティオプションから不明なソースを有効にしてみてください。それは私のために働いた。


0

私はこれを見る

ビルドにCMakeを使用している場合は、ファイル\ proj.android \ gradle.propertiesを確認し、PROP_APP_ABIを更新してx86のビルドを含めるか、armeabi-v7aまたはarm64-v8aAndroidを使用することもできます。画像。

例:PROP_APP_ABI = armeabi-v7a:arm64-v8a:x86

cmakeを使用していない場合は、\ proj.android \ app \ jni \ Application.mkを調べて、そこでABI設定を変更する必要がある場合に備えてください。


StackOverflowへようこそ。答えを理解する必要がある場合は、誰かの問題をできるだけ早く解決するため、説明とコードを追加してください。
Nensi Kasundra
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.