Ответ 1
Откройте диалоговое окно Запуск/отладка конфигурации dialog
изменить Ваше приложение> Общие> Параметры установки> Установить флаги.
добавить флаги установки -r -t
.
Этот флаг означает adb install -r -t apkpath
Я обновил Android-студию до 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 на реальном устройстве. если я удаляю приложение с устройства, а затем повторно запускаю сборку, оно устанавливается только один раз, а затем выдает эту ошибку при следующей установке. Он отлично работает на эмуляторе, но я не могу использовать эмулятор для всего.
Что я пробовал:
Обновление
Я установил Linux Mint на свою машину и протестировал там AS 3.5, по некоторым причинам все работает нормально даже для устройств Android 7 и ниже.
Предыдущая ОС: Windows 10 1903
Текущая ОС: Linux Mint 19.2
Я считаю, что эта проблема, возможно, возникла на компьютерах с Windows.
Откройте диалоговое окно Запуск/отладка конфигурации dialog
изменить Ваше приложение> Общие> Параметры установки> Установить флаги.
добавить флаги установки -r -t
.
Этот флаг означает adb install -r -t apkpath
Эта проблема в Android Studio возникает для устройств ниже API 26
(Android 8). Это вызвано заменой InstantRun
, известного сейчас как ApplyChanges.
Похоже, есть только два пути, прежде чем они исправят это в следующем обновлении.
API>=26
.run configuration
, изменяя deploy
с APK
на App bundle
, и наоборот. Если я правильно понимаю, это приведет к корректной перестройке приложения и устранению ошибки.Конечно, есть возможность вручную удалить приложение с устройства перед запуском приложения из AndroidStudio.
Для меня либо удаление приложения, либо очистка проекта "решают" проблему. Чтобы сделать его менее разочаровывающим, я добавил чистую работу для отладки типа сборки следующим образом:
buildTypes {
...
debug {
clean
}
...
}
Существует проблема с ОС Lineage, заявленная командой Google в https://issuetracker.google.com/issues/139782879:
Мы можем воспроизвести его на устройстве с LineageOS. Он не полностью поддерживает системный вызов, который мы используем для DeltaInstall.
Нет очевидного решения (кроме удаления APK из папки сборки или удаления приложения).
У нас должен быть обходной путь, но в настоящее время LineageOS не будет иметь DeltaInstall и всегда будет нуждаться в более медленной полной установке.
Изменение на Nothing
, как указано OP, не приведет к развертыванию APK на устройстве (поэтому ошибка не будет отображаться), поэтому это не решит проблему.
Изменить:
Это было исправлено в Android Studio 3.6.
Спасибо за ответ. Это должно быть исправлено в последних версиях 3.6.
Я получил решение в изменении конфигурации прогона редактирования кода в Deploy, выберите Default APK и install flag = -r -t, а затем подайте заявку на прогон. Приложение будет работать на всех устройствах и эмуляторе. Я прошел тестирование в OPPO 1 plus, Samsung Tab, Emulator Также.
Пожалуйста, подумайте, Изменить конфигурацию запуска кнопка для запуска в Android Studio
изменить приложение> общие ==> параметры установки ==> установить флаги
добавить флаги установки -r -t
-r означает "заменить существующее приложение". -t означает "разрешить тестовые пакеты"
Вам нужно отключить "Использовать библиотеку libusb" в preferences--> отладчике
Прочитав Примечания к выпуску, касающиеся Применить изменения, я наконец нашел решение здесь: https://developer.android.com/studio/run#apply-changes-run-fallback
Включить запуск отката для применения изменений
После того, как вы нажали либо Применить изменения и перезапустить активность, либо Применить изменения кода, Android Studio создает новый APK и определяет могут ли изменения быть применены. Если изменения не могут быть применены и приведет к сбою Apply Changes, Android Studio предложит вам Вместо этого снова запустите значок приложения "Выполнить". Однако, если вы не хотите быть каждый раз, когда это происходит, вы можете настроить Android Studio на автоматически перезапускать ваше приложение, когда изменения не могут быть применены.
Чтобы включить это, выполните следующие действия:
- Откройте диалоговое окно "Настройки" или "Настройки":
- В Windows или Linux выберите Файл> Настройки в строке меню.
- В macOS выберите Android Studio> Настройки в строке меню.
- Перейдите к разделу Построение, выполнение, развертывание> Развертывание.
- Установите флажки, чтобы включить автоматический запуск отката для любого из действия Применить изменения.
- Нажмите ОК.
У меня тоже такая же проблема после обновления до 3.5. Мне было интересно, если вам повезло с настройкой "Выполнить" для работы с подключенным устройством?
ОБНОВЛЕНИЕ: я должен был заставить это работать, устанавливая "APK из комплекта приложения" под Опциями установки в диалоговом окне "Run/Debug Configurations"
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a','x86_64'
universalApk true
}
}
Из-за различных конструкций, таких как "armeabi", "x86", "armeabi-v7a", "x86_64" и "arm64-v8a", мы должны добавить указанную выше конфигурацию в файл build.gradle.
Наконец-то я нашел решение
просто установите v2SigningEnabled в true
signingConfigs {
release {
v2SigningEnabled true
}
}
Удаление/удаление приложения с устройства устранило проблему для меня.
Я не сталкивался с проблемой сам. Однако ранее у нас были некоторые проблемы с Instant Run в Android Studio. Я хотел бы предложить проверить следующие настройки в Android Studio и снять флажки, чтобы проверить, работает ли ваш код сейчас.
Перейдите к Android Studio -> Preference
, а затем снимите флажок ниже под Deployments
.
Вот что нового в Android Studio 3.5, которая поможет вам лучше понять эту функцию.
Добавьте "чистую" зависимость для задач 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
Попробуйте запустить команду "adb devices", если на выходе ничего нет, то переподключите устройство. Это помогло мне с той же ошибкой. Android studio 3.5 не определяет, что устройство отключено.
Эта ошибка все еще присутствует на моем Mac OS, когда я получаю новое реальное устройство и пытаюсь установить apk из Android Studio 3.5 - и я нахожу безобразный способ, как это исправить - откройте терминал в студии и выполните следующие действия:
cd app/build/outputs/apk/debug
adb install -r -t your_app_name.apk
И это нужно делать с каждым проектом и каждым устройством !!
постскриптум Google, правда???
Отредактировано:
Я в итоге установил
Android Studio 3.6 Canary
Но все же нужно добавить в установку флаги -r -t
Что сработало для меня, чтобы удалить старое приложение, а затем повторно запустить проект. В этом случае старый знак сертификата не беспокоит.
Я также получил эту ошибку, когда я запустил приложение на реальном xiaomi pocophone 1 и решил эту проблему, запустив приложение сначала на эмуляторе, а затем на моем xiaomi pocophone 1
Я удалил приложение из эмулятора, запустил и все вернулось на круги своя
попробуйте поменять андроид: appComponentFactory=""
на android:appComponentFactory="new"
, "new"
могут быть любые слова
Наконец, я получил решение в изменении конфигурации прогона редактирования кода в опции установки DEPLOY--> из выбора 4-й опции → (Ничего) → Применить И приложение работает нормально в Android Studio 3.5. В мобиле и эмуляторе тоже. Это работает должным образом в Android версии 9 также Это постоянное решение.