Ошибка установки из-за: 'null' - Android Studio 3.5

83

Я обновил Android Studio до версии 3.5, с тех пор как столкнулся с проблемой установки APK. Это единственный журнал, который показывает:

Installation did not succeed.
The application could not be installed: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
Installation failed due to: 'null'
Retry

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

Что я пробовал:

  • Удален файл конфигурации Android Studio.
  • Удалил файлы Gradle из проекта.
  • Аннулированы и сброшены кеши.
  • Почистил / пересобирал проект.
  • Искал похожие проблемы Stackoverflow (ничто не соответствует моей проблеме)
  • Чисто установлен (удалены все файлы, включая SDK) Android Studio 3.5

Обновить

Я установил Linux Mint на свой компьютер и протестировал там AS 3.5, по какой-то причине все работает нормально даже на устройствах с Android 7 и ниже.

Предыдущая ОС: Windows 10 1903

Текущая ОС: Linux Mint 19.2

Я считаю, что эта проблема может исходить от компьютеров Windows.

Taseer
источник
У меня похожая проблема - но для меня это во INSTALL_PARSE_FAILED_NOT_APKвремя тестирования эспрессо
adek111
Я также получаюINSTALL_PARSE_FAILED_NOT_APK
jobevers
У меня такая же проблема.
Santhosh
14
вау, Google, как сделать этот релиз СТАБИЛЬНЫМ ?!
0101100101
Вы проверяли, включен ли Instant Run в вашей Android Studio?
Реаз Муршед

Ответы:

99

Открыть конфигурацию запуска / отладки диалоговое окно « » (Windows: «Выполнить»> «Изменить конфигурации»)

отредактируйте приложение You> Общие> Параметры установки> Установить флаги .

добавить флаги установки -r -t .

Этот флаг означает adb install -r -t apkpath

экранная картинка

胡 晟 昊
источник
2
adb install -r -t apkpathЯ думаю, это означает . @ TaseerAhmad
胡 晟 昊
21
-rозначает «заменить существующее приложение». -tозначает «разрешить тестовые пакеты»
duckbrain
1
Откуда взялся этот человек и как он думал об этом решении? Дайте ему медаль!
0101100101
4
У меня не работает! :( Взгляните на мою проблему.
Арсалан Шах
3
Параметр «Выполнить»> «Изменить конфигурации», если версия для Windows.
Беатрис Лин
17

Вам нужно отключить "Использовать бэкэнд libusb" в настройках -> отладчик введите описание изображения здесь

Хуссен Булла
источник
Помогло только это решение - Xubuntu 18.04
Раскилас
Не могу поверить, что это сработало! Android Studio 3.5.1 Android Debug Bridge версия 1.0.41 Версия 29.0.5-5949299
Кебаб Крабби
1
Работает как шарм. Я
боролся
1
О, МОЙ БОГ! это решило большую большую проблему. Боролся с этой проблемой месяцами .. Вау!
Vivek
1
Исправлено это для меня в OSx 10.15! Спасибо!
Крис Дженкинс
12

Эта проблема в Android Studio возникает на устройствах ниже API 26(Android 8). Это вызвано заменой InstantRun, известной сейчас как ApplyChanges .

Кажется, есть только два способа, прежде чем они исправят это в следующем обновлении.

  1. Беги дальше API>=26.
  2. После каждого изменения кода редактируйте run configurationизменения deployс APKна App bundleи наоборот. Если я правильно понимаю, это позволит правильно восстановить приложение и исправить ошибку.

Конечно, есть возможность вручную удалить приложение с устройства перед запуском приложения из AndroidStudio.

мохакс
источник
1
У меня есть устройство Android 9.0 и эта проблема. Однако, когда я смешиваю тесты между эмулятором и реальным устройством, приложение и тесты запускаются довольно часто. Не знаю, почему, но, возможно, это кому-то поможет.
adek111
Может быть, вы сможете успешно перезапустить приложение, API26+если нажмете Apply changesвместо rerun? Это новая кнопка справа от rerun.
mohax
6

Для меня либо удаление приложения, либо очистка проекта «решают» проблему. Чтобы сделать его менее утомительным, я добавил чистую работу для отладки типа сборки, например:

buildTypes {
    ...
    debug {
        clean
    }
    ...
}
Санчо
источник
4

Прочитав примечания к выпуску, касающиеся применения изменений , я наконец нашел здесь решение: https://developer.android.com/studio/run#apply-changes-run-fallback

Включить резервный запуск для применения изменений

После того, как вы нажали «Применить изменения и перезапустить действие» или «Применить изменения кода», Android Studio создает новый APK и определяет, можно ли применить изменения. Если изменения не могут быть применены и могут привести к сбою применения изменений, Android Studio предложит вам снова запустить значок «Выполнить». Однако, если вы не хотите получать запросы каждый раз, когда это происходит, вы можете настроить Android Studio на автоматический перезапуск вашего приложения, когда изменения не могут быть применены.

Чтобы включить это поведение, выполните следующие действия:

  1. Откройте диалоговое окно настроек или предпочтений:
    • В Windows или Linux выберите Файл> Настройки. в строке меню.
    • В macOS выберите Android Studio> Настройки в строке меню.
  2. Перейдите к Сборке, Выполнению, Развертыванию> Развертывание .
  3. Установите флажки, чтобы включить автоматический откат выполнения для любого из действий «Применить изменения».
  4. Щелкните ОК.

Снимок экрана в Linux

М. Баджа Акша
источник
1
Я сменил ОС на Linux, и там нормально работает AS 3.5.
Тасиир
4

Существует проблема с ОС Lineage, о чем говорит команда Google в https://issuetracker.google.com/issues/139782879 :

Мы можем воспроизвести его на устройстве с LineageOS. Он не полностью поддерживает системный вызов, который мы используем для DeltaInstall.

Нет очевидного решения (кроме удаления APK из папки сборки или удаления приложения).

У нас должен быть обходной путь, но на данный момент LineageOS не будет иметь DeltaInstall и всегда будет нуждаться в более медленной полной установке.

Изменение на, Nothingкак указано OP, не приведет к развертыванию APK на устройстве (поэтому ошибка не будет отображаться), поэтому это не решит проблему.

Редактировать:

Это было исправлено в Android Studio 3.6.

Спасибо за ответ. Это должно быть исправлено в последних версиях 3.6.

Педро Оливейра
источник
4

Build> Clean project - это работа для меня. Перед изменением других настроек сначала попробуйте это.

Удачного кодирования :)

