adb安装 apk到手机
从豌豆荚,或者其他应用市场,下载应用的apk文件到电脑上。然后在apk文件的目录下打开cmd,输入如下命令即可安装该应用
示例
把我电脑上的京东.apk安装到Android平板上:
命令输出如下:
1 2
| D:\网络共享\可读可写\apk>adb install 京东.apk Performing Streamed Install
|
此时命令会阻塞一阵子,需要等待命令把apk文件传输到Android设备中,等待一会后,Android设备上会弹出安装界面,点击继续安装即可。如下图所示:
![]()
安装成功的输出
如果安装成功,命令会输出一个”Success”提示信息。如下所示:
1 2 3 4 5
| D:\网络共享\可读可写\apk>adb install 京东.apk Performing Streamed Install Success
D:\网络共享\可读可写\apk>
|
安装失败的输出
输出不是”Success”,那就是安装失败了,安装失败的提示如下所示:
1 2 3 4 5
| D:\网络共享\可读可写\apk>adb install 京东.apk Performing Streamed Install adb: failed to install 京东.apk: Failure [INSTALL_FAILED_ABORTED: User rejected permissions]
D:\网络共享\可读可写\apk>
|
adb卸载
先获取APP的包名
打开APP,让APP显示在屏幕最上方。
然后输入如下命令获取屏幕最上方的APP的activity:
1
| adb shell dumpsys window | findstr mCurrentFocus
|
命令输出如下:
1 2 3 4
| D:\网络共享\可读可写\apk>adb shell dumpsys window | findstr mCurrentFocus mCurrentFocus=Window{9902caf u0 com.jingdong.app.mall/com.jingdong.app.mall.main.MainActivity}
D:\网络共享\可读可写\apk>
|
命令输出的com.jingdong.app.mall/com.jingdong.app.mall.main.MainActivity就是activity名称,activity名称斜杠/前面的就是包名com.jingdong.app.mall。
根据包名卸载APP
1
| adb uninstall app_key 包名
|
示例
卸载刚才安装的京东APP:
1
| adb uninstall com.jingdong.app.mall
|
卸载成功效果:
1 2 3 4
| D:\网络共享\可读可写\apk>adb uninstall com.jingdong.app.mall Success
D:\网络共享\可读可写\apk>
|
批量卸载第3方APP
使用批处理
应用包名文件:
adbui.txt
这个文件保存了需要卸载的应用的包名,和应用名,其中包名是必须的,并且必须写在第一列。因为后面的批处理文件主要读取的是第一列的内容。
第二列写应用名,应用名不是必须的,可以不写,因为后面的批处理文件不会读取第2列的内容。
adbui.txt1 2 3
| com.meta.box 233乐园 com.m4399.gamecenter 4399游戏盒 com.wuba
|
批处理文件
adbui.bat1 2 3 4 5 6 7 8
| @echo off :: 进入当前批处理所在的盘符 %~d0 :: 进入当前批处理文件所在目录 cd %~dp0 :: 遍历同目录下的adbui.txt文件,读取第一个字段到变量i中,对每一个变量i执行一次adb卸载命令。 for /f "tokens=1" %%i in (adbui.txt) do adb uninstall %%i :: "tokens=1" 表示获取txt文件每行的第一列作为变量的值。
|
执行效果:
1 2 3 4 5
| PS G:\dev2\idea_workspace\MyJavaTools\runable> adbui Success Success Success PS G:\dev2\idea_workspace\MyJavaTools\runable
|
如果Android设备中并没有安装这些应用,则卸载失败。
改进
adb列出第三方apk
1
| adb shell pm list packages -3
|
adbui4.bat
先列出第三方应用,然后在第三方应用列表中查找 adbui.txt中的包名,如果找到,再使用adb卸载命令。
adbui4.bat1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| @echo off setlocal EnableExtensions :: 进入当前盘符 %~d0 :: 进入当前文件所在目录 cd %~dp0
for /f "tokens=2 delims=:" %%i in ('adb shell pm list packages -3') do ( echo %%i for /f "tokens=1" %%j in (adbui.txt) do ( if %%i == %%j ( echo %%j == %%i
echo 卸载 adb uninstall %%i ) ) )
|
改进2
存在多个设备的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| @echo off setlocal EnableExtensions
%~d0
cd %~dp0
for /f "skip=1 tokens=1" %%i in ('adb devices -l') do ( echo ----------------------------------------- echo -------------------------- echo current device: %%i echo --------------------------
for /f "tokens=1" %%k in (adbui.txt) do (
for /f "tokens=2 delims=:" %%j in ('adb -s %%i shell pm list packages -3') do ( if %%j == %%k ( echo uninstall: %%j echo. echo code: adb -s %%i uninstall %%j
echo. ) else ( echo no uninstall: %%j )
) )
echo ----------------------------------------- )
|
参考资料
https://www.w3cschool.cn/pclrmsc/yqaho0.html
https://www.w3cschool.cn/pclrmsc/gmjsnz.html