Android Studio: как автоматически удалить APK (или выполнить команду adb) перед запуском или отладкой?

119

Теперь мне нужно каждый раз удалять приложение перед установкой Run\Debugв Android Studio. Потому что мне нужно воссоздать базу данных перед запуском \ отладкой приложения. Я знаю, что могу запустить команду

adb uninstall [package_name]

в терминале, чтобы очистить файлы под /data/data/[package_name]. Но это не удобный способ, если мне каждый раз приходится выполнять команду. Я надеюсь

adb uninstall

Команда может быть выполнена автоматически, когда я нажимаю Run\Debugкнопку.

Jagger
источник
Он переустановил ваше приложение в начале процесса «Выполнить» / «Отладка», не так ли? Или вы хотите удалить другое приложение?
cck3rry
@ cck3rry Простите, может не очень понятно. Я хочу выполнить команду «adb uninstall», потому что мне нужно воссоздать базу данных перед запуском / отладкой приложения.
Jagger
Почему бы вам не воспользоваться другим подходом и не написать несколько строк кода, который удалит базу данных в onCreate вашего первого Activity? После этого вы можете воссоздать его. Просто не забудьте удалить этот блок перед тем, как отпустить.
mattgmg1990
@ mattgmg1990 Это означает, что мне нужно добавлять / удалять такой код каждый раз, когда я делаю git pull / push. Какая боль ...
Джаггер
1
Этот ответ может быть вам полезен
PavelGP

Ответы:

211
adb uninstall <package_name>

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

  1. В Android Studio щелкните раскрывающийся список слева от кнопки «Выполнить» и выберите «Изменить конфигурации ...».
  2. Щелкните приложение в разделе «Приложение для Android» и на вкладке «Общие» найдите заголовок «Перед запуском».
  3. Нажмите кнопку +, выберите «Запустить внешний инструмент», нажмите кнопку «+» во всплывающем окне.
  4. Дайте какое-нибудь имя (например, adb uninstall) и описание, а затем введите adbProgram: и uninstall <your-package-name>Parameters :. Убедитесь, что новый элемент выбран, когда вы нажимаете ОК во всплывающем окне.

Примечание. Если у вас нет adb в переменной среды PATH, укажите полный путь к adb в поле Program: (например, / home / user / android / sdk / platform-tools / adb).

aravindsagar
источник
2
несколько советов / примечаний: если вы используете более одного эмулятора или устройства, вы захотите включить adb -s <devicename>. Макросы в Android Studio не работают должным образом (v1.50.x), поэтому вам нужно указать полный путь для adb или путь к среде.
Ник
@aravindsagar Я перечислил все пакеты своего устройства, и имени пакета моего приложения там не было, но он все равно показывает Failure [DELETE_FAILED_INTERNAL_ERROR], любая идея, почему это происходит ??
Динеш Пхалвадия
это ведь не избавляет от предустановленных приложений?
CodingOnSteroid
91

пример

adb uninstall com.my.firstapp
Тьяго
источник
5
Если вы не знаете имя пакета, но у вас есть apk, вы можете получить его с помощью этого stackoverflow.com/a/37324607/812915
equiman
1
Если вы посмотрите на контент, я просил «автоматически удалить перед отладкой / запуском в Android Studio». Этот ответ не дал «автоматического» решения. Мы должны быть более ленивыми, правда? :)
Jagger
16

Составьте список пакетов по:

adb shell su 0 pm list packages

Просмотрите, какой пакет вы хотите удалить, и скопируйте оттуда имя пакета. Например:

com.android.calculator2

Наконец, введите:

adb uninstall com.android.calculator2 

и все готово.

Камран Хадер
источник
4
Для пользователей без прав доступа исключите su 0команду list packages.
villecoder 08
12

Я использую Android Studio 2.1.2. У меня было то же требование, что и у OP. Хотя два приведенных выше ответа, похоже, помогли всем, у меня это не сработало. Я делюсь тем, что сработало для меня.

Перейти к main menu/Run/Edit Configuration. Выберите appвнизу Android Applicationслева. Откроется панель с несколькими вкладками. Выберите Generalвкладку (по умолчанию), нажмите зеленую кнопку +внизу (под текстом Before launch: Gradle -awake ...).

Появится раскрывающийся список, выберите Gradle-aware-makeвариант. Появится другое текстовое поле. введите :app:uninstallAllв это текстовое поле. (Вы можете использовать ctrl+, spaceчтобы использовать автозаполнение для определения правильной цели, не вводя всего текста. А также помогает выбрать правильное имя приложения, которое доступно для вас). и поставил apply/ok. Перезапустите ваше приложение.

Примечание. Каждый раз, когда вы запускаете приложение сейчас, эта новая цель будет пытаться удалить ваше приложение с вашего эмулятора или устройства. Поэтому, если ваше тестовое устройство недоступно, ваш Launc, вероятно, не удастся при удалении, но продолжит запуск вашего эмулятора. Итак, либо сначала запустите свой эмулятор, либо повторно запустите его после первого сбоя (поскольку первый запуск запустит эмулятор, хотя удаление не удастся).

Джимми
источник
1
Это нормально работает, но вам нужно заменить appимя вашего фактического модуля, например myMainApp.
Jimbali
1
да, просто используйте ctrl+ spaceво всплывающем окне, чтобы использовать автозаполнение. Он также определяет приложение.
Джимми
11

Если вы хотите удалить при подключении к одному устройству / эмулятору, используйте команду ниже

adb uninstall <package name>

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

adb -s <device ID> uninstall <package name>
summerGhost
источник
4

Я использую подключаемый модуль Android Studio под названием «adb idea» - имеет раскрывающееся меню для различных функций (удаление, удаление, запуск и т. Д.), Которые вы можете настроить на любое подключенное или смоделированное устройство. Можно утверждать, что это уводит меня на шаг от более глубокого понимания силы команд adb, и я, вероятно, согласен ... хотя я действительно работаю на более низком уровне понимания, так что для меня это помогает иметь помощник. Идея АБР введите описание изображения здесь

Джоэл Батлер
источник
3

Простой трехэтапный процесс (проверено на терминале Mac)

  1. Подключите устройство Android (подключите по одному устройству Android за раз), желательно с помощью кабеля и подтвердите соединение с помощью (в нем будет указан идентификатор устройства ID устройства)

    adb devices
  2. Затем, чтобы вывести список всех пакетов приложений на подключенном устройстве, запустив на терминале

    adb shell pm list packages -f -3 
  3. Затем удалите, как описано ранее

    adb uninstall <package_name> 
eaccmk
источник
1

Эта команда с --user 0 выполняет работу:

adb uninstall --user 0 <package_name>
Родольфо Хорхе Немер Ногейра
источник