INSTALL_FAILED_NO_MATCHING_ABIS при установке apk


478

Я попытался установить приложение в Android L Preview Intel Atom Virtual Device, оно не удалось с ошибкой:

INSTALL_FAILED_NO_MATCHING_ABIS

Что это значит?


Проверьте эту ссылку для проблемы Android 3.0.1: stackoverflow.com/a/49473570/3400991
Шобхакар Тивари

Ответы:


633

INSTALL_FAILED_NO_MATCHING_ABISэто когда вы пытаетесь установить приложение с собственными библиотеками и без встроенной библиотеки для вашей архитектуры процессора. Например, если вы скомпилировали приложение для armv7 и пытаетесь установить его на эмуляторе, использующем архитектуру Intel, оно не будет работать.


1
@DanielOchoa Это потому, что они хотят сохранить два изображения для предварительного просмотра. Когда L будет официально запущен, я уверен, что будет и образ Intel x86.
Химаншу Шарма

1
Как побороть по этой проблеме. Я использую Genymotion Emulater и устанавливаю gapps, а Genymotion-ARM-Translation_v1.1 все еще получаю эту проблему.
Прашант Махешвари Андро

3
Если у вас есть эта проблема на Genymotion даже при использовании транслятора ARM, это потому, что вы создаете виртуальное устройство x86, такое как Google Nexus 10. Вместо этого выберите виртуальное устройство ARM, как одну из пользовательских таблиц.
inv8enmentnow

1
Любая идея, почему это не будет работать на Nexus 9 под управлением 5.1.1. Отлично работает на планшете Sony Xperia Z2 под управлением 4.4.2. Скомпилировано Sdk 21, мин 17 и цель 22.
Медведь

3
У меня была эта проблема при использовании эмулятора Android Studio для Nexus 5x на моем компьютере с Windows. По соображениям скорости [в 10 раз быстрее] по умолчанию имитируется телефон, как будто он работает с архитектурой Intel x86 [Snapdragon 808 Nexus 5x фактически основан на ARM: tomshardware.com/reviews/lg-g4,4353-2.html ] , Я исправил ошибку, введя диспетчер AVD, выбрав имитирующее устройство, которое сообщало мне ошибку, и нажал кнопку «Изменить», где я установил архитектуру ARM (armeabi-v7a). После этого изменения плюс перезагрузка эмулятора установка прошла без проблем
Антонино

150

INSTALL_FAILED_NO_MATCHING_ABIS - это когда вы пытаетесь установить приложение с собственными библиотеками и без встроенной библиотеки для архитектуры вашего процессора. Например, если вы скомпилировали приложение для armv7 и пытаетесь установить его на эмуляторе, использующем архитектуру Intel, оно не будет работать.

Использование Xamarin в Visual Studio 2015. Исправьте эту проблему следующим образом:

  1. Откройте свой xamarin .sln
  2. Щелкните правой кнопкой мыши ваш проект Android
  3. Нажмите свойства
  4. Нажмите Настройки Android
  5. Нажмите вкладку «Дополнительно»
  6. В разделе «Поддерживаемые архитектуры» сделайте следующее:

    1. armeabi-v7a
    2. x86
  7. спасти

  8. F5 (сборка)

Изменить: Сообщается, что это решение работает и в Visual Studio 2017 .

Редактировать 2: Сообщалось, что это решение работает и в Visual Studio 2017 для Mac .


6
Это решение работало и в Visual Studio 2017, для проекта Xamarin.Android.
corentinaltepe

1
Это также сработало для меня при использовании проекта приложения Android WebView
JRodd

4
Похоже, на Xamarin, каждый новый день появляется новое, неожиданное препятствие, мешающее мне запустить мое приложение (которое работало вчера). Так как мой файл csproj находится в dropbox, я мог проверить историю версий, а вчера этого свойства не было в файле, оно вообще отсутствовало. Сегодня мне пришлось добавить опцию x86, чтобы приложение работало. Почему xamarin или android вдруг используют разные значения по умолчанию? Это так расстраивает! В любом случае, благодаря таким людям, как вы, я могу справиться и продолжить работу. Большое спасибо и +1 для вас!
TMan

