Android Framework开发笔记

一、前言

在framework局部编译之前,代码必须整体编译过,形成完整的依赖(Android.mk)体系,才能局部编译。

二、编译

1.make编译,会重新产生依赖,实现依赖不完整不会导致无法编译。比较消耗内存和时间

fzw@onyx:~/mnt/workspace/3128_android_rom$ make SystemUI

2.mmm编译,不会重新产生依赖,实现依赖不完整会导致无法编译。

fzw@onyx:~/mnt/workspace/3128_android_rom$ mmm frameworks/base/packages/SystemUI/

fzw@onyx:~/mnt/workspace/3128_android_rom$ mmm frameworks/base/core/res/

3.此外还有m和mm,感兴趣的自己去查找。

#编译成功

Install: out/target/product/Tagus_C68/system/priv-app/SystemUI.apk
make: Leaving directory `/home/fzw/mnt/workspace/3128_android_rom'

三、安装

#push之前必须进行adb remount

fzw@onyx:~/mnt/workspace/3128_android_rom$ adb remount

#把安卓系统被修改重新编译的部分重新安装到指定目录
 

fzw@onyx:~/mnt/workspace/3128_android_rom$ adb push out/target/product/Tagus_C68/system/framework/framework.jar /system/framework/

fzw@onyx:~/mnt/workspace/3128_android_rom$ adb push out/target/product/Tagus_C68/system/framework/framework-res.apk /system/framework/

fzw@onyx:~/mnt/workspace/3128_android_rom$ adb push out/target/product/Tagus_C68/system/priv-app/SystemUI.apk /system/priv-app/

#显示adb日志信息

fzw@onyx:~/mnt/workspace/3128_android_rom$ adb shell logcat

#查看当前输出支持的设备(注意:每更换一款设备,都可能导致依赖缺失,需要重新make,加进依赖)

fzw@onyx:~/mnt/workspace/3128_android_rom$ ls out/target/product/
C68  generic  Tagus_C68  Tagus_Poke  Tagus_PokeP

#切换到adb模式

fzw@onyx:~/mnt/workspace/3128_android_rom/apps$ adb shell

#删除data/data/com.onyx  应用数据

root@Tagus_C68:/ # rm -r data/data/co  

#刷新        

root@Tagus_C68:/ # sync        

#重启                                               

root@Tagus_C68:/ # reboot

四、一些查找方法

1.通过find找指定在kepler目录下的名字为RK3026Device.java的类。

fzw@onyx:~/mnt/workspace/3128_android_rom$ find kepler/ -name RK3026Device.java

2.通过grep查找指定目录apps/AndroidSDK的特定字符“openFrontLight(”

fzw@onyx:~/mnt/workspace/3128_android_rom$ grep -nr "openFrontLight(" apps/AndroidSDK

3.通过hierarchyviewer快速查找当前界面的元素,根据adb链接的设备,打开要找的界面,即可看到界面布局元素

fzw@onyx:~/mnt/workspace/3128_android_rom/frameworks$ hierarchyviewer

五、常见错误

1.错误:

make: Entering directory `/home/fzw/mnt/workspace/3128_android_rom'
make: *** No rule to make target `out/target/product/Tagus_Poke/system/framework/framework-res.apk', needed by `out/target/product/Tagus_Poke/system/framework/framework.jar'.  Stop.

#报make  ....by....这个问题一般是依赖没有编进去,比如说编译framework的时候,当Res文件有改动的时候,要先编译Res文件。再编译framework主体,最后生成的framework-res.apk和framework.apk都需要push到设备中。

2.错误:

No command 'mmm' found, did you mean:
 Command 'mgm' from package 'mgm' (universe)
 Command 'vmm' from package 'vmm' (universe)
 Command 'mmd' from package 'mtools' (main)
 Command 'mmv' from package 'mmv' (universe)

#在 mmm packages/apps/RKUpdateService/中出现如下,因为 mmm指令之前,需要source代码。

3.错误:

make: Entering directory `/home/fzw/mnt/workspace/3128_android_rom'
make: Nothing to be done for `all_modules'.
make: Leaving directory `/home/fzw/mnt/workspace/3128_android_rom'

#出现下面的情况是因为前一次编译的代码跟现在编译的没有变化,修改一下再编译就行。

猜你喜欢

转载自blog.csdn.net/qq_35460159/article/details/82558050