Эмулятор Android — INSTALL_FAILED_NO_MATCHING_ABIS: не удалось извлечь собственные библиотеки, разрешение = -113

Когда я пытаюсь установить apkфайл через monkeyrunnerскрипт Python, получаю ошибку INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113. Как я могу решить эту проблему?

Детали виртуального устройства перечислены ниже:

  • ЦП/ARM: x86
  • Уровень API: 24
  • Цель: Android 7.0 (Google Play)
Вы пытаетесь установить apk для рук в архитектуру x86 (или x64), в которой отсутствуют библиотеки рук (libhoudini.so и т. д.), поэтому вы получаете сообщение об ошибке.
Итак, как я могу установить эти недостающие библиотеки? @xavier_fakerat

Ответы (1)

Как упоминалось здесь: INSTALL_FAILED_NO_MATCHING_ABIS при установке apk :

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

Чтобы обойти это, вам нужно получить эти библиотеки в формате /system/lib.

Это возможно через использование libhoudini.soбиблиотек. Вы можете рутировать свой эмулятор и проталкивать библиотеки через adb в /system/lib.

Вы можете найти библиотеки здесь , а также даны инструкции.

Как правило, вам нужно сделать следующее:

  • Загрузите сжатый пакет из Интернета и распакуйте его в / system / lib / arm(или в / system / lib64, в зависимости от того, является ли платформа 32-разрядной или 64-разрядной). Ссылка для скачивания библиотек x86 houdini

  • Во-вторых, в каталоге /proc/sys/ fs/ binfmt_miscпод названием «регистрация» в файле, записанном в виде строки строк, чтобы сообщить ядру Linux, все используют исполняемый набор инструкций ARM и динамическую библиотеку ELF. Файл открывается с помощью программы houdini, а все исполняемые файлы набора инструкций ARM64 и ELF-файлы динамической библиотеки открываются с помощью программы houdini64 (в подробном объяснении binfmt_misc вы можете обратиться к Linux, как указать тип программы с помощью конкретной программы) . открыть (через binfmt_misc )

  • Вы можете перемонтировать adb как root и напрямую поместить папку arm (с библиотеками houdini) в /system/libпапку следующим образом:

    adb -e push C:\Users\User25\Desktop\houdini\arm /system/lib

    (Не забудьте указать правильный путь и соответствующие разрешения)

  • Еще один второй вариант, который я пробовал лично, - это получить образ avd с уже включенным родным мостом руки (на случай, если у вас возникнут проблемы с рутированием вашего эмулятора).

  • Предпочтительно получить avd проигрывателя RemixOS или Genymotion и извлечь файлы system.img, userdata.img, ramdisk.imgи другие файлы, такие как и т build.prop. д., и поместить в папку системных изображений вашего эмулятора (например, если загруженные изображения предназначены для x86 avd, скопируйте их в каталог системных изображений вашего эмулятора и вставьте их в папку x86 правильного уровня API - что-то вроде \system-images\android-26\google_apis\x86этого и создайте avd на основе этого (это полезно только для тестирования ваших приложений на вашем x86 avd)

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

Примечание: связанный файл houdini — это просто файл tar, а не .tar.gz (несмотря на название). Используйте "tar xvf file" для распаковки.
Спасибо, я получал эту ошибку, пытаясь установить APK моей мобильной игры Unity на эмуляторе v8.1.1. Я зашел в «Настройки проигрывателя» -> «Проигрыватель» -> развернул «Другие настройки», прокрутил вниз и установил флажок «x86 (Chrome OS)» в разделе «Конфигурация». Единственные изображения, которые я могу загрузить в Android Studio для v8.1.1. являются x86 или x86_64. После сборки APK с установленным флажком установка прошла нормально.
Эта ссылка больше недействительна translate.googleusercontent.com/…