В чем причина ошибки «Устройство поддерживает x86, но APK поддерживает только armeabi-v7a»


91

Я играю с Android Studio, тестируя некоторые проекты из GitHub, и когда я пытаюсь эмулировать apk, он не позволяет мне выбрать эмулятор.

Он говорит мне:

Устройство поддерживает x86, но APK поддерживает только armeabi-v7a

Почему он это делает?


Какой AVD вы использовали? Какой образ системы? Какой проект на GitHub?
OneCricketeer

Другими словами, образы Intel x86 не будут запускать код ARM.
OneCricketeer


Я хотел использовать Nexus 10 под управлением Android 5.1
Александр Ибарра

Хорошо, а вы использовали образ системы ARM eabi v7 или образ Intel Atom x86? Проверьте свой SDK-менеджер, что вы установили.
OneCricketeer

Ответы:


87

У меня была такая же проблема, я проверяю build.gradle из module: app . Оказывается, есть такой конфиг:

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

когда я все закомментировал, все работало нормально.

Я пытался разобраться с проектом React Native Android .


1
Я думаю, вы имели в виду build.gradle;)
Райан Джеймс

2
У меня была та же проблема , и для меня «x86» просто отсутствует там
томас

1
Это сработало для меня, однако все, что мне нужно было сделать, это разрешить отладку на моем фактическом устройстве, и я мог снова раскомментировать эту строку.
Boomer Rogers

В какой раздел поставить ndk?
Ömrüm etin

У меня не сработало в java / kotlin, он строится, но приложение вылетает.
mozilla_firefox 07

77

Отключите отладку по USB и снова включите аппаратное устройство.


10
Эти комментарии я бы обычно отрицал, но на самом деле это работает!
Ахмед Хегази

2
Это работает, потому что Allow computer to connect to this deviceприглашение отображалось не в первый раз, а во второй раз.
Кайл Клегг

Это работало на компьютере, на котором у меня была пометка «запомнить для этого компьютера», когда я начинал новый проект с GitHub.
Z. Bagley

Так. После добавления новой архитектуры процессоров в ABI-фильтр - студия перестала распознавать устройство. Этот совет помог мне решить проблему. !!
Vetalll

Для меня это происходит в Эмуляторе
Ахил Сурапурам

42

В Android Studio выберите меню « Сборка» ,

введите описание изображения здесь

затем нажмите Select Build Variant ... и в окне Build Variants выберите x86Debug (или выпуск)

введите описание изображения здесь

PS: Я использую Android Studio 2.3 на Mac


Это сработало отлично - моя настройка gradle определяла сборки как ARM, так и x86, но мне пришлось проинструктировать Android Studio создать вариант x86, а не вариант ARM (вероятно, для iOS). Благодаря!
jevon 01

Обратите внимание, что вам необходимо выбрать проект, в противном случае параметр для этого будет выделен серым цветом. Я думаю, что есть некоторые другие условия, которые также могут сделать его серым - вам может потребоваться Очистить и восстановить.
Dronz

16

В Linux: Файл> Недействительный кэш / перезапуск. На телефоне: вместо этого выберите «Зарядить устройство» и выберите «Передача фотографий» (PTP)


1
Ни один из приведенных выше ответов не работал. Это сработало. Большое спасибо.
thedarkpassenger

Я изменил с Camera (PTP)на, Media Device (MTP)и он тоже работает. Спасибо!
Конаюки

11

У меня была аналогичная проблема, и я решил ее, добавив значение «x86» в список «abiFilters», как показано ниже -

[Откройте файл build.gradle (Module: app)], найдите « ndk » в deafultSection и добавьте к нему «x86»!

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

Надеюсь, поможет!!!


1
Вам, вероятно, следует отказаться, armeabiесли вы ориентируетесь на SDK 19 и выше. Сам Android не поддерживает это, начиная с 4.4
mradzinski

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 изображение в эмуляторе.

Создайте отдельный. При необходимости выберите вкладку «Другие изображения», чтобы найти устройства для рук.

Или запустите на реальном устройстве. Я думаю, что указанное вами репо предназначено для работы на Raspberry Pi 3 / ODroid.


6

Могу подтвердить, включение и выключение отладки USB в параметрах разработчика решило проблему. Возможно, даже отмените окно «Выбрать цель развертывания» в Android Studio и попробуйте снова запустить приложение после переключения отладки по USB.





2

На моем физическом устройстве я начал получать это. Исправление заключалось в том, чтобы войти в настройки разработчика, выключить и снова включить отладку по USB.


2

Если вы используете Ubuntu:

  1. убедитесь, что отладка по usb включена
  2. проверьте ваше кабельное соединение
  3. на панели уведомлений проверьте уведомление системы Android и коснитесь его, чтобы изменить состояние зарядки на передачу файлов
  4. Теперь перейдите в терминал и введите: adb devices после запуска этой команды adb restart и ваше устройство отобразится в списке


0

Проверьте свой код на реальном телефоне. Если у вас все еще такая же проблема, затем снова импортируйте свой код, а перед этим вы должны обновить свой SDK и создать новый эмулятор с образом системы ARM.


0

Во многих случаях это означает, что вы не предоставили своему ноутбуку / компьютеру доступ к устройству. Взгляните на свое устройство и нажмите кнопку «Разрешить доступ», а также разрешения для отладки.


0

Запуск AVD с использованием процессора x86 в 10 раз быстрее, чем с использованием эмулятора ARM, но в большинстве случаев вы компилируете только APK для ARM. Для более быстрого запуска эмуляции с использованием x86 AVD мне пришлось сделать следующее (для проекта Cocos2d-x):

  • приложение / jni / Android.mk

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

    PROP_APP_ABI=armeabi-v7a:x86
    
  • приложение / build.gradle

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


0

Это случилось со мной после обновления Android Studio. В моем случае это произошло из-за того, что параметр сборки не настроен автоматически в x86Debug-x86. Просто измените его, открыв Build >> Select Build Variant >> Измените вариант варианта сборки с armeabi-v7a на x86Debug-x86 или что-то еще, что вам нужно в эмуляторе.



0

я вижу это

Если вы используете CMake для своих сборок, проверьте файл \ proj.android \ gradle.properties и обновите PROP_APP_ABI, чтобы включить сборки для x86, или, в качестве альтернативы, вы можете просто использовать armeabi-v7a или arm64-v8a Android картинки.

Пример: PROP_APP_ABI = armeabi-v7a: arm64-v8a: x86

Если вы не используете cmake, загляните в \ proj.android \ app \ jni \ Application.mk, если вам нужно изменить там настройку ABI.


Добро пожаловать в StackOverflow, добавьте еще описание и код, если это необходимо для понимания ответа, потому что это решит чью-то проблему как можно скорее.
Нэнси Касундра
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.