ADB使用小结

简介

ADB全称Android Debug Bridge,我们在开发过程中经常使用这个工具来操作Android系统。
在使用ADB过程中有一些常识和细节,我们来总结一下。

ADB主要功能有:

1、在Android设备上运行Shell(命令行)
2、管理模拟器或设备的端口映射
3、在计算机和设备之间上传/下载文件
4、将电脑上的本地APK软件安装至Android模拟器或设备上



ADB的安装

如果你已经安装了Android SDK 那么你可以在你的SDK目录下找到 ..\android-sdk-windows\platform-tools 这个目录,ADB工具就放在这里。如图:
这里写图片描述
复制这个目录的路径,我们需要在windows的系统设置中将这个路径设置到PATH中,设置完成后我们就可以再CMD窗口中使用ADB了。
这里写图片描述


Android系统文件结构

在使用adb之前,我们首先来了解Android系统的文件结构,这样我们才知道,要使用adb去哪里,操作哪些文件。

1、系统分区

adb shell
mount

可以看到以下分区结构

rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
none /acct cgroup rw,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block/vold/179:0 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,err  ors=remount-ro 0 0
/dev/block/vold/179:0 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf  8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,size=0k,mode=000 0 0

其挂载方式和 Linux 非常类似。其中需要说明一下的可能是 /dev/block/mtdblock* 这几个核心分区(写入 ROM 的),他们都是使用 yaffs2 文件系统(基于 FLASH 存储),其中是 /system 这个分区只有特殊的 readonly 只读权限,由此可见 Android 在安全性设计方面所下的一些功夫。另外 /dev/block/vold 据说是设计来替代 udev 的功能,主要用于支持一些热插拔设备

2、目录概览

ls -l

目录

drwxrwx--x system   cache             2015-11-25 11:15 cache
dr-x------ root     root              2015-12-07 10:02 config
lrwxrwxrwx root     root              2015-12-07 10:02 d -> /sys/kernel/debug
drwxrwx--x system   system            2015-11-25 11:26 data
-rw-r--r-- root     root          403 1970-01-01 08:00 default.prop
drwxr-xr-x root     root              2015-12-07 21:43 dev
lrwxrwxrwx root     root              2015-12-07 10:02 etc -> /system/etc
-rwxr-x--- root     root       236004 1970-01-01 08:00 init
-rwxr-x--- root     root        22463 2015-11-19 16:47 init.rc
drwxrwxr-x root     system            2015-12-07 10:02 mnt
dr-xr-xr-x root     root              1970-01-01 08:00 proc
drwx------ root     root              2015-11-19 11:02 root
drwxr-x--- root     root              2015-11-19 16:47 sbin
lrwxrwxrwx root     root              2015-12-07 10:02 sdcard -> /storage/emulated/legacy
drwxr-x--x root     sdcard_r          2015-12-07 10:02 storage
dr-xr-xr-x root     root              2015-12-07 10:02 sys
drwxr-xr-x root     root              2015-11-25 11:15 system

以下是几个重要目录/文件的说明:

1、mnt               挂载点目录
2、etc               系统主要配置文件
3、system            Android 系统文件
4、sys               Linux 内核文件
5proc              运行时文件
6、init.rc           启动脚本
7default.prop      系统属性配置文件
8data              用户程序目录
9、dev              设备文件

system目录:

ls -l /system

目录如下:

drwxr-xr-x root     root              2015-11-25 11:15 app
drwxr-xr-x root     shell             2015-11-25 11:15 bin
-rw-r--r-- root     root         7554 2008-08-01 20:00 build.prop
drwxr-xr-x root     root              2015-11-25 11:14 data
-rw-r--r-- root     root           28 2008-08-01 20:00 default.prop
drwxr-xr-x root     root              2015-11-25 11:14 etc
drwxr-xr-x root     root              2015-11-25 11:15 fonts
drwxr-xr-x root     root              2015-11-25 11:14 framework
drwxr-xr-x root     root              2015-11-25 11:15 lib
drwxr-xr-x root     root              2015-11-25 11:15 lib64
drwx------ root     root              1970-01-01 08:00 lost+found
drwxr-xr-x root     root              2015-11-25 11:15 media
drwxr-xr-x root     root              2015-11-25 11:52 priv-app
drwxr-xr-x root     root              2015-11-25 11:15 tts
drwxr-xr-x root     root              2015-11-25 11:15 usr
drwxr-xr-x root     shell             2015-11-25 11:15 vendor
drwxr-xr-x root     shell             2015-11-25 11:15 xbin

