Android 編譯命令及選項

Android編譯命令及選項

1 運行build/envsetup.sh,該文件提供m,mm,mmm等命令

#. ./build/envsetup.sh

注意: . . 之間是空格

運行之後用help查看命令

#help

m 編譯整個android工程

mm 編譯當前目錄下的模塊

mmm path 編譯指定目錄下的模塊

2 配置參數

#tapas

運行該命令後會出現:

Build for the simulator or the device?
     1. Device
     2. Simulator

Which would you like? [1]

Build type choices are:
     1. release
     2. debug

Which would you like? [1]

Product choices are:
     1. emulator
     2. generic
     3. sim
You can also type the name of a product if you know it.
Which would you like? [generic]

以上產品選項是默認的,如果vendor/ 目錄下有產品,則會自動掃描進去.

3 如何在vendor下添加產品

以HTC爲例:

vendor/htc/dream-open 在配置時會出現如下錯誤:

build/core/product_config.mk:173: *** No matches for product "dream-open".

原因是:

vendor/htc/dream-open/htm_dream.mk 裏 PRODUCT_NAME := htc_dream ,所以dream-open要改爲htc_dream,還有文件夾命名不能有 – (中間),但可以有_(底下)

dream-open -> htc_dream

PRODUCT_NAME := htc_dream

PRODUCT_DEVICE := htc_dream


快速編譯system.img,可以使用這個命令:

#make systemimage

快速編譯boot.img,可以使用以下命令:

#make bootimage

快速編譯userdata.img,可以使用以下命令:

# make userdataimage-nodeps

但是,對於bootimage, 在不改變內存佈局的情況下,可以使用以下命令:

#cp ./arch/arm/boot/Image ./arch/arm/boot/kernel

#mkbootimg --kernel ./arch/arm/boot/kernel --ramdisk
../out/target/product/tcc8800/ramdisk.img --cmdline

console=ttyTCC,115200n8 --base 0x40000000 --pagesize 8192 --output
../out/target/product/tcc8800/boot.img

其實這些生成命令都在build/core/Makefile中.

生成boo.img的方法:

$(INSTALLED_BOOTIMAGE_TARGET):$(MKBOOTIMG) $(INTERNAL_BOOTIMAGE_FILES)

              $(MKBOOTIMG)  $(INTERNAL_BOOTIMAGE_ARGS) --output $@

......

生成system.img的方法:

define build-systemimage-target

     $(MKYAFFS2) -f $(mkyaffs2_extra_flags) $(TARGET_OUT) $(1)

生成userdata.img的方法

define build-userdataimage-target

mkdir -p $(TARGET_OUT_DATA)

$(MKYAFFS2) -f $(mkyaffs2_extra_flags) $(TARGET_OUT_DATA)
$(INSTALLED_USERDATAIMAGE_TARGET)

 同樣,ramdisk.img的生成方法爲:

BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img

 INSTALLED_RAMDISK_TARGET := $(BUILT_RAMDISK_TARGET)

$(INSTALLED_RAMDISK_TARGET): $(MKBOOTFS) $(INTERNAL_RAMDISK_FILES) |
$(MINIGZIP)

$(MKBOOTFS) $(TARGET_ROOT_OUT) | $(MINIGZIP) > $@

爲方便起見,也可以在Makefile中加入以下內容:

BUILT_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img

.PHONY: ramdiskimage

ramdiskimage: ${BUILT_RAMDISK_TARGET}

然後,就可以輸入:make ramdiskimage 來編譯ramdisk.img文件了

最簡單的方法是:

  out/host/linux-x86/bin/mkbootfs out/target/product/tcc8900/root |

   out/host/linux-x86/bin/minigzip >
out/target/product/tcc8900/ramdisk.img


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章