Build环境 1
0赞这里略过对android在手机上的文件系统框架的阐述(google或者baidu都能帮助你找到对应的信息),主要看google是如何把生成合适的 rootfs的工作整合到它的build体系当中,同时,会顺带看一下CyanogenMod中对应各种机型的build机制。
首先,来看一下Android的build系统中,使用到的编译选项和相关工具
具体的目录在:mydroid/build/tools/下
|-- acp
这是一个稍微改良的cp命令,用来应付在windows/MAC/Linux下的cp命令的缺陷,其中的README很值得一看!
|-- adbs
这是一个用来查看crash问题的工具,详细请看《Android调试工具之adbs》
|-- Android.mk
|-- apicheck
用来进行发布前的API检查(参见mydroid/build/core/tasks/apicheck.mk),是否新编译的系统中有破坏API兼容性或是非法的API
这里的代码是用Java写的用来检查编译时生成的API相关信息的xml文件(mydroid/framework/base/api/中),可以参考里面对于xml文件解析的代码
|-- apriori
实现prelink的工具,简单介绍参见(mydroid/bionic/linker/README.TXT)
|-- atree
为android SDK服务的一个工具,用来按照指定xxx.atree文件中的内容进行一些文件操作
|-- bin2asm
不太明白具体的用处,应该是用来应付mac上编译android一些与gcc相关的问题
|-- buildinfo.sh
生成target中的各种xxx.prop文件,如system.prop, build.prop等
|-- check_builds.sh
包装了diff,用来看2个发布版本之间变化
|-- check_prereq
device上进行ota升级时的工具之一
|-- compare_fileslist.py
与check_builds.sh配合完成版本比较的脚本
|-- droiddoc
Android更具javadoc的一些移植
|-- dump-package-stats
简单的查看一个jar/apk文件内的dex和其它文件的大小信息
|-- event_log_tags.py
处理event-log-tags的内容,关于event-log-tags文件的意义参见《Android学习之event-log-tags是神马》
|-- fileslist.py
简化的列出指定目录下所有文件及大小的脚本 -- 可以放入自己的工具库了使用:)
|-- findleaves.py
在指定目录中(可多个)找指定文件的脚本 -- 可以放入自己的工具库了使用:)
|-- fixlinebreaks.sh
把windows中的换行改为linux下的 -- 可以放入自己的工具库了使用:)
|-- fs_config
列出指定文件夹及文件的权限
|-- fs_get_stats
得到指定文件夹下文件的简单stats信息
|-- iself
判断文件是否是ELF格式
|-- isprelinked
判断文件是否是prelink过的
|-- java-event-log-tags.py
处理event-log-tags的内容,关于event-log-tags文件的意义参见《Android学习之event-log-tags是神马》
|-- kcm
key character map的工具, 相关资料参照:http://www.kandroid.org/online-pdk/guide/keymaps_keyboard_input.html#androidKeymapKeyCharMap
!!!!!! ???
|-- merge-event-log-tags.py
处理event-log-tags的内容,关于event-log-tags文件的意义参见《Android学习之event-log-tags是神马》
|-- mktarball.sh
与fs_get_stats配合而执行的打包工具
|-- print_module_licenses.sh
显示当前目录下所有module信息
|-- releasetools
-- check_target_files_signatures
|-- common.py
|-- edify_generator.py
|-- img_from_target_files
|-- ota_from_target_files
`-- sign_target_files_apks
|-- rgb2565
rgb转换工具
|-- signapk
命令行下对jar包签名的工具
|-- soslim
Android定制的编译工具之一,简单介绍参见(mydroid/bionic/linker/README.TXT)
|-- warn.py
解析Android系统编译log的工具
`-- zipalign
zipfile的对齐工具,参见该文件夹下的README.TXT
在来看看Android编译系统中定义的一些通用XXX.mk文件
mydroid/build/core/
|--armelflib.x
|--armelf.x
|--armelf.xsc
|-- base_rules.mk
|-- binary.mk
|-- build_id.mk
|-- build-system.html
|-- checktree
|-- cleanbuild.mk
|-- cleanspec.mk
|-- clear_vars.mk
|-- combo
|-- config.mk
|-- copy_headers.mk
|-- definitions.mk
|-- device.mk
|-- dex_preopt.mk
|-- distdir.mk
|-- droiddoc.mk
|-- dumpvar.mk
|-- dynamic_binary.mk
|-- envsetup.mk
|-- executable.mk
|-- filter_symbols.sh
|-- find-jdk-tools-jar.sh
|-- help.mk
|-- host_executable.mk
|-- host_java_library.mk
|-- host_native_test.mk
|-- host_prebuilt.mk
|-- host_shared_library.mk
|-- host_static_library.mk
|-- java_library.mk
|-- java.mk
|-- legacy_prebuilts.mk
|-- main.mk
|-- Makefile
|-- multi_prebuilt.mk
|-- native_test.mk
|-- node_fns.mk
|-- notice_files.mk
|-- package.mk
|-- pathmap.mk