2
Хотелось бы, чтобы я проголосовал несколько раз ... Протестировано и работаю над VS 2017 для Mac.
ДжордиВилаплана,

Для Visual Studio Community 2019 для Mac: 1. Щелкните правой кнопкой мыши на своем проекте Android 2. Выберите «Параметры». 3. Выберите «Сборка Android». 4. Дополнительно
ноль,

87

Я отправляю ответ из другой ветки, потому что это то, что у меня хорошо работает, хитрость заключается в том, чтобы добавить поддержку для обеих архитектур:

Публикуя это, потому что я не мог найти прямой ответ, и мне пришлось просмотреть пару разных сообщений, чтобы получить то, что я хотел сделать ...

Я смог использовать эмулятор 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

2
Ошибка [INSTALL_FAILED_NO_MATCHING_ABIS]
abbasalim

Не работает для меня и не может найти (yourapp)-x86-debug.apkфайл в выводе моего проекта.
Eido95

Я не хочу разделять APK, это вариант? @DrissBounouar
ericn

Вы можете использовать универсальный apk, предположительно, он имеет обе архитектуры.
Дрисс Бунуар

все еще сталкиваюсь с той же проблемой
Викаш Параджули

61

Если вы используете Genymotion, вам нужно установить ARM Translation и GApps


В некоторых API, которые вы использовали, вам нужно добавить и «ARM Translation Installer v1.1», и «GApps для вашей версии Android».
saneryee

4
ОБНОВЛЕНИЕ 28 мая 2017: Это руководство больше не поддерживается и, вероятно, не работает. Пожалуйста, не используйте его или обратитесь за поддержкой больше. от xda-developers
AndroidCoolestRulest

1
Вы можете перейти по этой ссылке для установки ARM Translation
Devansh Maurya

37

Это действительно странная ошибка, которая может быть вызвана мультидексированием вашего приложения. Чтобы обойти это, используйте следующий блок в файле build.gradle вашего приложения :

android {
  splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
  }
  ...[rest of your gradle script]

1
Привет. Это сделало мой проект успешным, но все равно выдало мне ту же ошибку. Я работаю на Mac, Genymotion. Кроме того, в общем, эти настройки, которые вы сказали, только для отладочной версии или также для сборки выпуска?
myDoggyWritesCode

@ user3241111 Это можно использовать как для отладки, так и для prod. Вы пытались очистить свой проект. Или, возможно, сделать недействительным / перезапустить Android Studio?
Игорь Ганапольский

1
@ user3241111 Если вы используете gradlew для сборки терминала из командной строки, то вы все равно можете очистить свой проект с помощью gradle.
Игорь Ганапольский

1
Я попробовал это решение, оно сработало. В моем проекте не было APP_ABI. Но я добавил его соответственно, и он собирает только один apk, и он работает. stackoverflow.com/a/35565901/3241111
myDoggyWritesCode

1
Кроме того, я только что добавил включенного демона gradle, и он сильно ускорил процесс ... В любом случае, спасибо за вашу поддержку :)
myDoggyWritesCode

11

Я знаю, что здесь было много ответов, но версия TL; DR такова (если вы используете Xamarin Studio):

  1. Щелкните правой кнопкой мыши проект Android в дереве решений.
  2. Выбрать Options
  3. Перейти к Android Build
  4. Перейти на Advancedвкладку
  5. Проверьте архитектуры, которые вы используете в своем эмуляторе (вероятно, x86/ armeabi-v7a/armeabi )
  6. Сделай офигенное приложение :)

11

Это решение сработало для меня. Попробуйте это, добавьте следующие строки в файл build.gradle вашего приложения

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}

11

На Android 8:

apache.commons.io:2.4

он дает INSTALL_FAILED_NO_MATCHING_ABIS, попробуйте изменить его на 2,5 или 2,6, и он будет работать или комментировать.


6
Большое вам спасибо, вы спасли мой день. Я не знаю, почему я получил: реализация 'org.apache.directory.studio:org.apache.commons.io:2.4'
Пьеррик ХИМБЕРТ,

7

Комментарий @ ent8enmentnow должен быть ответом для решения проблемы с помощью genymotion:

Если у вас есть эта проблема в Genymotion даже при использовании транслятора ARM, это потому, что вы создаете виртуальное устройство x86, такое как Google Nexus 10. Вместо этого выберите виртуальное устройство ARM, как одну из пользовательских таблиц.


