adb和aapt

(1)adb(Android Debug Bridge)是Android提供的一个通用的调试工具,借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:
1、快速更新设备或手机模拟器中的软件,如应用或Android系统升级(类似于MS的active sync);
2、在设备上运行shell命令(必须装设备驱动,如果不装对应的设备驱动,adb是不识别的);
3、管理设备或手机模拟器上的预定端口;
4、在设备或手机模拟器上复制或粘贴文件;

(2)一般设备连入电脑后,会提示adb设备驱动,指定android开发包的usb_driver文件夹。之后会在设备管理器中找到adb interfaces。以下为一些常用的操作:

1、安装应用到模拟器:adb install。有时我们装个更新版本的软件时提示签名错误,那就需要先卸载掉老版本的,也可以通过adb install -r 来覆盖安装
2、进入设备或模拟器的shell:adb shell。进入后会提示* daemon started successfully *,在这个Linux Shell中,你可以执行各种Linux的命令(路径是/system/bin/sh);另外如果只想执行一条shell命令,可以采用以下的方式:adb shell [command],如:dmesg会打印出内核的调试信息,避免在串口无用的时候无法调试;用exit退出SHELL状态。用adb devices查看设备连接状态时,如果显示设备Offline时,则需要重启嵌入式平台,或者用adb kill-server,adb start-server执行看看,直到没有offline的设备,这之后应该就可以正常进入ADB了。

       使用adb shell加上若干命令,可以完成一些特定功能。比如:

adb shell setprop ipod_debug 1    设置系统prop参数ipod_debug值为1

adb shell getprop > getprop.log      获取prop参数,并把参数定向到一个文本getprop.log中

3、复制文件:你可向一个设备或从一个设备中复制文件,复制一个文件或目录到设备或模拟器上:adb push 或adb pull ,比如把camera的拍照结果传回电脑,用:adb pull /sdcard/DCIM  .   把目标文件夹内容拷贝到当前目录(play商店下载的apk包,一般都放在平台的/data/app中,可通过此方式取出来)。

      adb push xxx.apk  /system/app,替换掉系统默认的APK;如果是adb install xxx.apk,则是装在了/data/app目录下,可以卸载的。如果操作时提示文件系统只读,尝试下运行adb remount。如果是push到sbin等目录中,光adb remount还不行,需要执行mount -o remount rw / 把整个/目录变成可读写。

6、查看Logcat信息和kmesg信息:用adb logcat,比如adb logcat -s TAG名;在没有UART线的情况下,可查看内核的Kmesg信息,用adb shell cat /proc/kmsg > log.txt,这样Log.txt的内容会不断更新,通过不断的操作,可以得到最新的调试信息(亲身经历如果内核中如果UART打印太多,比如重复的计数器输出,adb打印会丢失LOG数据,uart则完全)。还有adb logcat -b radio,可以看到大量的关于RIL的信息;adb logcat -v time,得到的Log信息都是带系统时间的。
7、获取设备的序列号:adb shell getprop ro.serialno


8、访问数据库SQLite3:adb shell  sqlite3。 echo 5555 > /dev/ttyMTxx 用示波器可以测出TX上的波形,如果没有波形,说明该串口被系统屏蔽,不受控,前提是从系统中删掉使用该串口的程序,不然测不准。

9、使用adb时提示“error: more than one device and emulator”,则说明目前PC上连接了多个android设备。在关闭任何设备的前提下,使用-s参数加设备名可以指定操作某个特定的设备。比如:adb -s emulator-5554 shell。

10、adb reboot recovery进入recovery模式。

12、stop && start 重启framework

13、sensorservice & 手动启动sensorservice

14、getevent获得输入设备事件和信息,getevent -i先是列出注册的输入设备列表,诸如/dev/input/eventX等信息。getevent -lt就可以获得eventx实时的数据了,我的手机执行命令结果如下:睡眠之后就没有了

15,adb shell dumpsys列出系统应用的详细相关信息,adb shell dumpsys > "C:\Users\zhangcheng\Desktop\o.txt"。要获得某个应用的入口JAVA类,让当前引用在前台,用adb shell dumpsys window w |findstr \/ |findstr name=

16,利用adb在没有TP的情况下,运行某个apk。比如我要运行Fps2D_3.1.0,从上面dumpsys的结果中查找Fps2D,得到如下信息:

com.edburnette.fps2d

intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.edburnette.fps2d/.Fps2D

可用adb shell am start -n {包名}/{包名}.{活动(activity)名称}来运行某个应用,所以包名就是com.edburnette.fps2d,activity就是.Fps2D。运行命令如下:

adb shell am start -n com.edburnette.fps2d/com.edburnette.fps2d.Fps2D,即可运行fps2d这个应用。如果有应用的源码就更简单了,直接在androidmenifast.xml中找到相关信息。

17,利用adb启动服务,am startservice -n {包(package)名}/.{服务(service)名称}。比如:am startservice -n com.android.traffic/.maniservice

18,利用adb发送广播,am broadcast -a <广播动作>。比如:am broadcast -a android.net.conn.CONNECTIVITY_CHANGE

20,如何通过wifi进行adb连接

如果只有一个OTG口,插入U盘后就无法连接adb了,如何解决?可以用wifi连adb。

A,通过 USB,将 Android 设备连接到电脑。在命令行中输入如下指令:adb tcpip 5555。其中 5555 指的是接下来网络连接的端口号,这个自然也可以使用其它的。输入该命令之后,已经意味着此时已经转为网络连接模式了。

B,此时可以拔掉 USB 线,然后在命令行中输入:adb connect <设备的 IP 地址>:5555,这时候我们应该已经连接到 Android 设备了,并能像 adb logcat 一样执行常用的 adb 命令。注意安卓设备和电脑主机要连在同一个路由器上,IP地址会是同一个网段。

C,如果要恢复回原来的通过 USB 来建立 adb 连接的方式,直接输入命令:adb usb

21,利用adb模拟BACK键,如下当前的activity就会back。


注意,模拟MUTE键时,执行的是KEYCODE_VOLUME_MUTE,不是KEYCODE_MUTE。adb shell input keyevent --longpress 3 这条指令可以调出recent app这个界面。

    也可以用adb模拟TP点击,比如input tap 300 300,即可在LCD上的触摸轨迹上打出对应的点。

=======================================================================

    aapt命令,即Android Asset Packaging Tool,在SDK的build-tools目录下。常用以下两个命令

A,aapt l[ist]列出资源压缩包里的内容,如下。也可重定向到一个文件 aapt l yingyonghui.apk > yingyonghui.txt


B,aapt d[ump] values:查看APK包内指定的内容。一个很有用的地方在于,当某些应用在系统上无法使用时,如何判断是权限还是feature问题。aapt dump badging file.apk > fileInfo.xml此命令用于查看APK包的packageName、versionCode、applicationLabel、permission等各种详细信息,请记录应用uses-feature和uses-library项。再利用上面讲的adb shell dumpsys package > package.xml,此命令可显示手机可供应用查询到的library和feature。对比应用需要的与手机声明的feature和library,补上手机缺少的相应feature。



参考原文:http://www.2cto.com/Article/201210/162878.html

参考原文:http://www.oschina.net/question/565065_58462

参考原文:http://www.iteye.com/problems/80141

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值