鉴于知乎题目有长度限制,所以简略写。

学习于:《安卓群英传》

玩Android,必会ADB命令。

要使用ADB,首先要配置sdk的环境变量。参考:https://jingyan.baidu.com/article/15622f2434bc5cfdfcbea51c.html

我的配置过程和它的大同小异,不过我的adb命令是在 platfprm-tools目录下:




android adb copy 应用数据 adb拷贝文件到手机_adb挂载system可读写


然后我的配置是这样的:


android adb copy 应用数据 adb拷贝文件到手机_js 模拟按键_02


加:


android adb copy 应用数据 adb拷贝文件到手机_js 模拟按键_03


我的是都在用户环境变量里配置,没有去系统环境变量配置。

然后验证:


android adb copy 应用数据 adb拷贝文件到手机_js 模拟按键_04


和:


android adb copy 应用数据 adb拷贝文件到手机_adb挂载system可读写_05


现在是成功配置sdk环境变量。

然后来看看adb有啥用。

adb: android debug bridge ,也就是一个工具,在电脑上可以通过这个工具来操纵手机。

使用它连接电脑手机win10需要下载手机驱动,我没下,插进去就行了。而且手机需要开启开发者模式,我红米4的手机一直开启这开发者模式。所以我也干啥。大家如果连接出现问题的话可以网上看看。

然后我们开始用电脑连接手机了。

cmd中输入adb shell即可进入,相当于开启了一台linux。如果Linux没啥基础的建议去玩玩先。


android adb copy 应用数据 adb拷贝文件到手机_adb挂载system可读写_06


然后随便进入里面的一个system文件夹:


android adb copy 应用数据 adb拷贝文件到手机_getenv获取不到环境变量_07


发现实际拥有的文件和显示出来的不一样。右边的显示和手机的一样。对了,注意这里有隐藏文件夹,即以 “. ”开头的文件夹,手机中不开启显示隐藏文件夹就会看不到这些文件,电脑还是可以看到。而在shell中则没有这类文件。 这些东西我不太知道为啥,现在只是提出这个疑问,后面再来思考。 这里的ls命令查看的Android系统的根目录。直接在手机里看的目录应该是不知道在哪里的东西。

这里介绍一下system这个目录里面的文件:

app:里面放的是系统的app。里面看到了个calculator。

bin:里面主要放的是Linux自带的组件,比如我看到了head,grep,find等命令。

build.prop:记录系统的属性信息。里面看到个 ro.build.version.sdk=23,ro.build.version.release=6.0 这也就是Android6.0的系统,然后前面我们看多了也发现了,开发Android6.0的sdk的版本为23.

fonts:系统存放字体目录,root后可下载ttf格式字体替换原字体,达到修改系统字体的效果。

framework:系统的核心文件、框架层。里面就是存放了各种jar包。

lib:存放几乎所有的共享库文件(.so)

media:用来存放系统提示音、系统铃声。里面的audio保存着系统默认铃声,alarms则是闹钟铃声。

usr:用户的配置文件,如键盘布局,共享,时区文件等。

看完system里面比较重要的目录,再来看另一个比较重要的目录data.

来看data里面的文件:


android adb copy 应用数据 adb拷贝文件到手机_getenv获取不到环境变量_08


这里出现一个问题:

opendir failed permission denied

也就是说不准你查看。综合网上的说法,这里需要root一下手机,关于root,大家可以参考:手机root后对手机有什么影响? 怕手机出问题的最好就别root了。

这里发现,Android studio这右下角的工具可以直接查看Android的根目录,感觉还不错,可惜还是不能查看data里的文件。


android adb copy 应用数据 adb拷贝文件到手机_js 模拟按键_09


这里涨见识了。

然后我发现我的红米4很难root,网上什么鬼方案都有,反正kingroot搞不定,也不敢随便下载个软件root我用了好几年的手机。然后我又换了一个手机root,还是失败,可能是手机的问题,太差了。

还是回来看data里面的内容吧:

app:包含用户安装的app。

data:包含了app的数据信息,文件信息,数据库信息等,以包名的方式来区分各个应用。

system:手机的各项系统信息。

misc:保存了大部分的wifi、VPN信息。

这里的root真的是太令我心碎了,花了挺多时间的,始终没有root成功。然后感觉自己方向错了。

现在想想,或许我只需要知道adb install -r E:packageja.apk 就可以了。也就是说我只需要知道安装app就行了。我的目标不是学通安卓,而是用它来达到我的目的。

然后我直接开模拟器,不理真机了。

然后有下图:


android adb copy 应用数据 adb拷贝文件到手机_adb挂载system可读写_10


Android studio上是成功查看了。


android adb copy 应用数据 adb拷贝文件到手机_js 模拟按键_11


cmd也成功了。

模拟器里的默认是root权限。

后面先在模拟器上开发成功了再去装手机上。反正我目前对安卓要求不高。

最后再学习一些adb命令:

adb push d:js.spk /system/app/ 也可以安卓apk,它是将文件写到存储系统当中,前提是有相应的权限。 push 改为pull就是获取文件。

adb shell input keyevent 3 模拟按键3的输入

还可以模拟屏幕的滑动,输出已经安装的应用,查看系统盘符,

录制屏幕(adb shell screenrecord /sdcard/demo.mp4),重新启动(adb rebot)

总之有了相应的权限后,adb就可以干很多控制手机的事情。

欢迎交流讨论。