Android Studio: ¿Cómo desinstalar APK (o ejecutar el comando adb) automáticamente antes de ejecutar o depurar?

119

Ahora necesito desinstalar la aplicación cada vez que Run\Debuglo haga en Android Studio. Porque necesito volver a crear la base de datos antes de ejecutar \ depurar la aplicación. Sé que puedo ejecutar el comando

adb uninstall [package_name]

en la terminal para borrar los archivos debajo /data/data/[package_name]. Pero no es una forma conveniente si tengo que ejecutar el comando cada vez. Espero que

adb uninstall

El comando se puede ejecutar automáticamente cuando hago clic en el Run\Debugbotón.

Jagger
fuente
Reinstaló su aplicación al comienzo del proceso "Ejecutar" / "Depurar", ¿no es así? ¿O quieres desinstalar otra aplicación?
cck3rry
@ cck3rry Lo siento, tal vez no esté muy claro. Quiero ejecutar el comando "desinstalar adb" porque necesito volver a crear la base de datos antes de ejecutar / depurar la aplicación.
Jagger
¿Por qué no adopta un enfoque diferente y escribe algunas líneas de código que eliminarán la base de datos en onCreate de su primera actividad? Luego puede volver a crearlo después de eso. Solo recuerde eliminar este bloque antes de liberarlo.
mattgmg1990
@ mattgmg1990 Eso significa que necesito agregar / eliminar dicho código cada vez que hago git pull / push. Qué dolor ...
Jagger
1
Esta respuesta podría ser útil para usted
PavelGP

Respuestas:

211
adb uninstall <package_name>

se puede utilizar para desinstalar una aplicación a través de su PC. Si desea que esto suceda automáticamente cada vez que inicie su aplicación a través de Android Studio, puede hacer esto:

  1. En Android Studio, haga clic en la lista desplegable a la izquierda del botón Ejecutar y seleccione Editar configuraciones ...
  2. Haga clic en la aplicación en Aplicación de Android y, en la pestaña General, busque el título 'Antes del lanzamiento'
  3. Haga clic en el botón +, seleccione Ejecutar herramienta externa, haga clic en el botón + en la ventana emergente.
  4. Dé un nombre (por ejemplo, desinstalación de adb) y una descripción, y escriba adbPrograma: y uninstall <your-package-name>Parámetros :. Asegúrese de que el nuevo elemento esté seleccionado cuando haga clic en Aceptar en la ventana emergente.

Nota: Si no tiene adb en su variable de entorno PATH, proporcione la ruta completa a adb en el campo Programa: (por ejemplo, / home / user / android / sdk / platform-tools / adb).

aravindsagar
fuente
2
algunos consejos / notas: si está ejecutando más de un emulador o dispositivo, entonces querrá incluir adb -s <devicename>. Las macros en Android Studio no funcionan correctamente (v1.50.x), por lo que debe ingresar la ruta completa para adb o la ruta del entorno.
Nick
@aravindsagar Hice una lista de todos los paquetes de mi dispositivo y el nombre del paquete de mi aplicación no estaba allí, pero todavía muestra Fallo [DELETE_FAILED_INTERNAL_ERROR] ¿Alguna idea de por qué está sucediendo esto?
Dinesh Phalwadiya
91

ejemplo

adb uninstall com.my.firstapp
Thiago
fuente
5
Si no sabe el nombre del paquete, pero tiene la apk, puede obtenerlo con este stackoverflow.com/a/37324607/812915
Equiman
1
Si echas un vistazo al contenido, te estaba preguntando "desinstalar automáticamente antes de depurar / ejecutar en Android Studio". Esta respuesta no dio una solución "automáticamente". Deberíamos ser más vagos, ¿verdad? :)
Jagger
15

Enumere los paquetes por:

adb shell su 0 pm list packages

Revise qué paquete desea desinstalar y copie el nombre del paquete desde allí. Por ejemplo:

com.android.calculator2

Por último, escriba:

adb uninstall com.android.calculator2 

y ya está.

kamran khader
fuente
4
Para las personas no rooteadas, omita su 0del comando list packages.
villecoder
12

Estoy usando Android Studio 2.1.2. Tenía el mismo requisito que OP. Aunque las dos respuestas anteriores parecieron ayudar a todos, no funcionó para mí. Estoy compartiendo lo que funcionó para mí.

Ir a main menu/Run/Edit Configuration. Seleccione appdebajo Android Applicationa la izquierda. Esto debería abrir el panel de múltiples pestañas. Seleccione la Generalpestaña (sería la predeterminada), haga clic en el +canto verde en la parte inferior (debajo del texto Before launch: Gradle -awake ...).

Aparecerá un menú desplegable, seleccione la Gradle-aware-makeopción. Aparecerá otro cuadro de texto. ingrese :app:uninstallAllen este cuadro de texto. (Puede usar ctrl+ spacepara usar la función de autocompletar para determinar el objetivo correcto sin escribir todo. Y también lo ayuda a elegir el nombre correcto de la aplicación que está disponible para usted). y listo apply/ok. Reinicia tu aplicación.

Nota: Cada vez que inicie su aplicación ahora, este nuevo objetivo intentará desinstalar su aplicación de su emulador o dispositivo. Entonces, si su dispositivo de prueba no está disponible, su inicio probablemente fallará durante la desinstalación, pero continuará iniciando su emulador. Entonces, inicie su emulador primero, o vuelva a ejecutarlo después de que falle nuevamente (ya que el primer lanzamiento iniciará el emulador aunque la desinstalación falle).

Palanqueta
fuente
1
Esto funciona bien, pero debe reemplazarlo appcon el nombre de su módulo real, como myMainApp.
Jimbali
1
sí, solo usa ctrl+ spaceen la ventana emergente para usar autocompletar. También determina la aplicación.
Jimmy
11

Si desea desinstalar cuando está conectado a un solo dispositivo / emulador, use el siguiente comando

adb uninstall <package name>

de lo contrario, con varios dispositivos, use el siguiente comando

adb -s <device ID> uninstall <package name>
verano fantasma
fuente
4

Utilizo un complemento de Android Studio llamado "adb idea": tiene un menú desplegable para varias funciones (desinstalar, matar, iniciar, etc.) que puede apuntar a cualquier dispositivo conectado o simulado. Se podría argumentar que me aleja un paso de tener una comprensión más profunda del poder de los comandos adb y probablemente esté de acuerdo ... aunque de todos modos estoy operando a un nivel más bajo de comprensión, por lo que para mí es útil tener un ayudante. Idea de ADB ingrese la descripción de la imagen aquí

Joel Butler
fuente
3

Un proceso simple de tres pasos (verificado en la terminal mac)

  1. Conecte su dispositivo Android (conecte 1 dispositivo Android a la vez), preferiblemente con un cable y confirme la conexión (esto mostrará la ID del dispositivo)

    adb devices
  2. Luego, para enumerar todos los paquetes de aplicaciones en el dispositivo conectado ejecutando, en la terminal

    adb shell pm list packages -f -3 
  3. Luego desinstale como se explicó anteriormente

    adb uninstall <package_name> 
eaccmk
fuente
0

Este comando con --user 0 hace el trabajo:

adb uninstall --user 0 <package_name>
Rodolfo Jorge Nemer Nogueira
fuente