Android Studio:如何在运行或调试之前自动卸载APK(或执行adb命令)?


119

现在,我需要Run\Debug在Android Studio中每次都卸载该应用程序。因为我需要在运行\ debug应用程序之前重新创建数据库。我知道我可以运行命令

adb uninstall [package_name]

在终端中清除下的文件/data/data/[package_name]。但这不是我每次必须执行命令的便捷方法。我希望

adb uninstall

单击Run\Debug按钮可以自动执行命令。


它在“运行” /“调试”过程开始时重新安装了您的应用程序,不是吗?还是您要卸载另一个应用程序?
cck3rry 2014年

@ cck3rry抱歉,可能不是很清楚。我想执行命令“ adb uninstall”,因为在运行/调试应用程序之前,我需要重新创建数据库。
贾格尔

为什么不采用其他方法并编写几行代码,这些代码将删除第一个Activity的onCreate中的数据库?之后,您可以重新创建它。只需记住在释放前删除此块即可。
mattgmg1990 2014年

@ mattgmg1990这意味着我每次执行git pull / push时都需要添加/删除这样的代码。多么痛苦...
Jagger

1
这个答案可能对您有用
PavelGP '16

Answers:


210
adb uninstall <package_name>

可用于通过PC卸载应用。如果希望每次通过Android Studio启动应用程序时自动发生这种情况,可以执行以下操作:

  1. 在Android Studio中,单击“运行”按钮左侧的下拉列表,然后选择“编辑配置...”。
  2. 单击Android应用程序下的应用程序,然后在常规标签中找到标题“启动前”
  3. 单击+按钮,选择“运行外部工具”,然后在弹出窗口中单击+按钮。
  4. 给出一些名称(例如,adb卸载)和描述,然后adb在Program(程序)中和uninstall <your-package-name>Parameters(参数)中键入。当您在弹出窗口中单击“确定”时,请确保选择了新项目。

注意:如果PATH环境变量中没有adb,请在Program:字段中提供adb的完整路径(例如/ home / user / android / sdk / platform-tools / adb)。


2
一些提示/注意事项:如果运行的仿真器或设备不止一个,则将要包含adb -s <devicename>。Android Studio中的宏无法正常运行(v1.50.x),因此您必须输入adb的完整路径或环境路径。
尼克,

@aravindsagar我列出了设备的所有软件包,但我的应用程序的软件包名称不存在,但仍显示失败[DELETE_FAILED_INTERNAL_ERROR]知道为什么会这样吗?
Dinesh Phalwadiya

90

adb uninstall com.my.firstapp

5
如果不知道PAKAGE的名字,但有APK,可以用这个把它stackoverflow.com/a/37324607/812915
equiman

1
如果您查看其中的内容,我会问“在Android Studio中调试/运行之前自动卸载”。这个答案没有给出“自动”的解决方案。我们应该更懒惰吧?:)
Jagger

15

列出软件包:

adb shell su 0 pm list packages

查看您要卸载的软件包,然后从那里复制软件包名称。例如:

com.android.calculator2

最后输入:

adb uninstall com.android.calculator2 

到此为止。


4
对于无根的人,请su 0从list packages命令中省略。
villecoder '18

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
金巴利

1
是的,只需在弹出窗口上使用ctrl+ space即可使用自动完成功能。它也确定了应用程序。
吉米

11

如果要在连接到单个设备/仿真器时进行卸载,请使用以下命令

adb uninstall <package name>

否则有多个设备,然后使用以下命令

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

4

我使用了一个名为“ adb idea”的Android Studio插件-具有一个下拉菜单,其中包含可针对任何已连接或模拟设备的各种功能(卸载,杀死,启动等)。有人可能会说,这使我距离对adb命令的功能有更深入的了解还差了一步,我可能会同意...。尽管我的理解水平确实较低,所以对我来说,这有助于一个帮手。亚行理念 在此处输入图片说明


3

简单的三步过程(在Mac终端上选中)

  1. 连接您的android设备(一次请连接1个android设备),最好使用电缆并通过确认连接(这将列出设备ID设备ID)

    adb devices
  2. 然后通过在终端上运行来列出所连接设备上的所有应用程序包

    adb shell pm list packages -f -3 
  3. 然后如前所述卸载

    adb uninstall <package_name> 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.