У чому причина помилки "Пристрій підтримує 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.