1. 抓取linux内核启动的完整信息

需要增大缓冲区大小,目前默认为128KB,参考链接:点击打开链接

 

2.Android内核开发:学会分析系统的启动log点击打开链接

 

3.将init进程的详细log输出到dmesg文件中

修改/system/core/rootdir/init.rc,把loglevel从3改为7

 

4. framework的调试

4.1 比如修改frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\NavigationBarView.java

对应SystemUI.apk,可调用Log.i, Log.d ,Log.e增加打印信息,进入frameworks\base\packages\SystemUI目录下mm生成新的apk在out目录下的system\priv-app\SystemUI下,然后push到系统对应的目录下,重启即可。

 

5.音频调试可以用tinymix命令,参考链接点击打开链接

 

6.msm8937_camera.xml替换和修改

 

 

 

7.查看CPU占用adb shell top  -d 1 -s cpu |findstr com.golive.cinema

 

8.查看具体apk占用adb shell dumpsys cpuinfo|findstr com.golive.cinema

9.内存adb shell dumpsys meminfo

更合适的方法cat  /proc/meminfo

adb shell "cat /proc/meminfo"  E:\debug\meminfo.txt,看MemAvailable的内容,比如我的

 

MemTotal:        1921372 kB

MemFree:          318416 kB

MemAvailable:    1125424 kB

各项的具体含义见

kernel\msm-3.18\Documentation\filesystems\proc.txt

10. logcat  >  /data/log.txt &可以在后台打印出log 到log.txt中去,就算拔出USB线也没关系

如果要打印的log再加上系统时间的话该怎么办呢?logcat -v time > log.txt&

 

11.获取APP UID

(1) 系统刚启动的时候,会对每个app分配一个uid,
最简单的获取方式就是通过adb ,不过限于eng或userdebug版
adb pull  data/system/packages.list   d:\

参考点击打开链接

(2) 通过PS命令获取

 

在adb shell敲入ps,得到运行的进程的列表,如下一个小截屏:

Android内核的编译和调试 安卓内核调试_Android

u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于com.android.systemui,它的user是u0_a12,按前面的规制,它的UID就是12 + FIRST_APPLICATION_UID = 10012。

参考点击打开链接

12. 涉及SEAndroid权限问题,程序创建目录的时候有权限问题系统会打印出avc的log,根据log来配置

13.打开和关闭飞行模式

//开启飞行模式
 settings put global airplane_mode_on 1
 am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true
 //关闭飞行模式
 settings put global airplane_mode_on 0
 am broadcast -a android.intent.action.AIRPLANE_MODE --ez state false

14.echo “7 7 1 7” > /proc/sys/kernel/printk

 

15.cat 重定向到你的cache下

cat init.rc > /cache/1.txt

 

16 升级包的update-binary和updater-script
刚开始来之out目录下的ota.zip包,其中update-binary源代码位于bootable\recovery\updater下。可通过mmma bootable/recovery/updater的方式编译,但此编译方式和整个编译make -j32方式生成的updater路径和大小不一样
(1) mmma bootable/recovery/updater
编译生成为out\target\product\msm8937_64\system\bin\updater下,大小为1189KB

(2) make -j32
编译生成为out\target\product\msm8937_64\symbols\system\bin\updater,大小为12075KB

将updater重命名为update-binary即可。

 

17.查看经常是否在运行

比如ps | grep memdetector

 

 

18.file_contexts.bin 和 file_contexts互转,支持到android8.来自于点击打开链接

file_contexts.bin 转换成 file_contexts,命令如下:

./sefcontext -o file_contexts file_contexts.bin  sefcontext

Android内核的编译和调试 安卓内核调试_java_02



file_contexts 转换成 file_contexts.bin,命令如下:

./sefcontext_compile -o file_contexts.bin file_contexts  sefcontext_compile

Android内核的编译和调试 安卓内核调试_Android内核的编译和调试_03

19.Android ART模式,不重新烧录system.img的情况下如何修改framework和app

(1)编译
(2)连接手机
(3) croot && adb remount && adb sync system && adb reboot 
第三步省去了重新烧版本的麻烦

20.adb for wifi

1. adb tcpip 12345

2. adb connect 10.10.167.252:12345

#ip:端口