MTK Project rename/clone

Rename/Clone Project指的是对现有的Project重命名或者创建出新的Project。
后面指令中使用的变量含义如下:
$BASE_PROJECT 指的是新Project的基础Project
$NEW_PROJECT 指的是将创建的新的Project
$PLATFORM 指的是平台信息,如MT8735
$COMPANY 指的是开案公司的名字,如lenovo、huawei等等

Project Rename/Clone for Preloader
cd bootable/bootloader/preloader/custom
If Rename
mv ${BASE_PROJECT} ${NEW_PROJECT}
mv ${NEW_PROJECT}/${BASE_PROJECT}.mk ${NEW_PROJECT}/${NEW_PROJECT}.mk
If Clone
cp -r ${BASE_PROJECT} ${NEW_PROJECT}
mv ${NEW_PROJECT}/${BASE_PROJECT}.mk ${NEW_PROJECT}/${NEW_PROJECT}.mk
Modify(replace all $BASE_PROJECT strint with $NEW_PROJECT)
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g ${NEW_PROJECT}/${NEW_PROJECT}.mk

Project Rename/Clone for LK
cd bootable/bootloader/lk
If Rename
mv project/${BASE_PROJECT}.mk project/${NEW_PROJECT},mk
mv targe/${BASE_PROJECT} target/${NEW_PROJECT}
If Clone
cp project/${BASE_PROJECT}.mk $project/{NEW_PROJECT}.mk
cp -r targe/${BASE_PROJECT} target/${NEW_PROJECT}
Modify(replace all $BASE_PROJECT strint with $NEW_PROJECT)
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g project/${NEW_PROJECT}.mk
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g target/${NEW_PROJECT}/include/target/cust_usb.h
Project Rename/Clone for Kernel
cd kernel-3.10
If Rename
mv -r driver/misc/mediatek/mach/mt6735/${BASE_PROJECT} driver/misc/mediatek/mach/mt6735/${NEW_PROJECT}
mv arch/arm64/boot/dts/${BASE_PROJECT}.dts arch/arm64/boot/dts/${NEW_PROJECT}.dts
mv arch/arm64/configs/${BASE_PROJECT}_defconfig arch/arm64/configs/${NEW_PROJECT}_defconfig
mv arch/arm64/configs/${BASE_PROJECT}_debug_defconfig arch/arm64/configs/${NEW_PROJECT}_debug_defconfig
If Clone
cp -r driver/misc/mediatek/mach/mt6735/${BASE_PROJECT} driver/misc/mediatek/mach/mt6735/${NEW_PROJECT}
cp arch/arm64/boot/dts/${BASE_PROJECT}.dts arch/arm64/boot/dts/${NEW_PROJECT}.dts
cp arch/arm64/configs/${BASE_PROJECT}_defconfig arch/arm64/configs/${NEW_PROJECT}_defconfig
cp arch/arm64/configs/${BASE_PROJECT}_debug_defconfig arch/arm64/configs/${NEW_PROJECT}_debug_defconfig
Under kernel-3.10/arch/arm64
Modify(replace all $BASE_PROJECT strint with $NEW_PROJECT)
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g configs/${NEW_PROJECT}_defconfig
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g configs/${NEW_PROJECT}_debug_defconfig
Project Rename/Clone for Android
If Rename
mv device/${COMPANY}/${BASE_PROJECT} device/${COMPANY}/${NEW_PROJECT}
mv device/${COMPANY}/${NEW_PROJECT}/full_${BASE_PROJECT}.mk device/${COMPANY}/${NEW_PROJECT}/full_${NEW_PROJECT}.mk
mv vendor/mediatek/proprietary/custom/${BASE_PROJECT} vendor/mediatek/proprietary/custom/${NEW_PROJECT}
mv vendor/mediatek/proprietary/trustzone/project/${BASE_PROJECT}.mk vendor/mediatek/proprietary/trustzone/project/${NEW_PROJECT}.mk
mv md32/md32/project/${BASE_PROJECT}.mk md32/md32/project/${NEW_PROJECT}.mk
If Clone
cp -r device/${COMPANY}/${BASE_PROJECT} device/${COMPANY}/${NEW_PROJECT}
mv device/${COMPANY}/${NEW_PROJECT}/full_${BASE_PROJECT}.mk device/${COMPANY}/${NEW_PROJECT}/full_${NEW_PROJECT}.mk
cp -r vendor/mediatek/proprietary/custom/${BASE_PROJECT} vendor/mediatek/proprietary/custom/${NEW_PROJECT}
cp vendor/mediatek/proprietary/trustzone/project/${BASE_PROJECT}.mk vendor/mediatek/proprietary/trustzone/project/${NEW_PROJECT}.mk
cp md32/md32/project/${BASE_PROJECT}.mk md32/md32/project/${NEW_PROJECT}.mk
Modify(replace all $BASE_PROJECT strint with $NEW_PROJECT)
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g device/${COMPANY}/${NEW_PROJECT}/AndroidProducts.mk
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g device/${COMPANY}/${NEW_PROJECT}/BoardConfig.mk
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g device/${COMPANY}/${NEW_PROJECT}/device.mk
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g device/${COMPANY}/${NEW_PROJECT}/full_${NEW_PROJECT}.mk
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g device/${COMPANY}/${NEW_PROJECT}/vendorsetup.sh
sed -i s/${BASE_PROJECT}/${NEW_PROJECT}/g vendor/mediatek/proprietary/custom/${NEW_PROJECT}/Android.mk

If share libraries with ${BASE_PROJECT}(目前共享库的方法可能有一点问题,建议使用下面的非共享库的方法)
sed -i s#vendor/${COMPANY}/libs/${NEW_PROJECT}#vendor/${COMPANY}/libs/${BASE_PROJECT}#g device/${COMPANY}/${NEW_PROJECT}/device.mk
If not share libraries with ${BASE_PROJECT}
cp -r vendor/${COMPANY}/libs/${BASE_PROJECT} vendor/${COMPANY}/libs/${NEW_PROJECT}
为什么要与Base Project 共享库文件?
Mediatek 的 Package里面有一些文件需要做binary release,这其中有一些是project相关的的
如果维护的Project众多,在以前就需要把这些库文件为每个Project复制一份,这样既耗时又占用空间
在现在的机制中,我们可以设定新的Project和Base Project共享库文件。这样所有库文件只需要保存一份即可
文件device/$COMPANY/$NEW_PROJECT/device.mk 中的如下一行显示了当前Project是和哪个Projece共享库文件的
$(call inherit-product-if-exists,vendor/${COMPANY}/libs/${BASE_PROJECT}/device-vendor.mk)
补充说明
在设置好变量 COMPANY,PLATFORM,NEW_PROJECT,BASE_PROJECT的前提下前面操作过程中的各个指令可以很方便转化为脚本

你可能感兴趣的:(MTK相关)