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

91

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

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

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

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

Александр Ибарра
источник
Какой AVD вы использовали? Какой образ системы? Какой проект на GitHub?
OneCricketeer
Другими словами, образы Intel x86 не будут запускать код ARM.
OneCricketeer
github.com/jreyes/mirror
Александр Ибарра
Я хотел использовать 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 и снова включите аппаратное устройство.

user3157940
источник
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.

Вал Гейвандов
источник
5

Для меня это сработало, когда я сменил вариант кабеля с

-> Charge Only. 

Чтобы

-> Transfer file.
Сушил Чаудхари
источник
4

Просто перейдите на устройство и Settings >> Developer Options >> Restore Default SettingsвключитеUSB debugging

Иман Мараши
источник
3

Код ниже работал у меня:

ndk {
     abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86'
}
C-lio Garcia
источник
2

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

svguerin3
источник
2

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

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

adb kill-server

adb start-server

Он работает для меня в ОС Windows.

Сиддхартха Шанкар
источник
0

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

Ади
источник
0

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

NVA
источник
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

Перезагрузка устройства решила проблему для меня (React-native)

О. Боркуин
источник
0

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

Рико Валентино
источник
0

Попробуйте включить неизвестные источники в параметрах безопасности. У меня это сработало.

Сатиш Субрамани
источник
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, добавьте еще описание и код, если это необходимо для понимания ответа, потому что это решит чью-то проблему как можно скорее.
Нэнси Касундра