完整的Android入门教程:https://www.w3cschool.cn/android_training_course/?
一、SDKTool
查看当前界面的布局
通过“sdk\tool\uiautomatorviewer.bat”即可查看当前界面的布局。
查看当前界面的类名
通过“sdk\tool\hierarchyviewer.bat”即可查看当前界面的类名,也就是Activity。
有的手机不显示的问题:https://www.cnblogs.com/fatfatdachao/p/4403282.html
二、DDMS的使用
DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
进入DDMS之后,界面如下:
三、ADB的使用
Android ADB命令?这一次我再也不死记了!【简单说】 - 简书
adb环境变量的配置:
http://jingyan.baidu.com/article/17bd8e52f514d985ab2bb800.html
adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方便通过DDMS来调试Android程序,说白了就是debug工具。
在使用adb指令之前,应该将adb所在目录配置到环境变量Path中去,这样在CMD命令行就能直接使用adb指令。
常用adb命令:
https://www.cnblogs.com/bravesnail/articles/5850335.html
1.adb devices:列出当前×××连接的所有Android设备(包括真机和模拟器),可以查看设备的序列号,作为设备的唯一标识。
2.adb占用的端口是5037,可以在cmd中输入 netstat -oan命令来列出当前×××所占有的所有端口,通过查看5037端口对应的PID,去任务管理器查询,就知道是哪个应用程序占据了这个端口,可以将这个程序关掉。
3.adb kill-server:中断adb服务,在DDMS中的devices可以看到设备会消失。
4.adb start-server:重启adb服务,在DDMS中的devices中可以看到设备又出现了。
5.adb [-s android设备序列号] install [-r] APK文件的带盘符路径:安装应用程序。
如果设备多于1台设备,需要指定-s加参数指定设备序列号(可以通过devices命令查看)
-r指的是强制安装,即如果不用-r,如果设备上有将要安装的这个应用程序,会安装失败。如下图:
如果你想把网络上下载的APP安装到虚拟机上,就要用到这个命令.
6. adb [-s android设备序列号] uninstall 应用程序包名:卸载应用程序。
如果设备多于1台设备,需要指定-s加参数指定设备序列号(可以通过devices命令查看)
因为应用程序的包名可以唯一标识应用程序,通过包名就可以卸载应用程序。
7. adb [-s android设备序列号] shell:进入设备的linux目录,命令会出现#,表示等待用户输入linux指令。在DDMS中的File Explorer的设备文件目录,就是用linux指令来列出来的。
# ls -l:列出手机目录信息
# logcat:查看手机日志信息
8. adb pull :将文件从设备拷贝到×××
9. adb push :将文件从×××拷贝到设备
cmd ---> adb push 源文件路径 sdcard 路径
10. # cat 文件名(带后缀) 打印文件内容,比如在向sp更新内容之后,不必要每次都把文
件pull到×××上查看,可以使用这个命令在打印文件查看内容。
11.adb wifi调试
1)手机开一个wifi,让×××连上。
2)命令行 adb tcpip 5555
3) 命令行 adb connect 192.168.43.1(固定)
12. 创建目录
mkdir -p /sdcard/brut.googlemaps/datas (加了-p才可以创建多级目录)
13.查看系统属性:
getprop
14.adb remount (对于已经root的系统)
如果失败执行 adb root; adb remount
还是失败,则执行 adb root; adb disable-verity; adb reboot
15.MTK日志操作
拨打电话处输入: *#*#36951#*#* 打开engmode然后往右划到log and debugging,就能看到mtklogger了,正下方的按钮点击下就能开启(假如出现预览界面,就把记录仪的应用杀掉)
MTK Logger的开关与日志导出
https://blog.csdn.net/zqh2007/article/details/50923221
单次开启:adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name start --ei cmd_target 7
单次关闭: adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name stop --ei cmd_target 7
开机自动开启: adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name set_auto_start_1 --ei cmd_target 7
开机自动关闭: adb shell am broadcast -a com.mediatek.mtklogger.ADB_CMD -e cmd_name set_auto_start_0 --ei cmd_target 7
15-1) 各大手机的系统日志抓取方法
https://blog.csdn.net/superbigfollicle/article/details/84617171
http://bbs.coloros.com/thread-284112-1-1.html
16.启动某个activity
am start -a android -a com.android.settings.TTS_SETTINGS
上面这个是启动TTS设置页面,由于在设置页面无法点进这个页面,只能通过adb进去。
各种启动
https://blog.csdn.net/mmk1992/article/details/56500973
启动service :am startservice ,带参数-n的才能启动非MAIN的service。
启动设置页面及其他各种页面
https://blog.csdn.net/flaming999/article/details/78709396/
17.输出logcat信息到文件中
https://blog.csdn.net/qq_34801506/article/details/81014994
https://www.cnblogs.com/slowlysnail/p/8394937.html (根据包名过滤日志并输出到文件中)
adb logcat > logcat.txt,输出的日志文件会有之前的日志缓存,通过adb logcat -c指令可以清除。
18.有时data/data/目录下不显示包名
执行adb root
19.修改gpio(引脚)
shell之后
1)进入相应的gpio文件
cd /sys/class/gpio/gpio14
2)修改value值
echo 数值 > value (注意数值与>之间有空格)
20.通过ADB方式控制Android系统蓝牙开关 https://blog.csdn.net/u010555889/article/details/80230740
ADB的实际应用场景
1.安装APK adb install , 如果有了apk,但是没有什么手机助手。只能用这种方式安装了。
2.我们公司的设备,一开始设备装了个应用,会自动启动。应用将回退按钮给屏蔽了,系统也没有悬浮球操作按钮,无法回到桌面。我就想了使用adb
查看手机运行的进程 http://blog.csdn.net/xingchenxuanfeng/article/details/50386689 adb shell ps
adb shell kill [PID] //杀死进程
adb 命令查看程序进程方便简洁高效
adb shell ps //查看所有进程列表,Process Status
adb shell ps|grep <package_name> //查看package_name程序进程
结果信息: https://blog.csdn.net/She_lock/article/details/79673415
adb shell ps -x [PID] //查看PID进程状态
adb shell top|grep <package_name> //实时监听程序进程的变化
使用ActivityManager的forceStopPackage方法结束进程
查看CPU信息
1、adb shell
2、cat /proc/cpuinfo
https://blog.csdn.net/Brouce__Lee/article/details/81092955 (aarch64架构)
https://www.jianshu.com/p/4b58e41b3948 (cpu架构详解)
根据这个应用的名字,我大致就猜出了它的包名,执行adb uninstall 包名果断卸载,然后adb install 我的应用包名
我的应用装上了,我也想回到桌面啊,uninstall自己的应用太low了,用 adb shell am force-stop 包名,即可停止应用 。
3) adb shell input keyevent 4 (模拟android系统的返回键)
键值参考:http://blog.csdn.net/itfootball/article/details/37567373
4) 查看当前的Activity
adb shell "dumpsys activity activities | grep mFocusedActivity"
5) 查看所有应用程序的包名
https://blog.csdn.net/u010983881/article/details/69230627
adb shell pm list packages:列出所有的包名。
adb shell dumpsys package:列出所有的安装应用的信息
adb shell dumpsys package com.android.XXX:查看某个包的具体信息
6)adb shell模拟点击事件 input
https://blog.csdn.net/u014510302/article/details/50720729
7) 禁用某个应用
pm disable com.carrecorder
执行如果permisson有问题,先adb root,再进入shell执行上述命令。
8)清空某个应用的数据
https://blog.csdn.net/henni_719/article/details/62223022
adb shell pm clear <PACKAGE>
9)监听日志中的某个字符串
adb logcat -v time | findstr "com.bird.camera.collide.action"
ADB使用的问题
1) file explore下的data/data目录不显示:https://www.cnblogs.com/smyhvae/p/3881477.html
adb shell
su
chmod 777 data (一级一级的去改变权限)
2)adb server is out of date. killing完美解决
https://blog.csdn.net/liranke/article/details/42524851
3 ) INSTALL_FAILED_OLDER_SDK
https://blog.csdn.net/lincyang/article/details/46505715
4) 测试系统加速度传感器
拨号键输入*#15963#*进入工厂测试,找到加速度传感器,然后就可以观察三者于方向间的联系了
################################################批处理###################################################################
1)如何在一个bat批处理文件中调用另一个bat批处理文件?
https://blog.csdn.net/lixingshi/article/details/54375460
2)用bat批处理不自动关闭cmd窗口
https://jingyan.baidu.com/article/ea24bc39ae73e8da62b33104.html
3)如何自动执行多个批处理命令
http://blog.sina.com.cn/s/blog_48462a890102dy1w.html
################################################批处理###################################################################
三.开机启动程序
1)监听开机广播
这种方法需要打开app3次方能起作用,对于无屏设备和无入口页面app无用。
2)绑定系统应用进程
写个空的receiver或者service,AndroidManifest.xml中添加android:process="com.android.launcher"或者其他的类似于com.android.phone都可以
3)将app放到系统应用目录下
把应用push到/system/priv-app/下面,格式一般是/system/priv-app/名称/名称.apk
要先执行adb root, adb disable-verity ,然后重启一次,再执行adb root , adb remount (不执行则没有权限)
可以写成两个脚本:
第一步:
adb remount :handle adb root adb disable-verity pause adb reboot :end
第二步:
adb remount :handle adb root adb remount adb shell mkdir /system/app/TestBoot adb push TestBoot.apk /system/app/TestBoot/ pause adb reboot :end
如果app中使用的so库,还应该把so库push到 system/lib下
adb push c://lib/* /system/lib
如果app开机还是收不到广播,要恢复出厂设置:
adb shell rm /data/* ; adb reboot