adb常用命令
adb devices
查看当前连接的设备
ZHR:~ zc$ adb devices
List of devices attached
JPF4C19123011893 device
adb install
为测试机安装apk
ZHR:~ zc$ adb install ~/Downloads/交通银行/Android_4.1.2-uat-outter-202010151355_商户专用.apk
Performing Streamed Install
Success
[INSTALL_FAILED_VERSION_DOWNGRADE]
不知道大家有没有遇到这种情况,安装测试app的时候,会报下面这个错误
ZHR:~ zc$ adb install ~/Downloads/adbtest/test.apk
Performing Streamed Install
adb: failed to install /Users/zc/Downloads/adbtest/test.apk: Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
我百度出来的原因是可能没有卸载干净原来的程序,但是吧,手机里却是没找到那个应用,从百度上找的办法千奇百怪的,最后用下面这个解决了问题
adb install -r 替换已存在的应用程序,也就是说强制安装
adb install -d 允许进行将见状,也就是安装的比手机上带的版本低
ZHR:~ zc$ adb install -r -d ~/Downloads/adbtest/团油_6.4.2.apk
Performing Streamed Install
Success
获取包名
ZHR:~ zc$ adb shell dumpsys window w | grep name=""
mSurface=Surface(name=GestureNavBottom)/@0x296a1d1
mSurface=Surface(name=GestureNavRight)/@0x296a1f5
mSurface=Surface(name=GestureNavLeft)/@0x296a02d
mAnimationIsEntrance=true mSurface=Surface(name=StatusBar)/@0x239b633
mSurface=Surface(name=com.czb.chezhubang/com.cmic.sso.sdk.activity.LoginAuthActivity)/@0x24cc845
mAnimationIsEntrance=true mSurface=Surface(name=com.android.systemui.HwImageWallpaper)/@0x2a5f7d7
其中, mSurface=Surface(name=com.czb.chezhubang/com.cmic.sso.sdk.activity.LoginAuthActivity)中的name的/前的内容即为包名:com.czb.chezhubang。
但是,如果你知道这个包的部分名字,比如说腾讯的就很多都带一个tencent
ZHR:~ zc$ adb shell pm list package|grep czb
package:com.czb.chezhubang
package:com.czb.webczbdemo
adb uninstall
安装的时候我们可以用apk的路径来安装,但是卸载的时候我们只能用包名来卸载
ZHR:~ zc$ adb uninstall com.czb.chezhubang
Success
adb shell
在我浅薄的认知里,安卓就是一个linux系统,adb shell其实就是进入了这个系统。
ZHR:~ zc$ adb shell
HWVCE:/ $ ls
ls: ./fstab.zram1024m: Permission denied
ls: ./fstab.zram1280m: Permission denied
ls: ./fstab.zram1536m: Permission denied
ls: ./fstab.zram2240m: Permission denied
ls: ./fstab.zram256m: Permission denied
ls: ./fstab.zram4096m: Permission denied
ls: ./fstab.zram512m: Permission denied
ls: ./fstab.zram768m: Permission denied
ls: ./init: Permission denied
ls: ./init.environ.rc: Permission denied
ls: ./init.mygote64.rc: Permission denied
ls: ./init.rc: Permission denied
ls: ./init.usb.configfs.rc: Permission denied
ls: ./init.usb.rc: Permission denied
ls: ./init.zygote32.rc: Permission denied
ls: ./init.zygote64_32.rc: Permission denied
ls: ./metadata: Permission denied
ls: ./modem_log: Permission denied
ls: ./resetFactory.cfg: Permission denied
ls: ./sec_storage: Permission denied
ls: ./ueventd.rc: Permission denied
ls: ./verity_key: Permission denied
3rdmodem 3rdmodemnvmbkp apex bugreports charger cust data default.prop eng hw_product mnt oem preas preload pretvs product res sdcard storage system version
3rdmodemnvm acct bin cache config d debug_ramdisk dev etc log odm patch_hw preavs prets proc product_services sbin splash2 sys vendor
我们看到了很多带着Permission denied字样的,是需要root权限的,很可惜的是,现在的android手机几乎都是拿不到root权限了,现在像我们测试的时候,整个办公好几百号人,只有一台root过的手机,狼多肉少啊。但是偏偏很多时候我们就要这个root的权限。比如说我们经常做的就是在腾讯车载上测试小程序,需要将扫码后下载的新的小程序导出来给开发,再提交给腾讯一样,我们进入app的文件夹的内部很多时候也是需要root权限的。
adb pull
adb pull <手机路径> <本机路径>
从手机中拉取信息到本地电脑上,我们需要先进入shell环境,找到文件的路径,然后再pull。
ZHR:~ zc$ adb pull /sdcard/images/20200312110902.jpg /Users/zc/Desktop/md
/sdcard/images/20200312110902.jpg: 1 file pulled, 0 skipped. 7.8 MB/s (121222 bytes in 0.015s)
导出后我们就可以到对应的电脑文件夹下找到这张图片了。
adb push
adb push <本机路径> <手机路径>
从本地电脑推送信息到手机上
ZHR:~ zc$ adb push /Users/zc/Desktop/md/abcd.jpg /sdcard/images
/Users/zc/Desktop/md/abcd.jpg: 1 file pushed, 0 skipped. 3.4 MB/s (121222 bytes in 0.034s)
ZHR:~ zc$ adb shell
HWVCE:/ $ cd /images/ sdcard/
HWVCE:/sdcard/images $ ls
20200312110902.jpg 20200312110914.jpg abcd.jpg