Android Studio: Як автоматично видалити APK (або виконати команду adb) перед запуском чи налагодженням?


119

Тепер мені потрібно видаляти додаток кожен раз перед Run\Debugцим в Android Studio. Тому що мені потрібно заново створити базу даних, перш ніж запустити \ налагодити додаток. Я знаю, що можу запустити команду

adb uninstall [package_name]

в терміналі для очищення файлів під /data/data/[package_name]. Але це не зручний спосіб, якщо мені доведеться щоразу виконувати команду. Я сподіваюся, що

adb uninstall

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


Він перевстановив ваш додаток на початку процесу "Запустити" / "Налагодити", чи не так? Або ви хочете видалити інший додаток?
cck3rry

@ cck3rry Вибачте, можливо, це не дуже зрозуміло. Я хочу виконати команду "adb uninstall", оскільки мені потрібно заново створити базу даних, перш ніж запустити / налагодити додаток.
Джаггер

Чому б вам не застосувати інший підхід і не написати кілька рядків коду, які видалять базу даних в onCreate вашої першої діяльності? Потім ви можете відтворити його після цього. Просто не забудьте видалити цей блок перед випуском.
mattgmg1990,

@ mattgmg1990 Це означає, що мені потрібно додавати / видаляти такий код кожен раз, коли я роблю git pull / push. Який біль ...
Джаггер

1
Ця відповідь може бути корисною для вас
PavelGP

Відповіді:


211
adb uninstall <package_name>

можна використовувати для видалення програми через ПК. Якщо ви хочете, щоб це відбувалося автоматично щоразу, коли ви запускаєте додаток через Android Studio, ви можете зробити це:

  1. В Android Studio клацніть на спадному списку зліва від кнопки Виконати і виберіть Редагувати конфігурації ...
  2. Натисніть додаток у додатку Android, а на вкладці Загальні знайдіть заголовок "Перед запуском"
  3. Клацніть кнопку +, виберіть Запустити зовнішній інструмент, у спливаючому вікні натисніть кнопку +.
  4. Укажіть ім’я (наприклад, видалення adb) та опис та введіть adbу програмі: та uninstall <your-package-name>в параметрах:. Переконайтесь, що новий елемент обраний, коли у спливаючому вікні натисніть Ок.

Примітка: Якщо у вашій змінній середовища PATH немає adb, введіть повний шлях до adb у поле Program: (наприклад, / home / user / android / sdk / platform-tools / adb).


2
кілька порад / зауважень: якщо ви працюєте з кількома емуляторами або пристроями, вам потрібно включити adb -s <ім'я пристрою>. Макроси в Android Studio не працюють належним чином (v1.50.x), тому вам доведеться прокласти повний шлях для adb або шляху оточення.
Нік

@aravindsagar Я перерахував усі пакети свого пристрою, а назва пакету мого додатка там не було, але все ще він показує Failure [DELETE_FAILED_INTERNAL_ERROR] будь-яку ідею, чому це відбувається ??
Дінеш Фальвадія

91

приклад

adb uninstall com.my.firstapp

5
Якщо не знаєте Pakage ім'я, але мають APK, може отримати його з цим stackoverflow.com/a/37324607/812915
equiman

1
Якщо ви подивитесь на вміст, я запитав "автоматично видалити перед налагодженням / запустити в Android Studio". Ця відповідь не дала "автоматично" рішення. Ми повинні бути лінішими, правда? :)
Джаггер

15

Перерахуйте пакунки за:

adb shell su 0 pm list packages

Перегляньте, який пакет ви хочете видалити та скопіюйте звідти ім'я пакета. Наприклад:

com.android.calculator2

Нарешті введіть:

adb uninstall com.android.calculator2 

і ви закінчили.


4
Для не вкорінених людей опустіть su 0команду зі списку пакетів.
villecoder

12

Я використовую Android Studio 2.1.2. У мене була така ж вимога, як і в ОП. Хоча вище два відповіді, здавалося, допомагають усім, для мене це не спрацювало. Я ділюсь тим, що працювало на мене.

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

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

Примітка. Кожен раз, коли ви запускаєте додаток зараз, ця нова ціль намагатиметься видалити додаток із емулятора чи пристрою. Тож якщо ваш тестувальний пристрій недоступний, запуск під час видалення, ймовірно, не вдасться, але продовжить запускати емулятор. Отже, спочатку запустіть емулятор, або повторно запустіть після першого відмови (як перший запуск запустить емулятор, хоча видалення не вдасться).


1
Це прекрасно працює, але вам потрібно замінити appім'я фактичного модуля, наприклад myMainApp.
Jimbali

1
Так, просто використовуйте ctrl+ spaceу спливаючому вікні, щоб використовувати автозаповнення. Це визначає і додаток.
Джиммі

11

Якщо ви хочете видалити при підключенні до одного пристрою / емулятора, тоді використовуйте команду нижче

adb uninstall <package name>

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

adb -s <device ID> uninstall <package name>

4

Я використовую плагін Android Studio під назвою "adb idea" - має спадне меню для різних функцій (Uninstall, Kill, Start тощо), на які можна націлити будь-який підключений або модельований пристрій. Можна стверджувати, що це відводить мене на крок від глибшого розуміння сили команд adb, і я, мабуть, погоджуюся .... хоча я дійсно працюю на нижчому рівні розуміння так чи інакше, для мене це допомагає мати помічник. Ідея ADB введіть тут опис зображення


3

Простий тришаговий процес (перевіряється на mac-терміналі)

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

    adb devices
  2. Потім перерахуйте всі пакети програм на підключеному пристрої, запустивши його, на терміналі

    adb shell pm list packages -f -3 
  3. Потім видаліть, як було пояснено раніше

    adb uninstall <package_name> 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.