锅底灰

Build环境 1

0
阅读(1078) 评论(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

    |-- lsd

    !!!!!! ???

    |-- 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