最近有个需求要给不同产品类型走不同的编译规则,使得make的时候走不同的mk文件来达到差异化定制。也就是在source build/envsetup.sh之后,在lunch选项里面要增加产品选项,其实对Android来说就是定制新设备,这样我们就不用切分支,也不用每次编译前修改mk文件。
1、在device\qcom下面复制一个你想参考的产品型号的文件夹,比如msm8953_64,然后重命名为你的产品型号,比如my_product,然后修改my_product里面的AndroidProducts.mk文件:
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/my_product.mk
2、重命名my_product下的msm8953_64.mk为my_product.mk,并修改里面的PRODUCT_NAME和PRODUCT_DEVICE的值为my_product
PRODUCT_NAME := my_product
PRODUCT_DEVICE := my_product
3、在device\qcom\common\vendorsetup.sh中增加你的类型,在末尾增加add_lunch_combo my_product-userdebug
4、然后再次source build/envsetup.sh,lunch的时候就看到你的产品型号了,然后就可以编译出你的产品,在out/target/product/my_product,想修改mk文件就修改device/qcom/my_product里面的配置就行。
5、在vendor底下搜“msm8953_64”,在一些公共mk文件中增加“my_product”;复制一些msm8953_64命名的文件夹,重命名为my_product,并修改其中的msm8953_64为my_product。