Не удалось установить APK. Ошибка: не удалось проанализировать строку ошибки

Перетаскивание пакета Android * .APK в AVD (виртуальное устройство Android) вызывает загадочную ошибку:

The APK failed to install.
Error: Could not parse error string
  • Я пробовал AVD с последним API (28) и тот, который соответствует моему собственному телефону (Nougat 7.0)
  • APK - это APK-файл Python Kivy, созданный с помощью buildozer.
  • Я новичок в разработке Android. Я даже не знаю, с чего начать это отладку. Есть журнал получше?
  • Если я загружу APK на AVD через файловый менеджер, и установить его тоже не удастся.
  • ОДНАКО, если я загружу тот же APK на свое настоящее устройство Android, ОНА РАБОТАЕТ! Он не только устанавливается, но и открывает и запускает мое приложение без ошибок.
  • Неизвестные источники разрешены

    (int) Android API для использования

    android.api = 24

    (int) Требуется минимум API

    android.minapi = 24

    (int) Версия Android SDK для использования

    android.sdk = 24

    (str) Версия Android NDK для использования

    android.ndk = 9c

Не удалось установить APK. Ошибка: не удалось проанализировать строку ошибки

Не удалось установить APK. Ошибка: не удалось проанализировать строку ошибки

Я также сталкиваюсь с этой проблемой, но эта проблема связана с недавно обновленными версиями oreo, я предполагаю, что это связано с безопасностью, говоря, что наши приложения не проверены (строка связана с именем нашего пакета, я думаю) и для обеспечения безопасности наших устройств они не устанавливать вручную на устройства Android - показывая угрозу безопасности с помощью Play Protect.

kartar kat 11.08.2018 03:38

Однако я использовал Nougat, разве это не было до Oreo? И я разрешаю Неизвестным источникам

Jonathan 11.08.2018 07:10
62
2
85 753
18

Ответы 18

Можете ли вы проверить минимальную версию SDK для этого приложения? И ваши виртуальные устройства Android версии

Версия AVD должна быть больше или равна минимальной версии SDK приложения.

Если больше, попробуйте включить отладку по USB.

По умолчанию для всех AVD этот параметр установлен на «Разрешено», и это относится как к AVD, так и к моему телефону, я приложил снимок экрана.

Jonathan 10.08.2018 20:25

Добавлены минимумы SDK

Jonathan 10.08.2018 23:12

Выполнение следующих действий, похоже, исправило это:

  • Переход на сборку через виртуальная машина kivy на виртуальном ящике (buildozer поддерживает не все машины сборки)
  • Затем закомментируйте настройки SDK buildozer (возврат к версиям SDK по умолчанию) в buildozer.spec (biuldozer поддерживает не все SDK)

Для меня в образе системы эмулятора Android 9 (API 28) отключение Google Play Protect из приложения Play Store помогло решить проблему, и я смог избавиться от ошибки синтаксического анализа.

To disable Google Play Protect. Open "Play Store" application => tap on Menu button => select "Play Protect" option => Disable the options "Scan device for security threats".

Спасибо. Я злился на то, почему не устанавливается Kivy-Buildozer .apk, и на отсутствие ошибок - никаких причин для такого поведения.

Reaversword 21.03.2019 19:01

Мне удалось решить эту проблему, ПЕРЕИМЕНОВав файл apk и убедившись, что:

  1. не имеет пробелов.
  2. не начинается с номера

Надеюсь, это поможет тебе.

Мне пришлось создать новый apk с более высоким VersionCode, чем текущее установленное приложение.

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

Сделайте это в файле build.gradle (Module: App)

android {
    defaultConfig {
        versionCode 9          <---
        versionName "1.1.0"    
        ...
    }
    ...
}

Другое решение - удалить текущее приложение и установить новый apk.

Это сработало для меня ...

  • Открыть Play Store
  • Перейти в меню
  • Нажмите Play Protect.
  • Отключить сканирование устройства на наличие угроз безопасности

