一、DDMS的使用

    DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。

    进入DDMS之后,界面如下:

    

wKiom1WlJeHgfa8LAAoQXVLoB8k940.jpg


二、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安装到虚拟机上,就要用到这个命令.

wKioL1Wj-zejOtAoAAH4fuxWos0546.jpg

    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

        

    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。

      

             

    17.输出logcat信息到文件中

        https://blog.csdn.net/qq_34801506/article/details/81014994

        

       https://www.cnblogs.com/slowlysnail/p/8394937.html   (根据包名过滤日志并输出到文件中)

    

    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 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

    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