Ошибка INSTALL_FAILED_NO_MATCHING_ABIS появляется при установке APK-файла, когда внутри пакета нет нативных библиотек, совместимых с архитектурой процессора вашего устройства. Проще говоря, приложение собрано под другой тип чипа: например, вы пытаетесь поставить сборку под arm64-v8a на устройство с armeabi-v7a, или наоборот — приложение только под ARM на эмулятор с процессором x86.
Система Android проверяет совместимость ещё на этапе установки и блокирует процесс, поэтому приложение не появляется в списке установленных. Хорошая новость: само устройство и его прошивка здесь ни при чём — проблема решается подбором правильной версии APK или настройкой эмулятора. Ниже разберём, как определить архитектуру своего процессора и что делать в каждом сценарии.
Что означает ошибка no matching ABIs
Аббревиатура ABI расшифровывается как Application Binary Interface — двоичный интерфейс, описывающий, как скомпилированный код приложения взаимодействует с процессором. Многие приложения содержат нативные библиотеки (файлы .so), собранные под конкретную архитектуру, и если нужной сборки в APK нет, установщик выдаёт отказ.
Чаще всего встречаются такие ABI:
- 📱 arm64-v8a — 64-битные ARM-процессоры, стандарт для современных смартфонов;
- 📲 armeabi-v7a — 32-битные ARM-чипы, характерны для старых и бюджетных устройств;
- 💻 x86 и x86_64 — процессоры Intel/AMD, типичны для эмуляторов на ПК и некоторых планшетов.
Сообщение об ошибке может выглядеть по-разному: INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries при установке через ADB или менее информативное «Приложение не установлено» при установке из файлового менеджера. Суть одна — несовпадение архитектур.
Как узнать архитектуру процессора устройства
Первый шаг — выяснить, какой ABI поддерживает ваш смартфон или планшет. Сделать это можно несколькими способами, и все они безопасны.
Самый простой вариант — установить из Google Play любое диагностическое приложение, показывающее информацию о системе, например CPU-Z или AIDA64. В разделе о процессоре будет указана архитектура. Если Google Play недоступен, архитектуру часто можно найти в характеристиках модели на сайте производителя.
Для тех, кто работает через ADB, есть команда, выводящая список поддерживаемых ABI:
adb shell getprop ro.product.cpu.abilist
В ответ устройство вернёт что-то вроде arm64-v8a,armeabi-v7a,armeabi — первое значение в списке является основным (предпочтительным) ABI. Именно под него в первую очередь стоит искать сборку приложения.
Решение 1: скачать APK под нужную архитектуру
Если вы устанавливаете приложение из стороннего источника, проверьте, для какого ABI собран файл. Многие каталоги APK публикуют несколько вариантов одной версии — они помечены как arm64-v8a, armeabi-v7a, x86_64 или universal.
Разметка universal (универсальная сборка) означает, что внутри APK лежат библиотеки сразу под все распространённые архитектуры — такой файл установится практически на любое устройство, но весит заметно больше. Если универсальной сборки нет, выбирайте вариант, совпадающий с ABI вашего устройства, который вы определили на предыдущем шаге.
⚠️ Внимание: скачивайте APK только из источников, которым доверяете. Файлы с непроверенных сайтов могут содержать вредоносный код, и совместимость архитектуры здесь — меньшая из проблем.
- 🔍 Сверьте ABI устройства с пометкой сборки на странице загрузки;
- 📦 При наличии выбора предпочтите universal-сборку, если не уверены;
- 🗑 Удалите старый несовместимый APK, чтобы не перепутать файлы;
- 🔄 Проверьте, нет ли приложения в Google Play — там подбор архитектуры происходит автоматически.
Решение 2: исправить ошибку в эмуляторе
Эмуляторы Android на ПК (BlueStacks, NoxPlayer, LDPlayer, эмулятор из Android Studio) работают на процессорах x86/x86_64. Если приложение собрано только под ARM, эмулятор выдаёт именно ошибку несовпадения ABI. Здесь есть несколько путей.
Во-первых, поищите x86-сборку приложения — некоторые разработчики публикуют её отдельно. Во-вторых, часть эмуляторов имеет встроенный транслятор ARM-кода: проверьте в настройках своего эмулятора пункты вроде поддержки ARM-приложений (название и наличие опции зависят от конкретной программы и её версии). В-третьих, в Android Studio можно создать виртуальное устройство с образом системы под ARM, но такие образы работают заметно медленнее.
Почему эмуляторы не могут просто запускать ARM-приложения
Нативный код ARM выполняется процессором напрямую. Процессор x86 не понимает эти инструкции, поэтому требуется либо сборка под x86, либо программная трансляция команд «на лету», что снижает производительность. Именно поэтому эмуляторы предпочитают x86-образы системы.
Решение 3: разработчикам — сборка под нужные ABI
Если ошибка возникает при установке собственного приложения из Android Studio, причина обычно в конфигурации сборки: в проект не включены нативные библиотеки под ABI целевого устройства. Это актуально для проектов, использующих NDK или сторонние нативные зависимости.
Проверьте блок splits.abi или фильтры ndk.abiFilters в файле build.gradle модуля приложения. Если там явно перечислены архитектуры, убедитесь, что среди них есть ABI тестового устройства. Пример включения нескольких архитектур:
android {
defaultConfig {
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
}
}
}
Также убедитесь, что используемые сторонние библиотеки сами содержат нативные компоненты под нужную архитектуру — иногда ограничение исходит именно от зависимости, а не от вашего кода.
☑️ Диагностика ошибки no matching ABIs
Сводная таблица: причины и решения
| Сценарий | Вероятная причина | Что делать |
|---|---|---|
| Установка APK на смартфон | Сборка под другую архитектуру ARM | Скачать APK под свой ABI или universal |
| Эмулятор на ПК | Приложение только под ARM, эмулятор — x86 | Найти x86-сборку или включить трансляцию ARM |
| Установка через ADB | Нет библиотек под ABI устройства | Проверить abilist устройства и пересобрать/перекачать APK |
| Своё приложение из Android Studio | Ограничения abiFilters или зависимости | Добавить нужные ABI в конфигурацию сборки |
| Очень старое устройство | Приложение требует arm64, чип — 32-битный | Искать legacy-версию приложения под armeabi-v7a |
Когда ошибку решить не получится
⚠️ Внимание: если разработчик выпускает приложение только под arm64-v8a, а ваше устройство имеет 32-битный процессор, никакая настройка не заставит его работать. Программно превратить 32-битный чип в 64-битный невозможно.
В такой ситуации остаются три реалистичных варианта: найти более старую версию приложения, которая ещё собиралась под 32-битные ARM; поискать альтернативное приложение с аналогичной функциональностью; либо использовать веб-версию сервиса в браузере, если она существует. Установка «костылей» вроде модифицированных библиотек из неофициальных источников — рискованный путь, который может нарушить стабильность системы.
Отдельный случай — приложения, отмеченные как несовместимые в Google Play. Там магазин сам фильтрует устройства по ABI, и обход этого ограничения через APK со сторонних сайтов обычно приводит к той же ошибке установки или к вылетам при запуске.
Частые вопросы
Что значит INSTALL_FAILED_NO_MATCHING_ABIS простыми словами?
Приложение содержит код, скомпилированный под другой тип процессора, чем тот, что стоит в вашем устройстве. Система не может выполнить этот код, поэтому отказывает в установке.
Можно ли установить ARM-приложение на эмулятор x86?
Напрямую — нет. Нужны либо x86-сборка приложения, либо эмулятор с функцией трансляции ARM-кода (её наличие зависит от конкретного эмулятора), либо виртуальное устройство с ARM-образом системы в Android Studio.
Установится ли 32-битное приложение на 64-битный смартфон?
Обычно да: большинство 64-битных ARM-процессоров поддерживают выполнение 32-битного кода armeabi-v7a. Обратная комбинация — 64-битное приложение на 32-битном устройстве — работать не будет.
Что такое universal APK и стоит ли его выбирать?
Это сборка, содержащая нативные библиотеки сразу под все распространённые архитектуры. Она устанавливается практически на любое устройство, но занимает больше места. Если сомневаетесь в выборе — берите universal.
Опасна ли эта ошибка для телефона?
Нет. Ошибка возникает до установки, система просто отклоняет несовместимый пакет. Устройство, данные и прошивка при этом не затрагиваются — достаточно подобрать корректную версию APK.