HOWEVER, if I upload this same APK to my actual Android Device, IT WORKS! Not only does it install, but it opens and runs my app just fine with no errors

Это говорит мне, что это может быть связано с тем, что ваше приложение использует собственные библиотеки, которые не соответствуют архитектуре процессора эмулятора (см. Этот вопрос)

Чтобы получить более подробное сообщение об ошибке, установите приложение через терминал:

adb install path_to_your_app/name_of_your_app.apk

Вы можете увидеть это:

adb: failed to install name_of_your_app.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries

да. Я только что обновил эмулятор через sdk manager, и он начал работать нормально

CodeToLife 06.04.2019 14:09

Откройте Android Studio. Инструменты меню, Менеджер SDK, Вкладка Инструменты SDK. Посмотрите на строчку «Эмулятор Android».

Ton 31.07.2019 11:20

У меня работала только установка с помощью команды adb.

Muhammad Shehroz Sajjad 19.05.2021 11:52

Я столкнулся с той же проблемой. Проблема в том, что если такое же приложение уже установлено с та же версия на эмуляторе, то он не получит обновления / установки. он выдаст ту же ошибку, что и вы.

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

  1. Удалите старый APK из эмулятора, а затем перетащите новый APK, он установит приложение

  2. Измените номер версии из файла Build.gradle, как предлагает @ Chuy47, соберите новый APK и установите его.

Надеюсь, поможет.

Проведя довольно долгое время, страдая от этой проблемы, после создания apk с использованием p4a с использованием флага armeabi-v7a, я обнаружил проблему, как указано в ответе @Melquiades, эмулятор по умолчанию использует архитектуру x86, поэтому, конечно, он не будет совместим .

Решение состоит в том, чтобы собрать вам apk для x86, что вы можете сделать, указав его в команде создания p4a с помощью флага архива - --arch=x86. Вы можете увидеть доступные варианты здесь: https://github.com/kivy/python-for-android/blob/master/pythonforandroid/archs.py

Лично при запуске python3crystax ndk с любым флагом, кроме armeabi-v7a, не удалось найти соответствующие двоичные файлы. Запуск с использованием python3 и android ndk также не удался для всех архитектур.

Если вы используете python3 и хотите собрать для всех архитектур, вы можете использовать buildozer. Укажите python3crystax в требованиях к buildozer.spec, свяжите каталог ndk в строке android.ndk_path и укажите выбранную архитектуру в строке

# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86
android.arch = x86

установите python 3.5, следуя этому руководству: https://tecadmin.net/install-python-3-5-on-ubuntu/. Вам может потребоваться перейти на более раннюю или обновленную версию cython, в зависимости от ваших текущих настроек. Обратите внимание, что 0.27 и 0.27.2 не работают с Kivy. Я обнаружил, что у меня работает cython 0.25.2. Вы можете удалить свою предыдущую версию и установить выбранную вами с помощью:

sudo pip3 install -U --force-reinstall cython=0.25.2

Если вы, конечно, работаете на Ubuntu :)

Вот и все. Вам нужно будет создать несколько apks для разных архитектур, изменив опцию arch в вашем buildozer.spec и запустив buildozer android debug для каждой архитектуры. Вы все еще можете выпустить в Play Store, поскольку у Google есть возможность загрузить несколько apks: https://developer.android.com/google/play/publishing/multiple-apks.

Удачи; P

Команды РЕДАКТИРОВАТЬ python-for-android с использованием SDK 20 / API 26 / NDK 15c / Python 3.7 и SDK 20 / API 24 / NDK 14b / Python 3.7 работают. Я лично не тестировал последний, но более подробную информацию можно найти в этом сообщение Python для Android. Протестировав первый, я могу убедиться, что он работает, но не поддерживает sqlite3.

Вы не удалили приложение из эмулятора или ваш apk просто не подписан

