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

212

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

adb uninstall [package_name]

在终端中清除/data/data/[package_name]下的文件。但是如果我每次都要执行命令,这不是一种方便的方式。我希望

adb uninstall

当我点击 运行/调试 按钮时,命令可以自动执行。


它在“运行”/“调试”过程的开始重新安装了您的应用程序,是吗?还是您的意思是卸载另一个应用程序? - cck3rry
@cck3rry 抱歉,可能我的表述不太清楚。我想执行命令“adb uninstall”,因为在运行/调试应用程序之前,我需要重新创建数据库。 - Jagger
为什么不采用另一种方法,在第一个Activity的onCreate中编写几行代码来删除数据库呢?然后再重新创建它。只需记得在发布之前删除此块即可。 - mattgmg1990
@mattgmg1990 这意味着每次进行 git pull/ push 时我都需要添加/删除这样的代码。真是太麻烦了... - Jagger
1
这个答案可能对你有用。 - PavelGP
显示剩余2条评论
12个回答

309
adb uninstall <package_name>
可以通过电脑卸载应用程序。如果你希望每次通过Android Studio启动应用程序时自动执行此操作,可以按照以下步骤操作:
  1. 在Android Studio中,单击运行按钮左侧的下拉列表,选择“编辑配置...”
  2. 在Android应用程序下,单击应用程序,在常规选项卡下找到“启动之前”的标题。
  3. 单击+按钮,选择运行外部工具,在弹出窗口中单击+按钮。
  4. 输入一些名称(例如adb uninstall)和描述,并在程序中键入 adb ,并在参数中键入 uninstall <your-package-name> 。 确保在弹出窗口中单击OK时选择新项目。

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


2
一些提示/注意事项:如果您正在运行多个模拟器或设备,则需要包含adb -s <devicename>。 Android Studio中的宏无法正常工作(v1.50.x),因此您必须输入adb的完整路径或将其放在环境路径中。 - Nick
@aravindsagar,我列出了我的设备上的所有软件包,但我的应用程序的软件包名称并不在其中,但仍然显示“失败[DELETE_FAILED_INTERNAL_ERROR]”,你有任何想法为什么会发生这种情况吗? - Dinesh Falwadiya
这不会删除预安装的应用程序,对吧? - abhimanyuaryan

109

例子

adb uninstall com.my.firstapp

6
如果不知道包名,但有apk文件,可以使用这个方法获取它:https://dev59.com/CW015IYBdhLWcg3w9wp1#37324607 - equiman

41

使用 --user 0 参数可以完成该任务:

adb uninstall --user 0 <package_name>

这对我有用,我使用了这个命令卸载了不需要的应用程序,谢谢伙计! - HackRx
这对我有效。谢谢。你可以使用adb shell pm list packages | find "netflix"来搜索任何应用,然后按照给定的方式卸载。 - undefined

30

按以下方式列出软件包:

adb shell su 0 pm list packages

检查您想要卸载的软件包,并从其中复制软件包名称。例如:

com.android.calculator2

最后输入:

adb uninstall com.android.calculator2 

完成了。


9
对于未获取 root 权限的用户,请从列出的 packages 命令中省略 su 0 - villecoder
2
如果您安装了很多应用程序,可以在上述命令的末尾添加“| grep -i <部分包名称>”来帮助缩小列表。例如,要查找Google Maps包,可以使用“adb shell pm list packages | grep -i map”。 - hBrent

25

如果您想在连接到单个设备/模拟器时卸载,请使用下面的命令

adb uninstall <package name>

如果使用多个设备,那么请使用以下命令

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

12

我使用的是Android Studio 2.1.2。我有与 OP 相同的要求。虽然前面两个答案对每个人都有帮助,但对我并没有起作用。这是我分享的解决方法。

进入主菜单/运行/编辑配置。在左侧选择Android应用程序下app。这将打开多标签窗格。选择常规选项卡(默认情况下),在底部点击绿色的+符号(在启动前:Gradle -awake ...文本下方)。

一个下拉菜单将出现,选择Gradle-aware-make选项。另一个文本框将弹出。在此文本框中输入:app:uninstallAll。(您可以使用ctrl+space来自动完成以确定正确的目标而无需键入所有内容。还可帮助您选择适合您的正确应用程序名称)。然后设置应用/确定。重新启动您的应用程序。

注意:现在每次启动应用程序时,此新目标都会尝试从仿真器或设备中卸载您的应用程序。因此,如果您的测试设备不可用,则启动可能会失败,而卸载仍将继续开始您的仿真器。因此,请先启动仿真器,或者在第一次失败后再次重新启动(因为第一次启动将启动仿真器,尽管卸载失败)。


1
这个很好用,但你需要将 app 替换为你实际模块的名称,例如 myMainApp - Jimbali
1
是的,只需在弹出窗口上使用“ctrl”+“space”即可使用自动完成。它还确定了应用程序。 - Jimmy

11

若您是Windows用户,可以使用以下命令列出设备中已安装的软件包:

adb shell pm list packages

接着,您可以通过以下命令完全卸载一个软件包:

adb uninstall com.example.myapp


9

补充一下,如果您可以通过以下方式列出并使用grep:

$ adb shell pm list packages | grep -i <some_idea>

如果你有一定的想法,可以通过这个命令来查看应用程序的名称。

例如:

$ adb shell pm list packages | grep -i cal

包:com.android.providers.calendar

包:com.google.android.calendar

然后您可以继续进行:

$ adb uninstall <package_name>

7
我使用一个名为“adb idea”的Android Studio插件--它有一个下拉菜单,可以针对任何连接或模拟设备选择各种功能(卸载、关闭、启动等)。有人可能会认为它让我远离深入理解adb命令的能力,而我可能会同意……不过对于我来说,我本来就在较低层次上操作,所以有这样一个助手对我很有帮助。ADB IdeaADB Ideaenter image description here

1
有一个直接卸载的插件: https://plugins.jetbrains.com/plugin/7326-adb-uninstall - Ibrahim.H

3
一个简单的三步流程 (在Mac终端上检查)
  1. Connect your android device (please connect 1 android Device at a time), preferably by a cable & Confirm connection by (this will list Device's ID device ID)

    adb devices
    
  2. Then to list all app packages on the connected device by running, on terminal

    adb shell pm list packages -f -3 
    
  3. Then uninstall as explained earlier

    adb uninstall <package_name> 
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接