happy_Coding
источник
3

Я получил решение в изменении конфигурации запуска редактирования кода в Deploy, выберите Default APK и установите flag = -r -t, а затем Apply для запуска. Приложение будет работать на всех устройствах и в эмуляторе. Я тестировался в OPPO 1 plus, Samsung Tab, Emulator .

Пожалуйста, идите, подумайте, что редактировать конфигурацию запуска рядом с кнопкой запуска в Android Studio

редактировать приложение> общие ==> параметры установки ==> установить флаги

добавить флаги установки -r -t

-r означает «заменить существующее приложение». -t означает "разрешить тестовые пакеты"

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

Суйог Дорликар
источник
2

У меня тоже такая же проблема после обновления до 3.5. Мне было интересно, повезло ли вам заставить Run работать с подключенным устройством?

ОБНОВЛЕНИЕ: я должен был заставить это работать, установив «APK из пакета приложений» в параметрах установки в диалоговом окне «Запуск / отладка конфигураций».

Chooven
источник
1

Удаление / удаление приложения с устройства устранило проблему для меня.

Алекс Саг
источник
Я удалил приложение из эмулятора API 29, и это помогло.
CoolMind
1

Добавьте " чистую " зависимость задачи Gradle перед установкой / запуском ваших apks, используя конфигурацию ниже.

project.afterEvaluate {
    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def capitalizedVariant = variant.name.capitalize()
            def assembleVariantTask = project.tasks."assemble${capitalizedVariant}"
            assembleVariantTask.dependsOn clean
        }
    }
}

Скопируйте и вставьте приведенный выше код в свой app/build.gradleфайл, это работает для всех вариантов сборки.

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

assembleDebug.dependsOn clean
assembleRelease.dependsOn clean
Shizhen
источник
1

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

Азамат Махкамов
источник
1

Я также получил эту ошибку, когда запустил приложение на реальном xiaomi pocophone 1 и решил эту проблему, запустив приложение сначала на эмуляторе, а затем на моем xiaomi pocophone 1

ch13mob
источник
1
splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a','x86_64'
        universalApk true
    }
}

Из-за различных конструкций, таких как armeabi, x86, armeabi-v7a, x86_64 и arm64-v8a, мы должны добавить приведенную выше конфигурацию в файл build.gradle.

user9973657
источник
0

Наконец-то я нашел решение

просто установите v2SigningEnabled true

 signingConfigs {
    release {
        v2SigningEnabled true
    }
}
Йефэн
источник
0

Сам с проблемой не сталкивался. Однако раньше у нас были проблемы с мгновенным запуском Android Studio. Я хотел бы предложить проверить следующие настройки в вашей Android Studio и снять флажок, чтобы проверить, работает ли ваш код сейчас.

