1. 程式人生 > >Android Framework開發筆記

Android Framework開發筆記

一、前言

在framework區域性編譯之前,程式碼必須整體編譯過,形成完整的依賴(Android.mk)體系,才能區域性編譯。

二、編譯

1.make編譯,會重新產生依賴,實現依賴不完整不會導致無法編譯。比較消耗記憶體和時間

[email protected]:~/mnt/workspace/3128_android_rom$ make SystemUI

2.mmm編譯,不會重新產生依賴,實現依賴不完整會導致無法編譯。

[email protected]:~/mnt/workspace/3128_android_rom$ mmm frameworks/base/packages/SystemUI/

[email protected]
:~/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

[email protected]
:~/mnt/workspace/3128_android_rom$ adb remount

#把安卓系統被修改重新編譯的部分重新安裝到指定目錄
 

[email protected]:~/mnt/workspace/3128_android_rom$ adb push out/target/product/Tagus_C68/system/framework/framework.jar /system/framework/

[email protected]:~/mnt/workspace/3128_android_rom$ adb push out/target/product/Tagus_C68/system/framework/framework-res.apk /system/framework/

[email protected]
:~/mnt/workspace/3128_android_rom$ adb push out/target/product/Tagus_C68/system/priv-app/SystemUI.apk /system/priv-app/

#顯示adb日誌資訊

[email protected]:~/mnt/workspace/3128_android_rom$ adb shell logcat

#檢視當前輸出支援的裝置(注意:每更換一款裝置,都可能導致依賴缺失,需要重新make,加進依賴)

[email protected]:~/mnt/workspace/3128_android_rom$ ls out/target/product/
C68  generic  Tagus_C68  Tagus_Poke  Tagus_PokeP

#切換到adb模式

[email protected]:~/mnt/workspace/3128_android_rom/apps$ adb shell

#刪除data/data/com.onyx  應用資料

[email protected]_C68:/ # rm -r data/data/co  

#重新整理        

[email protected]_C68:/ # sync        

#重啟                                               

[email protected]_C68:/ # reboot

四、一些查詢方法

1.通過find找指定在kepler目錄下的名字為RK3026Device.java的類。

[email protected]:~/mnt/workspace/3128_android_rom$ find kepler/ -name RK3026Device.java

2.通過grep查詢指定目錄apps/AndroidSDK的特定字元“openFrontLight(”

[email protected]:~/mnt/workspace/3128_android_rom$ grep -nr "openFrontLight(" apps/AndroidSDK

3.通過hierarchyviewer快速查詢當前介面的元素,根據adb連結的裝置,開啟要找的介面,即可看到介面佈局元素

[email protected]:~/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'

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