This manual is for program, version version.
• android: |
1 android build system 1.1 architecture 1.1.1 build figure 1.1.2 add logs $(info ) 1.1.3 configuration // todo 1.1.4 environment setup script: build/envsetup.sh zzy@zzy-ubuntu:$ source build/envsetup.sh HTC flags cleared. including device/htc/common/vendorsetup.sh including device/generic/x86/vendorsetup.sh including device/generic/armv7-a-neon/vendorsetup.sh including device/generic/mips/vendorsetup.sh including vendor/qcom/proprietary/common/vendorsetup.sh including vendor/qcom/proprietary/vendorsetup.sh including sdk/bash_completion/adb.bash zzy@zzy-ubuntu:$ hmm Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment: - lunch: lunch <product_name>-<build_variant> - tapas: tapas [<App1> <App2> ...] [arm|x86|mips|armv5] [eng|userdebug|user] - 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, but not their dependencies. - mmm: Builds all of the modules in the supplied directories, but not their dependencies. - mma: Builds all of the modules in the current directory, and their dependencies. - mmma: Builds all of the modules in the supplied directories, and their dependencies. - 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. 1.1.5 function definitions // todo 1.1.6 main make recipes // todo 1.1.7 cleaning If you change configuration when make or make module, the build output would be automaically pruned using installclean *** Build configuration changed: .... *** Forcing "make installclean"... 1.1.8 module build templates Moudle build templates list add an Android.mk template (1) LOCAL_PATH := $(call my-dir) (2) include $(CLEAR_VARS) # action (3) LOCAL_VARIABLE_1 := value_1 LOCAL_VARIABLE_2 := value_2 ... (4) include $(BUILD_MODULE_TYPE) # action (1) Tells the build template where the current module is located. (2) Clears all previously set LOCAL_* variables that might have been set for other modules. (3) Sets various LOCAL_* variables to module-specific values. (4) Invokes the build template that corresponds to the current module’s type. example LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SHARED_LIBRARIES := liblog LOCAL_SRC_FILES := service_manager.c binder.c LOCAL_MODULE := servicemanager ifeq ($(BOARD_USE_LVMX),true) LOCAL_CFLAGS += -DLVMX endif include $(BUILD_EXECUTABLE) 1.1.9 output // todo more info [1] 2 kernel build system // todo 3 build commands hboot cd hboot/ make clean make env-msm8226 -j8 sudo htc_fastboot flash hboot out/target/product/msm8226/hboot.img kernel make ARCH=arm CROSS_COMPILE=arm-eabi- a5dwg_defconfig make ARCH=arm CROSS_COMPILE=arm-eabi- -j8 build framework module // build services source build/envsetup.sh; partner_setup htc_a3qhdul A3QHDUL_Generic_WWE_DEBUG make services -j8 view version lunch htc_a5dug-eng remote build vendor/tuxera/exfat/tuxera_update_htc.sh -> do_remote_build() build module source build/envsetup.sh; partner_setup xxx; make services -j8 // services.jar make -j8 bootimage // boot.img compiler error 1. mrproper enter kernel directory make mrproper make distclean 2. fatal error: zconf.hash.c: No such file or directory rm -rf out/ retry reference:[2] reference [1] http://www.it-ebooks.info/book/2073/ 《Embedded Android》chapter 4: the build system [2] http://forum.xda-developers.com/showthread.php?t=1604540&page=3 [3] http://lwn.net/Articles/21835/ [4] https://www.kernel.org/doc/Documentation/kbuild/modules.txt ------------------------ android repo study 对呀,慢慢看源代码,就会搞清楚哪些文件是怎么来的。 是从repo这个脚本为入口点开始吧。 是。 那个还有一个trick,就是那个脚本既可以bash运行,又可以用python运行。 #!/usr/bin/env python -- 这一行? 不是。现在的版本好像已经改了,以前我看到版本是可以的。 我们reop init总是失败,所以repo init的时候,总是用的老的工程里面的。 找你们repo的管理人解决呀。 假设你们自己的镜像不就解决了。 架设。 有什么教程吗? 我可以现在自己的局域网pc中实验吗? 当然可以。 repo init --repo-url=xxxx ... 很简单的事。 qualcomm的repo应该是用的被他们改过的版本,应该没有这个问题。 --------------------------- android function // Android编译PRODUCT_COPY_FILES如果碰到重复的项目如何取值 http://blog.csdn.net/howellzhu/article/details/42841669