Перейдите к, Android Studio -> Preferenceа затем снимите отметку со следующего под Deployments.

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

Вот что нового в Android Studio 3.5 относительно этого, что поможет вам лучше понять эту функцию.

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

Реаз Муршед
источник
0

Попробуйте запустить команду "adb devices", если на выходе пусто, то переподключите устройство. Это помогло мне с той же ошибкой. Android studio 3.5 не определяет, что устройство отключено.

Борис Тимофеев
источник
0

Я удалил приложение из эмулятора, запустил и все вернулось в норму

Воз
источник
0

Для меня minSdkVer = 22, tarSdkVer = 28запустить Gradle -> app -> Tasks -> build -> clean && cleanBuildCacheдействие, проблема решена.

Шанксискул
источник
0

Я нажал значок молотка, чтобы восстановить приложение, после чего оно установилось. Так я не знаю? Вся платформа для взлома Android - отстой.

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

dcarl661
источник
0

Я также столкнулся с той же проблемой, я выполнил следующие шаги 1) Очистить проект 2) Восстановить проект

Это решило мою проблему

Вивек
источник
0

В моем случае я не могу решить все вышеперечисленные ответы, поэтому я нашел другой способ. Наконец, я нашел решение. Просто найдите правильные драйверы телефона. Мой телефон для разработки - Samsung Galaxy Note 2 (МОДЕЛЬ: GT-N7105 / Android 4.1.2) . Я просто делюсь своим решением, как я это решил. Надеюсь сэкономить ваше время.

BM
источник
0

Проблема возникает, когда вы тестируете новый модуль. Сначала вы пишете его индивидуально, а затем добавляете в основное приложение. Когда вы добавляете его в основное приложение, удалите «test_app» со своего телефона.

Станислав Гордеев
источник
0

Выполнить -> Изменить конфигурацию -> флаги установки: -r -t -> Применить -> ОК

Савита Шарма
источник
0

В моем случае это работает только при отключении проверки подписи APK:

$ adb shell settings put global verifier_verify_adb_installs 0

И используя -r -tупомянутые выше флаги

lgallard
источник
0

Эта ошибка все еще есть на моей Mac OS, когда я получаю новое реальное устройство и пытаюсь установить apk из Android Studio 3.5 - и я нахожу уродливый способ исправить - откройте терминал в студии и следуйте:

cd app/build/outputs/apk/debug
adb install -r -t your_app_name.apk

И это нужно делать с каждым проектом и каждым устройством !!

Отредактировано:

В конце концов я установил

Android Studio 3.6 Canary

  • это более рабочая версия чем 3.5

Но все же нужно добавить в установочные флаги -r -t

Николас Асинович
источник
Остается дождаться «стабильной» версии 3.6.
Тасиир
0

У меня возникла эта проблема несколько минут назад, когда я попытался запустить свое приложение на реальном устройстве и остановил сборку gradle до ее завершения. Я только что удалил приложение на устройстве и перезапустил приложение как на AVD, так и на реальном устройстве (одновременно), и это сработало. Надеюсь, это сработает и для вас

Richierich
источник
0

Основное решение

  1. Файл -> Настройки -> Сборка, выполнение, развертывание -> Отладчик > ОтключитьUse libusb backend

  2. Gradle (Flap справа от IDE) -> android -> app -> Tasks -> install -> uninstallAll, или вы также можете сделать это с консоли следующим образом:

    $ ./gradlew uninstallAll



Другие советы:

  • Удалите и снова создайте приложение в Run / Debug Configuration

    • Параметры установки -> Проверить установку для всех пользователей
  • Конфигурация запуска / отладки -> Параметры запуска> Запуск: указанное действие> Выбрать действие

  • Установите приложение, используя другое физическое устройство, версию IDE или ПК

  • Переустановите IDE и удалите .android

  • Повторите попытку с основным решением


Если вы хотите установить и открыть приложение, вы можете использовать adb со следующими командами:

$ adb install -r -t absolute-path.apk

$ adb shell am start -n "com.package.flavor.env/.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

GL

Источник

Брайан Коронел
источник
-1

попробуйте сменить android: appComponentFactory=""на android:appComponentFactory="new", "new"можно любые слова

sh_ZJ
источник
-2

Наконец, я получил решение в изменении конфигурации запуска редактирования кода в параметре установки DEPLOY -> из выбора 4-го варианта -> (Ничего) вариант -> Применить. И приложение работает правильно в Android Studio 3.5. В мобильном телефоне и в эмуляторе тоже. Это работает правильно и в версии Android 9. Это постоянное решение.

Суйог Дорликар
источник