1
Я работаю на Mac и, вероятно, это сборка для виртуального устройства x86. Я также пытался использовать пользовательский планшет genymotion, он не работал и
выдает

7

это сработало для меня ... 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
               }
    }
 }

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



6

у меня была эта проблема с использованием библиотеки 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'
    }
}

Спасибо. Это помогло мне с интеграцией Биткойн J
Умер Киани

Большое вам спасибо, я пробую много решений, но это решение работает для меня для меня. Моя проблема для scrypt-1.4.0.jar не устанавливается в Android Pie версия (Nokia 7.1) Устройство
Sagar Pithiya

3

В моем случае в проекте xamarin в Visual Studio ошибку удаляли, выбрав «Свойства» -> «Параметры Android» и отметив «Использовать время совместного использования» и «Быстрое развертывание», в некоторых случаях один из них. введите описание изображения здесь


2

Для genymotion на Mac я получил ошибку INSTALL_FAILED_NO_MATCHING_ABIS при установке моего apk.

В моем проекте не было никакого "APP_ABI", но я добавил его соответственно, и он собрал только один apk для обеих архитектур, но он работал. https://stackoverflow.com/a/35565901/3241111


2

В выпуске Visual Studio Community 2017 иногда не поддерживается выбор поддерживаемых ABI из параметров Android.

В этом случае убедитесь, что .csproj имеет следующую строку и не содержит повторяющихся строк в тех же конфигурациях сборки.

 <AndroidSupportedAbis>armeabi;armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>

Чтобы редактировать,

  1. Разгрузите свой проект Android
  2. Щелкните правой кнопкой мыши и выберите «Редактировать проект» ...
  3. Убедитесь, что у вас есть строка выше только один раз в конфигурации сборки
  4. Сохранить
  5. Щелкните правой кнопкой мыши на вашем проекте Android и перезагрузите

1

В основном, если вы попробовали все выше и по-прежнему у вас та же ошибка «Потому что я тоже сталкивался с этой проблемой раньше», то проверьте, какие .jar или .aar или модуль, который вы добавили, могут быть одной библиотекой, использующей ndk, и которая не поддерживает 8.0 (Oreo) +, также я использую библиотеку сокетов Microsoft SignalR, добавляя свои файлы .jar, и недавно я обнаружил, что приложение не устанавливается в Oreo, а затем я удаляю эту библиотеку, потому что в настоящее время на ее странице git нет решения, и я перехожу к другой. ,

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


1

Я столкнулся с этой проблемой при переходе с 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'
}

Ура проблема решена


1

В общем случае, чтобы узнать, какая зависимость библиотеки имеет несовместимый ABI,

  • построить APK-файл в Android Studio (меню «Сборка»> «Bundle Bundle (s)» / «APK (s)»> «Build APK (s))» // актуально 01.04.2020
  • переименуйте файл APK, заменив расширение «apk» расширением «zip»
  • распаковать zip файл в новую папку
  • перейти в папку libs
  • выясните, какие библиотеки * .jar с несовместимыми ABI существуют

Вы можете попытаться обновить версию / удалить / заменить эти библиотеки, чтобы решить INSTALL_FAILED_NO_MATCHING_ABIS при установке apk


0

Это случилось со мной. Я проверил SDK Manager, и он сказал мне, что у того, который я использовал, было обновление. Я обновил его, и проблема ушла.


0

Довольно поздно, но только столкнулся с этим. Это для Xamarin.Android. Убедитесь, что вы не пытаетесь отлаживать в режиме выпуска. Я получаю ту же самую ошибку, если в режиме выпуска и пытаюсь отладить. Простое переключение с релиза на отладку позволило моему установить правильно.


0

В моем случае мне нужно было скачать версию приложения для x86.

  1. Перейти на https://www.apkmirror.com/
  2. Поиск приложения
  3. Выберите первый в списке
  4. Посмотрите на верхнюю часть страницы, где находится [Название компании]> [Имя приложения]> [Номер версии]
  5. Нажмите на название приложения
  6. Нажмите «Все варианты»
  7. Список должен содержать вариант x86 для загрузки

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.