Android系统编译模块化

mm指从当前目录开始编译,mmm是从指定目录下搜寻Android.mk编译。

模块编译完成后,回到source code所在根目录运行make snod进行打包。

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-4.3.1_r1

opcode-gen 目录里面有个指令映射表,说是添加指令就写在里面。 这只是个字符串对应的指令表,还要操作其他部分才行。

使用m、mm、mmm命令之前要在android源码目录下执行命令

. build/envsetup.sh

模块 make命令 mmm命令
init make init mmm system/core/init
zygote make app_process mmm frameworks/base/cmds/app_process
system_server make services mmm frameworks/base/services
java framework make framework mmm frameworks/base
framework资源 make framework-res mmm frameworks/base/core/res
jni framework make libandroid_runtime mmm frameworks/base/core/jni
binder make libbinder mmm frameworks/native/libs/binder
上述mmm命令同样适用于mm/mma/mmma,编译系统采用的是增量编译,只会编译发生变化的目标文件。当需要重新编译所有的相关模块,则需要编译命令后增加参数-B,比如make -B [module_name],或者 mm -B [module_path]。

. Dalvik 之编译
为了能够更方便的调试dalvik,我们需要编译一个在X86上运行的dalvik和相关工具。编译步骤如下:

首先进入到Android 源码根目录
source build/envsetup.sh (不是网上有些文章写的只输入 build/envsetup.sh)
lunch 2 在此之后可以看到TARGET_PRODUCT 为sim。TARGET_ARCH为x86
make 或者 make dalvikvm 和 make dexdump (make 为编译所有程序,比较耗时,有时甚至某些模块编译不过,如为节省时间,可使用make dalvikvm直接编译dalvik, make dexdump直接编译dexdump)

dalvik编译有一些其他路径的依赖项,必须使用mmma 加目录的形式才能编译。https://blog.csdn.net/virtualpower/article/details/5660966

http://gityuan.com/2016/03/19/android-build/

猜你喜欢

转载自blog.csdn.net/bme314/article/details/80500107