INSTALL_FAILED_NO_MATCHING_ABIS при установке apk
Я попытался установить приложение в Android L Preview Intel Atom Virtual Device, оно не удалось с ошибкой:
INSTALL_FAILED_NO_MATCHING_ABIS
Что это значит?
28 ответов
INSTALL_FAILED_NO_MATCHING_ABIS
это когда вы пытаетесь установить приложение с собственными библиотеками и без встроенной библиотеки для вашей архитектуры процессора. Например, если вы скомпилировали приложение для armv7 и пытаетесь установить его на эмуляторе, использующем архитектуру Intel, оно не будет работать.
INSTALL_FAILED_NO_MATCHING_ABIS - это когда вы пытаетесь установить приложение с собственными библиотеками и без встроенной библиотеки для архитектуры вашего процессора. Например, если вы скомпилировали приложение для armv7 и пытаетесь установить его на эмуляторе, использующем архитектуру Intel, оно не будет работать.
Использование Xamarin в Visual Studio 2015. Исправьте эту проблему следующим образом:
- Откройте свой xamarin .sln
- Щелкните правой кнопкой мыши ваш проект Android
- Нажмите свойства
- Нажмите Настройки Android
- Нажмите вкладку "Дополнительно"
В разделе "Поддерживаемые архитектуры" сделайте следующее:
- armeabi-v7a
- x86
спасти
- F5 (сборка)
Изменить: Сообщается, что это решение работает и в Visual Studio 2017.
Редактировать 2: Сообщалось, что это решение работает и в Visual Studio 2017 для Mac.
Я отправляю ответ из другой ветки, потому что это то, что у меня хорошо работает, хитрость заключается в том, чтобы добавить поддержку обеих архитектур:
Публикуя это, потому что я не мог найти прямой ответ и должен был посмотреть пару разных постов, чтобы получить то, что я хотел сделать...
Я смог использовать эмулятор x86 Accelerated (HAXM), просто добавив его в скрипт своего модуля build.gradle внутри блока android{}:
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
Запустить (построить)... Теперь в вашей выходной папке будет (yourapp)-x86-debug.apk. Я уверен, что есть способ автоматизировать установку при запуске, но я просто запускаю свой предпочитаемый эмулятор HAXM и использую командную строку:
adb install (yourapp)-x86-debug.apk
Если вы используете Genymotion, вам нужно установить ARM Translation и GApps
Это действительно странная ошибка, которая может быть вызвана мультидексированием вашего приложения. Чтобы обойти это, используйте следующий блок в файле build.gradle вашего приложения:
android {
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
...[rest of your gradle script]
На Android 8:
apache.commons.io:2.4
он дает INSTALL_FAILED_NO_MATCHING_ABIS, попробуйте изменить его на 2,5 или 2,6, и он будет работать или комментировать.
Это решение сработало для меня. Попробуйте это, добавьте следующие строки в файл build.gradle вашего приложения
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
Я знаю, что здесь было много ответов, но версия TL;DR такова (если вы используете Xamarin Studio):
- Щелкните правой кнопкой мыши проект Android в дереве решений.
- Выбрать
Options
- Идти к
Android Build
- Идти к
Advanced
табуляция - Проверьте архитектуры, которые вы используете в эмуляторе (возможно,
x86
/armeabi-v7a
/armeabi
) - Сделай офигенное приложение:)
У меня была эта проблема, используя библиотеку bitcoinJ (org.bitcoinj:bitcoinj-core:0.14.7), добавленную в build.gradle(в модуле app) варианты упаковки внутри области android. это помогло мне.
android {
...
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
}
Это сработало для меня... Android > Gradle Scripts > build.gradle (Модуль: приложение) добавить внутри Android*
android {
// compileSdkVersion 27
defaultConfig {
//
}
buildTypes {
//
}
// buildToolsVersion '27.0.3'
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
}
Комментарий @ent8enmentnow должен быть ответом для решения проблемы с помощью genymotion:
Если у вас есть эта проблема на Genymotion даже при использовании транслятора ARM, это потому, что вы создаете виртуальное устройство x86, такое как Google Nexus 10. Вместо этого выберите виртуальное устройство ARM, как одну из пользовательских таблиц.
Привет, если вы используете эту библиотеку;
implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'
Замените его на:
implementation 'commons-io:commons-io:2.6'
И проблема будет устранена.
эта проблема связана с архитектурой ЦП, и у вас есть
abi
в
lib
папка.
перейти к
build.gradle
для тебя
app module
И в
android
, блок добавить это:
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
В моем случае мне нужно было скачать версию приложения для x86.
- Перейти на https://www.apkmirror.com/
- Поиск приложения
- Выберите первый в списке
- Посмотрите на верхнюю часть страницы, где находится [Название компании] > [Имя приложения] > [Номер версии]
- Нажмите на название приложения
- Нажмите "Все варианты"
- Список должен содержать вариант x86 для загрузки
В выпуске Visual Studio Community 2017 иногда не поддерживается выбор поддерживаемых ABI из опций Android.
В этом случае проверьте, что.csproj имеет следующую строку и не содержит повторяющихся строк в тех же конфигурациях сборки.
<AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
Чтобы редактировать,
- Разгрузите свой проект Android
- Щелкните правой кнопкой мыши и выберите "Редактировать проект"...
- Убедитесь, что у вас есть строка выше только один раз в конфигурации сборки
- Сохранить
- Щелкните правой кнопкой мыши на вашем проекте Android и перезагрузите
Для genymotion на Mac я получил ошибку INSTALL_FAILED_NO_MATCHING_ABIS при установке моего apk.
В моем проекте не было никакого "APP_ABI", но я добавил его соответственно, и он собрал только один apk для обеих архитектур, но он работал. /questions/5656088/installfailednomatchingabis-kak-poborot/5656122#5656122
В основном, если вы попробовали все выше и по-прежнему у вас та же ошибка "Потому что я тоже сталкивался с этой проблемой раньше", то проверьте, какой.jar или.aar или модуль, который вы добавили, может быть той библиотекой, использующей ndk, и которая не поддерживает 8.0 (Oreo)+, также я использую библиотеку сокетов Microsoft SignalR, добавляя свои файлы.jar, и недавно я обнаружил, что приложение не устанавливается в Oreo, а затем я удаляю эту библиотеку, потому что в настоящее время на ее странице git нет решения, и я перехожу к другой.,
Поэтому, пожалуйста, проверьте библиотеку, которую вы используете, и поищите ее, если она вам очень нужна.
В общем случае, чтобы узнать, в какой библиотечной зависимости несовместим ABI,
- создать APK-файл в Android Studio (меню Build > Build Bundle(s)/APK(s) > Build APK(s)) // актуально на 01.04.2020
- переименовать файл APK, заменив расширение "apk" расширением "zip"
- распаковать zip файл в новую папку
- перейти в папку libs
- узнать, какие библиотеки *.jar с несовместимыми ABI есть
Вы можете попробовать обновить версию / удалить / заменить эти библиотеки, чтобы решить проблему INSTALL_FAILED_NO_MATCHING_ABIS при установке apk.
На всякий случай это может помочь кому-то вроде меня. У меня была такая же проблема в Unity 3D. Я пытался использовать эмуляторы из Android Studio. Итак, я включил
Target Architecture->x86 Architecture
(хотя и не рекомендуется) в настройках проигрывателя, и это сработало!
Я столкнулся с этой проблемой при переходе с Android 7(Nougat) на Android 8(Oreo).
Я пробовал несколько способов, перечисленных выше, и, к моему несчастью, ничего не получалось.
Поэтому я изменил файл.apk на файл.zip, извлек его и нашел папку lib, в которой этот файл находился /x86_64/darwin/libscrypt.dylib, поэтому, чтобы удалить это, я добавил код в свой модуль build.gradle ниже раздела Android (т.е.)
packagingOptions {
exclude 'lib/x86_64/darwin/libscrypt.dylib'
exclude 'lib/x86_64/freebsd/libscrypt.so'
exclude 'lib/x86_64/linux/libscrypt.so'
}
Ура проблема решена
Каким-то образом это без причины устраняет проблему.
./gradlew clean assemble
а затем установите приложение.
Довольно поздно, но просто наткнулся на это. Это для Xamarin.Android
, Убедитесь, что вы не пытаетесь отлаживать в режиме выпуска. Я получаю точно такую же ошибку, если в режиме выпуска и пытаюсь отладить. Простое переключение с релиза на отладку позволило моему установить правильно.
Это случилось со мной. Я проверил SDK Manager, и он сказал мне, что у того, который я использовал, было обновление. Я обновил его, и проблема ушла.
Есть простой способ:
- Отключите подключенное устройство
- Закройте Android Studio
- Перезапустите Android Studio
- Подключите устройство с помощью USB-кабеля
- Нажмите кнопку "Выполнить" и отправляйтесь на кофе-брейк