通过adb命令安装卸载apk

这篇博客详细介绍了如何通过adb命令在Android设备上安装和卸载apk应用。安装部分包括正常安装、覆盖安装、测试安装等不同选项,而卸载部分则涉及直接卸载、获取root权限卸载以及shell卸载的步骤,提供了完整流程和相关adb命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        在 Android 开发过程中,通过 ADB (Android Debug Bridge) 命令可以很方便地在 Android 设备上安装和卸载 APK 文件。 

一、安装apk:

1、正常安装APK

adb install xxxx.apk

2、覆盖安装APK

adb install -r xxxx.apk

        -r 或 --replace,允许替换已存在的应用。即设置上已经存在该应用,这时如果安装就需要覆盖安装。

3、安装测试APK

adb install -t xxxx.apk

        -t 或 --test-only,安装为测试应用。 很多时候开发人员为了方便,经常使用编译出来的测试 APK 进行验证,这种安装没有使用正式签名的 APK 可以使用该命令选项安装。

4、组合使用

adb install -r -t xxxx.apk

        对于安装命令中的选项可以组合使用,最常见的就是这种 -r -t 的选项组合,即覆盖安装测试 APK。

5、安装低版本APK

adb install -d xxxx.apk

        -d 或 --downgrade,允许降级安装。即安装比但前设备上现有版本低的应用。

5、安装并授予所有运行时权限

adb install -g xxxx.apk

        -g 或 --grant-all-permissions,授予所有权限。 

6、本地文件安装

adb install -l xxxx.apk

        -l 或 --local,使用本地数据存储。即允许你在不通过 ADB 传输文件的情况下直接在设备上安装 APK 文件(本地路径),这可以提高安装效率,特别是在开发环境中频繁安装和调试 APK 文件时。

7、旁加载

adb install -s xxxx.apk

        -s 或 --sideload,用于旁加载。旁加载是指绕过官方应用商店,直接在 Android 设备上安装 APK 文件的过程。通常在特殊情况下(如设备处于 Recovery 模式)通过 ADB 安装 APK 文件,这种安装方式常用于刷机或更新系统级别的应用。

其他选项

        对于安装命令还有很多其他选项,这里就不做一一介绍了。

-c 或 --no-verify: 不验证 APK。
-S 或 --sync: 同步模式。
-U 或 --update-existing: 更新现有应用。
-W 或 --wait-for-debugger: 等待调试器。
-F 或 --forward-lock: 前置锁定。
-A 或 --auto-grant-permissions: 自动授予权限。
-D 或 --debuggable: 设置应用为可调试。

二、卸载apk:

1、直接执行卸载

查看包名

adb shell pm list packages

指定包名卸载

adb uninstall {包名}

        如果想要保留应用数据,可以使用 -k 命令选项进行卸载。

2、root权限卸载

        对于普通的应用可以直接使用上面的方式进行卸载,但是还有很多预装应用、系统应用以及不可卸载应用,直接使用上述命令是无法卸载的,这就需要获取 root 权限后,进入到 APK 的安装路径,直接删除对应的 APK 文件。

获取权限

获取root权限:adb root

获取读写权限:adb remount

查找文件位置

查看包名:adb shell pm list packages

获取路径:adb shell pm path {包名}

        这里如果知道应用包名直接使用下面的命令可以直接获取 APK 的文件路径。

删除应用

adb shell rm {包名地址}

        这里使用 rm 命令进行文件删除。

设备重启

adb reboot

        这里也可以手动断电重启设备。

3、shell卸载

        如果获取了 root 权限后,还是无法卸载应用,就只能使用 shell 命令进入到 APK 目录下执行删除了。

        如果2方法还是无法卸载,就只能进入apk目录下进行删除了。

获取权限

获取root权限:adb root

获取读写权限:adb remount

        首先,同样是获取 root 权限和文件的读写权限。

进入shell

adb shell

        使用 shell 命令进行到设备系统。

查找文件位置

查看包名:pm list packages

获取路径:pm path {包名}

        可以看到进入到设备后的命令相比于前面的 ADB 命令只是前面少了 adb shell,后面的完全一样。

进入文件目录

cd /system/app/***

        这是使用 cd  命令进入到 APK 文件的指定目录。

删除应用

rm -rf xxx.apk

        使用了 rm -rf 命令进行删除,相比于前面 ADB 的 rm 命令只是增加了一些选项。这里的 -r 和 -f 选项分别代表递归(recursive)和强制(force)。这是一个常用的组合,表示强制递归删除文件,对于一些具有特殊属性文件或目录、文件或目录正在被使用、文件系统错误、权限问题以及符号链接指向不存在的目标等异常文件的删除有很好的效果。

设备重启

reboot

三、应用更新

        其实对于开发者来说,很多时候的是替换原有的应用,安装自己的应用进行功能验证,我们直接替换系统中原有的 apk 文件即可。

1、功能实现

确定文件位置

1)进入Shell:adb shell

2)确定应用包名:ps -ef | grep '应用包名关键字'
3)获取apk文件位置:pm path '应用包名'

        这里对于知道应用包名的可以省略第二步。

替换apk文件

adb root

adb remount

adb push <本地APK路径> <系统APK路径>

        这一步更新应用的关键步骤,同样需要获取系统权限,然后使用 adb push 命令将 apk 文件推送到系统指定位置。

后续处理

同步文件系统:adb shell sync
清除应用数据:adb shell pm clear '应用包名'
重启设备:adb reboot

        sync 命令用于确保所有待处理的写入操作都已成功完成,并将数据从缓存刷新到存储介质上,这对于确保文件正确无误地写入非常重要。 清除应用数据确保会清除应用的所有数据(如设置、数据库等),基本上是恢复该应用到初始状态,保证验证功能的准确性。

2、使用示例

        假如这里我们需要替换一个 xiaoxu.apk,并且我们还不知道它的包名。

1)adb shell

2)ps -ef | grep 'xiaoxu'

输出:system        2503   452 0 23:59:57 ?     00:00:03 com.my.xiaoxu

3)pm path com.my.xiaoxu

输出:package:/system/priv-app/MyXixoxu/xiaoxu.apk

4)exit

5)adb root

6)adb remount

输出:remount succeeded

7)adb push C:\Users\Desktop\xiaoxu.apk /system/priv-app/MyXixoxu/xiaoxu.apk

输出:C:\Users\Desktop\xiaoxu.apk: 1 file pushed, 0 skipped. 56.9 MB/s (22596653 bytes in 0.379s)

8)adb shell sync

9)adb shell pm clear com.my.xiaoxu

输出:Success

10)adb reboot

        这里是一个比较详细的流程,可以根据个人需要进行删减。 

3、对比Install

        对于 path 的方式大都是系统应用,而 install 安装也适用于系统应用,但是他们安装包的位置是不同的。path 可以指定路径,一般是 /system/app/、/system/priv-app/ 或 vendor/ 对应路径下,而 install 安装则是位于 /data/app/ 下,所以对于系统应用使用 install 安装安装后,两个安装包会同时存在。

        在 Android 系统中,如果同一个应用(相同的包名和签名)同时存在于 system/app/(系统预装)和通过 adb install 安装到 data/app/(用户安装),系统会优先加载并运行data/app/中的版本(用户安装的APK),因为用户分区的应用优先级高于系统分区。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c小旭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值