Установка не удалась из-за: 'null' - Android Studio 3.5
Я обновил 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 на реальное устройство. Если я удаляю приложение с устройства, а затем повторно запускаю сборку, оно устанавливается только один раз, а затем выдает эту ошибку при следующей установке. Он отлично работает на эмуляторе, но я не могу использовать эмулятор для всего.
Что я пробовал:
- Удален файл конфигурации Android Studio.
- Удаленные файлы Gradle из проекта.
- Недействительные и сброс кешей.
- Очищен / перестроен проект.
- Искал похожие проблемы Stackru(ничего не соответствует моей проблеме)
- Очистить установлен (удалены все файлы, включая SDK) Android Studio 3.5
Обновить
Я установил Linux Mint на свою машину и протестировал там AS 3.5, по некоторым причинам все работает нормально даже на устройствах Android 7 и ниже.
Предыдущая ОС: Windows 10 1903
Текущая ОС: Linux Mint 19.2
Я считаю, что эта проблема, возможно, возникла на компьютерах с Windows.
33 ответа
Открыть диалоговое окно " Запуск / отладка"
отредактируйте приложение You> Общие> Параметры установки> Установить флаги.
добавить флаги установки -r -t
.
Этот флаг означает adbinstall-r -t apkpath
Эта проблема в Android Studio возникает для устройств ниже API 26
(Android 8). Это вызвано заменой InstantRun
, известный сейчас как ApplyChanges.
Кажется, есть только два пути, прежде чем они исправят это в следующем обновлении.
- Запускать на
API>=26
, - После каждого изменения в редактировании кода
run configuration
измененияdeploy
изAPK
вApp bundle
и наоборот. Если я правильно понимаю, это правильно перестроит приложение и исправит ошибку.
Конечно, есть возможность вручную удалить приложение с устройства перед запуском приложения из AndroidStudio.
Build > Clean project - это работа для меня. Перед изменением других настроек сначала попробуйте это.
Удачного кодирования:)
Для меня либо удаление приложения, либо очистка проекта "решают" проблему. Чтобы сделать его менее расстраивающим, я добавил чистую работу для отладки типа сборки следующим образом:
buildTypes {
...
debug {
clean
}
...
}
Прочитав примечания к выпуску, касающиеся применения изменений, я наконец нашел решение здесь: https://developer.android.com/studio/run
Включить запуск отката для применения изменений
После того, как вы нажали "Применить изменения и перезапустить активность" или "Применить изменения кода", Android Studio создает новый APK и определяет, можно ли применить изменения. Если изменения не могут быть применены и приведут к сбою "Применить изменения", Android Studio предложит вам снова запустить значок "Выполнить" и запустить приложение. Однако, если вы не хотите, чтобы каждый раз, когда это происходит, вам предлагали получать подсказки, вы можете настроить Android Studio на автоматический перезапуск приложения, когда изменения не могут быть применены.
Чтобы включить это поведение, выполните следующие действия.
- Откройте диалоговое окно "Настройки" или "Настройки":
- В Windows или Linux выберите Файл> Настройки в строке меню.
- В macOS выберите Android Studio > Настройки в строке меню.
- Перейдите, чтобы Построить, Выполнение, Развертывание> Развертывание.
- Установите флажки, чтобы включить автоматический запуск отката для любого из действий Применить изменения.
- Нажмите ОК.
Существует проблема с ОС Lineage, о чем говорит команда Google в https://issuetracker.google.com/issues/139782879:
Мы можем воспроизвести его на устройстве с LineageOS. Он не полностью поддерживает системный вызов, который мы используем для DeltaInstall.
Нет очевидного решения (кроме удаления APK из папки сборки или удаления приложения).
У нас должен быть обходной путь для этого, но в настоящее время LineageOS не будет иметь DeltaInstall и всегда будет нуждаться в более медленной полной установке.
Переход на Nothing
как указано OP, не будет развертывать APK на устройстве (поэтому ошибка не будет отображаться), поэтому это не решит проблему.
Редактировать:
Это было исправлено в Android Studio 3.6.
Спасибо за ответ. Это должно быть исправлено в последних версиях 3.6.
1-чистый проект из Build -> CleanProject
2-удалить выходы папки из ProjectPath / app / build / output
3-затем создайте gradle и запустите приложение
Я получил решение в изменении конфигурации запуска редактирования кода в Deploy, выберите Default APK и установите flag =-r -t, а затем Apply для запуска. Приложение будет работать на всех устройствах и в эмуляторе. Я тестировал OPPO 1 plus, Samsung Tab, Emulator.
Пожалуйста, подумайте, что конфигурация Edit Run рядом с кнопкой запуска в Android Studio
редактировать приложение> общие ==> параметры установки ==> установить флаги
добавить флаги установки -r -t
-r означает "заменить существующее приложение". -t означает "разрешить тестовые пакеты"
Я получил это, потому что устройство было заблокировано и требовало, чтобы пользователь принял разрешения для его установки. (ОС Huawei Harmony)
Разблокировка телефона для подготовки к процессу установки решила проблему.
Я также получил эту ошибку, когда запустил приложение на реальном xiaomi pocophone 1 и решил эту проблему, запустив приложение сначала на эмуляторе, а затем на моем xiaomi pocophone 1
Если ваше приложение предназначено для Android 12 или более поздней версии, вы должны объявить эти теги атрибуции в файле манифеста вашего приложения. Если компонент приложения включает категорию LAUNCHER, задайте для android:exported значение true.
<activity
android:name="com.test.activity.SplashActivity"
android:clearTaskOnLaunch="true"
android:label="@string/app_name"
android:launchMode="singleTop"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:exported="true">
Также проверьте приемник или службу в Androidmanifest, если вы используете какой-либо приемник или службу, установленную android:exported="true" или false в соответствии с требованиями.
<receiver
android:name="com.test.receiver.ShareReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.test.fcm.android.action.broadcast" />
</intent-filter>
</receiver>
<service
android:name="com.google.android.gms.tagmanager.InstallReferrerService"
android:exported="true" />
Также обновите всю свою зависимость gradle. Я обновил следующую зависимость в соответствии с требованием.
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
implementation 'com.razorpay:checkout:1.6.15'
Надеюсь, это поможет и вам.
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a','x86_64'
universalApk true
}
}
Из-за различных конструкций, таких как armeabi, x86, armeabi-v7a, x86_64 и arm64-v8a, мы должны добавить приведенную выше конфигурацию в файл build.gradle.
Для меня я добавил случайно новые
BlankActivity
который унаследован от
Носимая активность
. Затем я удалил код активности и файл макета. Но я забыл удалить связанный тег в приложении
Manifest.xml
файл. Это основная проблема для таких, как я.
Что помогло мне удалить старое приложение, а затем перезапустить проект. В таком случае старый знаковый сертификат не беспокоит.
Добавьте "чистую" зависимость задачи 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
Удаление / удаление приложения с устройства устранило проблему для меня.
Для меня minSdkVer = 22, tarSdkVer = 28
,бегать Gradle -> app -> Tasks -> build -> clean && cleanBuildCache
действие, проблема решена.
В моем случае я не могу решить все вышеперечисленные ответы, поэтому я нашел другой способ. Наконец, я нашел решение. Просто найдите правильные драйверы телефона. Мой телефон для разработки - Samsung Galaxy Note 2 (МОДЕЛЬ: GT-N7105 / Android 4.1.2). Я просто делюсь своим решением, как я это решил. Надеюсь сэкономить ваше время.
Я также столкнулся с той же проблемой, я выполнил следующие шаги 1) Очистить проект 2) Восстановить проект
Это решило мою проблему
У меня возникла эта проблема несколько минут назад, когда я попытался запустить свое приложение на реальном устройстве и остановил сборку gradle до ее завершения. Я только что удалил приложение на устройстве и перезапустил его как на AVD, так и на реальном устройстве (одновременно), и это сработало. Надеюсь, это сработает и для вас
Наконец-то я нашел решение
просто установите v2SigningEnabled true
signingConfigs {
release {
v2SigningEnabled true
}
}
Эта ошибка все еще есть на моей Mac OS, когда я получаю новое реальное устройство и пытаюсь установить apk из Android Studio 3.5 - и я нахожу уродливый способ исправить - откройте терминал в студии и следуйте:
cd app/build/outputs/apk/debug
adb install -r -t your_app_name.apk
И это нужно делать с каждым проектом и каждым устройством!!
ps гугл, реально???
Отредактировано:
В конце концов я установил
Android Studio 3.6 Canary
- это более рабочая версия чем 3.5
Но все же нужно добавить в установку флаги -r -t
Выполнить -> Изменить конфигурацию -> флаги установки: -r -t -> Применить -> ОК
Проблема возникает, когда вы тестируете новый модуль. Сначала вы пишете его индивидуально, а затем добавляете в основное приложение. Когда вы добавляете его в основное приложение, удалите "test_app" со своего телефона.
Я нажал значок молотка, чтобы восстановить приложение, после чего оно установилось. Так я не знаю? Вся платформа для взлома Android - отстой.
На все эти деньги Google не может нанять или найти программистов, достаточно хороших, чтобы придумать свою собственную настоящую операционную систему.
Я удалил приложение из эмулятора, запустил и все вернулось в норму
Основное решение
- Удалите и снова создайте приложение в Run/Debug Configuration
- Параметры установки -> Проверить установку для всех пользователей
- Файл -> Настройки -> Сборка, выполнение, развертывание -> Отладчик > Отключить
Use libusb backend
Подсказки:
- Конфигурация запуска / отладки -> Параметры запуска> Запуск: указанное действие> Выбрать действие
- Установите приложение, используя другое физическое устройство, версию 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
Для меня проблема началась, когда я создал новое пустое действие, а студия Android по какой-то причине создала действие Wearable. Как только я удалил все упоминания о носимых устройствах из манифеста и удалил класс, все вернулось к норме.
В моем случае это работает только при отключении проверки подписи APK:
$ adb shell settings put global verifier_verify_adb_installs 0```
And using the -r -t flags mentioned above