android 源碼下如何將修改編入image 以及其他遇到問提總結

1.          編譯報錯,找不到R相關資源
在源碼目錄下新建一個應用,或者複製其它應用時,常出現這個錯誤。
1)         什麼是R.java
R.java中編譯時自動生成的,工程用到所有的資源,都會用到R.java
2)         何時生成
在源碼根目錄下make全部代碼時,纔會對每個模塊生成R.java
對資源更改後也會重新成生R.java
3)         生成在哪裏
out/target/common/obj/APPS/程序名/…../R.java (用find找一下)
4)         解決方法
只要把相關的R.java都刪掉
再更新資源(res目錄)中一個資源文件(xml),使得R.java重新生成
重新mm
2.          查看當前堆棧調用關係
$ rm /data/anr/traces.txt                 清除之前log信息,因爲log信息是追加到此文件中的
$ ps 找應用對應進程號
$ kill -3 進程號                    該進程當前的堆棧調用寫入traces.txt
$ cat /data/anr/traces.txt                 查看堆棧信息
3.          修改framework帶來的界面顯示不正常
重編公共控件時,新生成了framework.jar,常用把它複製到設備中/system/framework/目錄下的方法調試,有時會遇到替換framework.jar帶來的資源不對的問題,即有些文字和圖片顯示不正常了。
這是由於framework.jar和system目錄中其它的資源ID不統一造成的。解決辦法是重做system.img並把它燒寫到系統中(參見燒寫文檔),以下兩種方法重做system.img
1)         使用打包命令
$ out/host/linux-x86/bin/mkyaffs2image -f out/target/product/qsd8250_surf/system  out/target/product/qsd8250_surf/system.img
2)         在編譯時加snod參數,以重建系統鏡像(system.img)
$ mm snod
4.          打印當前類名和包名
1)         打印當前類名
Log.d(“TEST”, “class “ + this);
2)         打印當前包名
Log.d(“TEST”, “package” + context.getPackageName());
5.          程序中等待的實現
import java.lang.Thread;               // sleep屬於Thread類

try {            // sleep必須使用try
         Thread.sleep(50);
} catch (InterruptedException e) {
}
發佈了44 篇原創文章 · 獲贊 32 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章