zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    POJ2516 构图+k次费用流
    POJ 1511 最短路径之和(spfa或dijkstra+heap)
    windows中配置mongodb
    原型设计
    Erlang的参考资源
    用Erlang实现递归查找文件
    list相关的习题
    springmvc基础知识
    汇编实验4
    实验3 转移指令跳转原理及其简单应用编程
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/2134491.html
Copyright © 2011-2022 走看看