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

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3672341.html

Android 编译系统模块 3相关推荐

  1. android mm 修改路径,Android 编译系统模块

    在开发过程中,尤其是Framework相关开发时,有时候需要重新编译资源文件.编译顺序和注意事项如下: 1,资源文件位置:frameworks/base/core/res 2,编译后生成的文件:fra ...

  2. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)...

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

  3. android编译系统学习 .

    android的编译文件主要依赖于mk文件,其源码编译名字是Android.mk,而不我们常见的Makefile文件. android目录下的Makefile文件,include了build/core ...

  4. Android编译系统入门(二)

    Android.mk的使用方法 在上一篇Android编译系统入门(一)中我们只要介绍了Android系统使用make命令默认编译的依赖树是droid,而droid是一个伪目标,它有两个先决条件dro ...

  5. Android编译系统简要介绍和学习计划

    在Android源码环境中,我们开发好一个模块后,再写一个Android.mk文件,就可通过m/mm/mmm/make等命令进行编译.此外,通过make命令还可制作各种系统镜像文件,例如system. ...

  6. Android编译默认英语,Android 编译系统 (一)

    1.Makefile & Android build system 在进行讲述Android编译系统之前,应该先了解一下编译时所使用的Makefile,或者说复习下这方面的知识,这样才能更好的 ...

  7. 【转载】Android编译系统Makefile(Android.mk)写法

    声明:本文转载自http://www.cnblogs.com/hesiming/archive/2011/03/15/1984444.html 版权和最终解释权给原作者所有,谢谢. android编译 ...

  8. android.bp 编译,Android编译系统中的Android.bp

    Android.bp,是用来替换Android.mk的配置文件. 它使用Blueprint框架来解析,最终转换成Ninja文件. 与Android.mk不同的是,Android.bp是纯粹的配置文件, ...

  9. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

最新文章

  1. 模拟namenode挂掉利用secondary namenode恢复
  2. angularjs组件间通讯_详解Angular2组件之间如何通信
  3. Java基于FTPClient上传文件到FTP服务器
  4. 单片机位寻址举例_单片机的寻址方式
  5. Sharepoin学习笔记—架构系列--03 Sharepoint的处理(Process)与执行模型(Trust Model) 2
  6. C语言结构体对齐[转]
  7. python爬虫的时候要用的url修改方法总结
  8. 博士毕业论文英文参考文献换行_不用写毕业论文?一年制硕士真的不是闹着玩的吗...
  9. sublime3环境
  10. 2019电子设计大赛:纸张计数显示装置
  11. excel频率分布表的绘制
  12. 交流异步电机矢量控制(一)——电机模型及其坐标变换
  13. EOVA的下拉级联实现过程
  14. 【转】TabHost详解
  15. 0X0000007B蓝屏
  16. unity3d 700种 材质球_活动策划:这10种气球创意玩法,让活动现场的布置更高级。...
  17. 解决Mybatis报错问题:Type interface com.tjcu.dao.UserDao is not known to the MapperRegistry.
  18. 程序猿生存指南-34 我与清华
  19. ZJU PAT 1010
  20. 20150128-堆雪人

热门文章

  1. Tensorflow【实战Google深度学习框架】—使用 TensorFlow 实现模型
  2. android 单例模式详解,android开发设计模式之——单例模式详解
  3. j90度度复数运算_看得懂的复数
  4. linux 编辑脚本 vi,linux中vi编辑器的练习心得
  5. python中md5_Python的md5是什么意思
  6. python图形用户界面设计报告_19.1 Python图形用户界面开发工具包
  7. python空值填充为固定值_Python基础:numpy中空值怎样设置
  8. modelandview跳转页面404_Thinkphp制作404跳转页
  9. 你不知道的三种在for循环中使用setTimeout的方法
  10. 预计2021年电视出货量有所上涨,网络推广外包之下OLED大肆布局