framework调试
framework調試??
1.cd framework/base
 2.在此目錄下執行 mm
 3.adb push out/target/product/paz00/system/framework/framework.jar system/framework
 4.重新運行模擬器,可以看到效果
 ?修改frameworks/policies/base/phone/ 下文件
 使用命令make android.policy
 在虛擬機system/farmework/下的文件如下,根據修改文件的位置選擇不同的make參數
 monkey.jar
 framework-tests.jar
 am.jar
 framework-res.apk
 pm.jar
 core.jar
 input.jar
 ime.jar
 android.policy.jar
 android.test.runner.jar
 ext.jar
 services.jar
 javax.obex.jar
 framework.jar
 svc.jar
 bmgr.jar
修改android system文件夾權限
具體操作:
lixinso@lixinso-desktop:~$?adb devices?
 List of devices attached?
 emulator-5554??? device
lixinso@lixinso-desktop:~$?adb shell?
 #?mount?
 rootfs / rootfs ro 0 0
 tmpfs /dev tmpfs rw,mode=755 0 0
 devpts /dev/pts devpts rw,mode=600 0 0
 proc /proc proc rw 0 0
 sysfs /sys sysfs rw 0 0
 tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
 none /dev/cpuctl cgroup rw,cpu 0 0
 /dev/block/mtdblock0 /system yaffs2 ro 0 0?
 /dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
 /dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
 /dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
# mount -o remount /dev/block/mtdblock0 /system?
# mount?
 rootfs / rootfs ro 0 0
 tmpfs /dev tmpfs rw,mode=755 0 0
 devpts /dev/pts devpts rw,mode=600 0 0
 proc /proc proc rw 0 0
 sysfs /sys sysfs rw 0 0
 tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
 none /dev/cpuctl cgroup rw,cpu 0 0
 /dev/block/mtdblock0 /system yaffs2 rw 0 0?
 /dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
 /dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
 /dev/block//vold/179:0 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
 #
mount完就可以任意修改刪除拉~~~~
adb push out/target/product/msm7627_ffa/system/framework/services.jar system/framework/services.jar
[轉]Android?重新編譯資源文件
在開發過程中,尤其是Framework相關開發時,有時候需要重新編譯資源文件.編譯順序和注意事項如下:
1,資源文件位置:frameworks/base/core/res
2,編譯后生成的文件:framework-res.apk 另外com.android.internal.R會更新這個R.java所在目錄為/out/target/common/R/com/android /internal.
3,編譯資源后,必須重新編譯framework.jar.
4,如果在frameworks/base/core/res執行mm是并不重新編譯,請使用toutch ### 命令
???###代表目錄下的一個文件.
5,資源文件要小寫.
6,如果沒有必要,不要編譯資源文件,可以用其他方式使用資源,比如將資源使用adb push 傳到某個目
???錄,程序中直接指定具體目錄.我在編譯資源過程中遇到一些奇怪的問題,比如有時候許多圖標會顯
???示錯誤,原因猜測跟重新編譯資源有關,可以試著重新編譯services.jar并替換看看.
?
舉一個例子:假如我想在WindowManagerService.java中使用一個圖片資源pic.png.順序如下.
1,將文件pic.png拷貝到位置:frameworks/base/core/res/res/drawable下.
2,在frameworks/base/core/res/res/drawable目錄下執行touch pic.png.
3,進入目錄frameworks/base/core/res/ 執行mm命令, 編譯?framework-res.apk
4,執行完后com.android.internal.R 會新生成一個R.drawable.pic的引用.在程序中使用即可.
5,在目錄frameworks/base/ 下執行mm 編譯?framework.jar.
6,在WindowManagerService.java中使用com.android.internal.R.drawable.pic,使用完后保 存文件.
7,進入目錄frameworks/base/services/java/?執行mm 編譯??services.jar
8,替換機器上(虛擬機或者真機)的jar apk文件.
??adb push framework-res.apk /system/framework/
??adb push?services.jar /system/framework/
??adb push framework.jar /system/framework/
??執行命令時注意framework-res.apk 的真實路徑.
9,reboot 機器,查看修改結果.大功告成!
[轉]Android project 的常用編譯方法
0/ 準備工作 (生成mm等命令,具體參考: ~/mydonut/build/envsetup.sh)$ cd mydonut
$ sh . build/envsetup.sh
1/ 編譯項目 (Package: out/...,鏡像文件路徑:~/mydonut/out/target/product/generic)
$ make
2/ 創建SDK (Package SDK: out/host/darwin-x86/sdk/android-sdk_eng.<build-id>-x86.zip)
$ make sdk
3/ 創建ADT (Package ADT: ~/mysdk/android-eclipse-<buildnumber>.zip)
$ development/tools/eclipse/scripts/build_server.sh ~/mysdk $USER
4/ 編譯模塊 (訪問模塊對應的目錄,執行mm命令,Package: ~/mydonut/out/target/product/generic/system/{model-name}/{submodel-name}.**)
$ cd frameworks/
$ mm
該system目錄對應的就是設備/模擬器運行環境對應的system目錄,我 們講新生成的模塊文件(*.so/*.jar/*.apk/...)上傳到運行環境下的對應目錄后,重啟設備生效
如果是應用程序(*.apk),除了Launcher應用需要重啟,其他應用均不需要重啟設備。
下面以更新framework為例,Package: ~/mydonut/out/target/product/generic/system/framework/framework.jar
4.1 修改framwork程序(~mydonut/framework/...),并訪問framework目錄,執行mm命令,編譯新的 framework.jar程序
$ cd framework
$ mm
其他模塊,如庫文件和應用程序也可以用同樣的方法編譯;應 用程序還可以通過eclipse創建android 應用程序安裝包。
4.2 首先我們運行模擬器(如果是手機,則通過USB連上終端)
$ cd {ANDROID SDK}/tools
$ ./emulator -avd {AVD_NAME}
4.3 然后通過shell命令,設置設備/system目錄的寫權限
$ ./adb shell
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
# cd /system/bin
# cat sh > su
# chmod 4755 su
# exit
4.4 上傳framework.jar到對應的運行環境目錄
$ ./adb push {MYDONUT_OUT_PATH}/target/product/generic/system/framework/framework.jar /system/framework
4.5 通過命令,重啟設備,更新生效。
$ ./adb shell
# stop
# start
注意:如果要關掉模擬窗口后 生效,需要通過make命令,編譯最后一次編譯后的改動,生成新的img鏡像文件,并更新到SDK,或生成新的SDK。
附1:命令注解
Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
附2:參考文檔
~/mydonut/development/docs/howto_SDK_git_cygwin.txt
~/mydonut/development/docs/howto_build_SDK.txt
~/mydonut/development/docs/howto_use_cupcake_sdk.txt
附3:輸出目錄
~/mydonut/out/target/common/obj/JAVA_LIBRARIES
.jar程序包的完整輸出目錄,含有SDK中標志為@hide的程序和接口, 應用程序中需要這些借口可以引入相關的.jar程序。
~/mydonut/out/host/linux-x86/bin
存放相關的工具tools目錄
附4:創建完整的java項目
$ cp ./development/ide/eclipse/.classpath .
打開Eclipse,新增一個已經創建的java項目,執行mydonut目錄,點擊finish,完成項目的創建,可以查看項目下所有的 java程序。
網址:http://www.blogjava.net/anymobile/articles/296462.html 分類:?android solve
本文轉自wanqi博客園博客,原文鏈接:http://www.cnblogs.com/wanqieddy/archive/2011/08/11/2134491.html如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的framework调试的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: SQL Server误区30日谈-Day
 - 下一篇: jQuery |淡入淡出