У чому причина помилки "Пристрій підтримує x86, але APK підтримує лише armeabi-v7a"


90

Я бавлюся з 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

Відповіді:


85

У мене була та ж проблема, я перевіряю build.gradle з модуля: app . Виявляється, є така конфігурація:

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

коли я все прокоментував, все працювало нормально.

Я намагався мати справу з проектом React Native Android .


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

2
У мене була та сама проблема, і для мене там просто не вистачало "x86"
Томас

1
Це спрацювало для мене - проте все, що мені потрібно було зробити, це дозволити налагодження на моєму реальному пристрої, і я міг знову прокоментувати цей рядок.
Бумер Роджерс

Який розділ слід поставити ndk?
Ömrüm Çetin

Не працював у мене в Java / Kotlin, він збирається, але додаток аварійно завершує роботу.
mozilla_firefox

77

Вимкніть налагодження USB і знову увімкніть апаратний пристрій.


10
Ці коментарі я б зазвичай проти, але насправді, це працює!
Ахмед Хегазі

2
Це працює, оскільки Allow computer to connect to this deviceпідказка відображалася не вперше, а вдруге.
Kyle Clegg

Це працювало на комп’ютері, на якому мені було позначено «пам’ятаю для цього комп’ютера», коли я починав новий проект від GitHub.
Z. Bagley

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

Для мене це відбувається в Емуляторі
Akhil Surapuram

41

В Android Studio виберіть меню « Збірка »,

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

потім натисніть Вибрати варіант збірки ... і у вікні 'Варіанти збірки' виберіть x86Debug (або випустіть )

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

PS: я використовую Android Studio 2.3 на Mac


Це спрацювало чудово - моє налаштування gradle визначало як збірки ARM, так і x86, але мені довелося доручити Android Studio побудувати варіант x86 на відміну від варіанту ARM (ймовірно, для iOS). Дякую!
jevon

Зверніть увагу, що вам потрібно вибрати проект, інакше варіант зробити це буде неактивним. Я думаю, що існують деякі інші умови, які можуть це також висвітлити - можливо, вам доведеться очистити і відновити.
Dronz

16

У Linux: Файл> Вимкнути кеш / перезапуск На телефоні: Замість цього зарядіть зміну цього пристрою на Передача фотографій (PTP)


1
Жодна з наведених відповідей не працювала. Це спрацювало. Дуже дякую.
темний пасажир

Я змінився з Camera (PTP)на, Media Device (MTP)і це теж працює. Дякую!
Konayuki

11

У мене була подібна проблема, і я її вирішив, додавши значення "x86" до списку "abiFilters", як показано нижче -

[Відкрийте файл build.gradle (модуль: додаток)] і знайдіть " ndk " у deafultSection та додайте до нього "x86"!

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

Сподіваюся, це допоможе !!!


1
Можливо, вам слід відмовитись, armeabiякщо ви націлюєтеся на SDK 19 і вище. Сам Android не підтримує його, починаючи з 4.4
mradzinski 17.03.18

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.



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

Запуск AVD за допомогою процесора x86 в 10 разів швидший, ніж за допомогою емулятора ARM, але більшу частину часу ви лише збираєте APK для ARM. Для швидшого запуску емуляції з використанням AVD x86 мені потрібно було зробити наступне (для проекту 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

я це бачу

Якщо ви використовуєте 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.