主要文件目录介绍:

   1、usr            用户文件夹,包含共享、键盘布局、时间区域文件等
  2、app            常规下载的应用程序,这些 apk 包都是受保护的哦
  3、lib            系统底层库,如平台运行时库等
  4、etc            系统的配置文件,比如APN接入点设置等核心配置等
  5、framework      Android 系统平台核心 framework 的文件
  6、build.prop     Android 系统属性配置文件
  7、xbin           常用开发工具,比如 tcpdump/sqlite3 等
  8、bin            系统工具,比如 ps/cp/pm 等
  9、priv-app       系统应用程序

data目录:

ls -l /data

目录如下:

drwxrwx--x system   system            2015-11-25 19:22 app
drwxrwx--x system   system            2015-11-25 10:55 app-private
drwxrwx--x system   system            2015-11-25 11:53 data
drwxr-x--x root     root              2015-11-25 10:55 local
drwxrwx--- root     root              1970-01-01 08:00 lost+found
drwxrwx--t system   misc              2015-11-25 10:55 misc
drwx------ root     root              2015-12-07 10:02 property
drwx--x--x system   system            2015-11-25 10:55 security
drwxrwxr-x system   system            2015-12-08 16:11 system

主要文件目录介绍:

  1data            存放安装后的apk数据
  2、app             存放apk文件



使用ADB进行apk卸载和安装

1、非系统APP

对于非系统app,我们可以使用adb直接进行卸载和app,也是我们最经常使用的方式。
安装:

adb install apk路径

例如

adb install C:\com.example.apk

卸载:

adb uninstall apk包名

例如

adb uninstall com.example

对于app卸载,我们还有一种方式,就是直接删除apk文件以及其data目录
对于文件增删操作,都需要挂载,以下文件的增删操作,如果没有说明,都需remount

adb remount

有的朋友可能会挂载失败,提示

remount failed: Operation not permitted

遇到这个错误的朋友,可以看下面的错误总结部分,这里不细说。
删除过程如下:

adb shell
cd /data/app
rm apk包名.apk
cd /data/data
rm -rf 应用包名

这样就把apk文件和data目录都删除了,如果不把两者都删除,可能在再次安装app时,会提示版本错误。


2、系统APP

安装:
安装系统app,直接将apk文件push到/system/priv-app目录下,重启手机即可

adb push 本地apk路径 /system/priv-app

例如

adb push C:/example.apk /system/priv-app

删除:
和普通app删除过程一样,要删除apk文件和data目录
其中apk文件在/system/priv-app目录下,data在/data/data目录下
删除过程如下:

adb shell
cd /system/priv-app
rm apk包名.apk
cd /data/data
rm -rf 应用包名



使用ADB进行文件传输

adb pull 就是从真机上拷贝文件到您的PC上。

adb pull 手机文件地址 本地目录

例如

adb pull /data/app/example.apk C:\Desktop\

adb push 就是从PC上复制一份文件到您的真机上。

adb push 本地文件地址 手机目录

例如

adb push C:\Desktop\example.apk /data/app

注意:操作文件的前提是remount以后,你对文件目录有操作权限,如果你是root用户,可以修改目录的操作权限。


常见错误

以下错误,部分是由于权限不足引起的,在调试错误前,请保证可以获得手机的root权限

1、remount failed: Permission denied

这个错误说明你没有权限,你可以转换成root用户以后,进行操作,或者

adb root
adb remount

2、error: device not found

如果你连接了手机,却出现这个错误,可以尝试在任务管理器中关闭adb.exe进行,然后重试
这里写图片描述

3、INSTALL_FAILED_INVALID_APK

无效的安装包,安装包已损坏。一般是由于你的安装包不完整,换一个安装包就好了。

4、INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES

安装包签名不一致,你需要卸载旧的安装包再重新安装。
对于普通app和系统app,分别按照上文方式进行卸载、安装即可。

5、INSTALL_FAILED_INSUFFICIENT_STORAGE

没有足够的存储空间,清理空间,重启手机后重试。

6、Read-only file system

也就是文件只能读,你可以尝试remount之后在进行操作。
或者chmod 777修改目录的读写权限(如果你是root用户)。

7、INSTALL_FAILED_INVALID_URI

在安装apk过程中,遇到这个错误,貌似root过的手机比较常出现,可以尝将/data/local目录的权限
从 rwxrwxr– 修改为 rwxrwxrwx

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页