*Disclamer - This is to save time , to automatically generate signedApk otherwise you know you can get your signed Apk through ... click on Build-> then GenearateSignedApk

Для меня это тоже было проблемой. Но позже я обнаружил, что мой рабочий код не подписан сертификатом ключа. Вы должны запустить подписанный API, чтобы установить подписанный API.

1. перейти к файлу (Alt-F)

2.Перейти к структуре проекта Смотрите, это поле откроется

  1. Здесь вы нажимаете на модуль и
  2. Нажмите на приложение,
  3. Нажмите SigningCofig
  4. Нажмите на отладку Измените конфигурацию подписи в соответствии с вашим выпущенным API кормить детали

SignedKeyCertificate File Path

password

keyAlis

keyAlias password

Когда удаление приложения из эмулятора не устраняет этого, все, что мне нужно сделать, это стереть данные эмулятора: в AVD Manager щелкните стрелку вниз справа для этого эмулятора и выберите «Wipe Data».

apk не удалось установить ошибка не удалось проанализировать строку ошибки

указанная выше ошибка может быть вызвана тем, что:

  1. Версия SDK эмулятора ниже или выше, чем APK
  2. У вашего apk есть root-проверка, если устройство рутировано, оно не установится

Удачи.

Я решил это вроде;

  1. Загрузил apk на мой сервер.
  2. Откройте путь URL-адреса apk в эмуляторе с помощью Chrome.
  3. Chrome разрешает доступ к неизвестным источникам
  4. И установить

Мое протестированное приложение - это приложение, поддерживающее реакцию.

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

Bilal 02.01.2020 11:39

Насколько я понимаю, у этой проблемы нет четкого или окончательного решения. Я перепробовал все ответы безуспешно. Поскольку это проблема, которую я должен решить; Я так решил. Ответ, которым я поделился, заключается в том, что такие друзья, как я, которые пробуют все ответы, которые не дают успешных результатов, могут решить эту проблему с помощью моего ответа. Я бы хотел, чтобы вы попробовали это, прежде чем судить. Мне жаль. @ Билал

Fatih Mert Doğancan 15.01.2020 18:15

ДЛЯ FLUTTER DEV

Я перешел с Android на Flutter, одна из моих привычек перед выпуском - закидывать apk в эмулятор, чтобы убедиться, что все в порядке. Но с Flutter это не работает. После поиска я обнаружил, что ошибка связана с архитектурой x86, но почему я могу нормально отлаживать на x86, но не могу установить? Ответ: Flutter по-прежнему поддерживает x86 для отладки, но не для выпуска: https://github.com/flutter/flutter/issues/43005

Если вы принудительно собираете флаттер на x86:

build apk -t lib/env/main_stag.dart --flavor stag --target-platform android-arm,android-arm64,android-x64,android-x86

Выкину ошибку:

Could not find io.flutter:x86_release:1.0.0

Чтобы дважды проверить, просто выполните следующие действия:

Шаг 1:

Попробуйте установить приложение через терминал:

adb install app_name.apk

Вы можете увидеть это:

adb: failed to install app_name.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries

Шаг 2:

Перейдите в AVD Manager, проверьте, является ли ваш процессор эмулятора x86.

Шаг 3:

Создайте новый эмулятор с x86_64, чтобы вы могли установить apk и отлаживать с помощью того же эмулятора.

Если вы пытаетесь установить новый файл api, убедитесь, что вам нужно удалить существующее приложение (если оно есть) в эмуляторе. Удаление старого приложения и установка файла приложения сработали для меня

У меня сработало убийство эмулятора Android из диспетчера задач, повторное открытие эмулятора и запуск APK.

очистите память эмулятора и перезапустите эмулятор, он будет работать нормально.

Посмотрев на emulator-5554 неавторизован для устройств adb, я обнаружил, что вы должны использовать Target Google APIs вместо Google Play для эмулятора Android.

Другие вопросы по теме