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'

#出現下面的情況是因爲前一次編譯的代碼跟現在編譯的沒有變化,修改一下再編譯就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章