需求分析:
实际项目中,我们往往需要在同一个git分支支持多个项目,为此我们需要为不同的项目创建各自的vendor,把项目的差异进行隔离的同时,也能最大化复用代码,保证项目的共性问题可以及时同步到其他的项目中。下面是详细的实现方法:
创建vendor:
1. ./vendor/mediatek/libs/spm8666p1_64_car
2../vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6771/spm8666p1_64_car
3. ./vendor/mediatek/proprietary/custom/spm8666p1_64_car
4 ../vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/spm8666p1_64_car
5. ./vendor/mediatek/proprietary/bootable/bootloader/lk/target/spm8666p1_64_car
6 ../device/mediateksample/spm8666p1_64_car
1、preloader
e3fcf90344c46467d60f0ce53b5bf4f78b2e7ed0
1)ca_mtk8666_android9.0_base3.0/vendor/mediatek/proprietary/bootable/bootloader/preloader/custom 下新建项目 spm8666+项目名+_64_car
2)修改文件名spm8666s203_64_car.mk -> spm8666+项目名+_64_car
2、lk
8ec65a2808f0201824ac0a4e836ff8a65bffa75c
对应目录:ca_mtk8666_android9.0_base3.0/vendor/mediatek/proprietary/bootable/bootloader/lk/
1)新建lk项目mk配置文件
project/spm8666s203_64_car.mk
2)新建项目文件夹,如下
lk/target/spm8666s203_64_car/
4、kernel
a0551d354948fec49b76cb8952c7086a765c8feb
1)新建dts
A arch/arm64/boot/dts/mediatek/spm8666s203_64_car.dts
A arch/arm64/boot/dts/mediatek/spm8666s203_64_car/cs199.dtsi
2)新建defconfig
A arch/arm64/configs/spm8666s203_64_car_debug_defconfig
A arch/arm64/configs/spm8666s203_64_car_defconfig
3)新建dws文件
A drivers/misc/mediatek/dws/mt6771/spm8666s203_64_car.dws
备注:
系统如何制定用哪个dws文件?答案:spm8666s203_64_car.dts定义了
+#include <spm8666s203_64_car/cust.dtsi>
+#include "spm8666s203_64_car/cs199.dtsi"
粗体字部分必现跟项目名一致,编译阶段会自动解析并匹配spm8666s203_64_car.dws。
编译过程:spm8666s203_64_car.dws -> cust.dtsi -> merge其余dts文件,最终生成spm8666s203_64_car.dtbo
另外,defconfig的配置必现跟项目名一致。
CONFIG_BUILD_ARM64_DTB_OVERLAY_IMAGE_NAMES="mediatek/spm8666s203_64_car"
CONFIG_ARCH_MTK_PROJECT="spm8666s203_64_car"
5、device
a351fb2c5d3fbb69ee22e2d1a5ebaa8c20161169
1)device/mediateksample/目录新建项目:spm8666+项目名+_64_car
2)cd device/mediateksample/spm8666+项目名+_64_car,并修改各个文件的项目名为新项目名
3)修改文件名:full_spm8666s203_64_car.mk 为spm8666+项目名+_64_car
6、vendor
75b314654041b2d2316c4e6e73fca15838c4be85
1)ca_mtk8666_android9.0_base3.0/vendor/mediatek/proprietary/custom 下新建项目 spm8666+项目名+_64_car,并替换文件中的项目名
2)vendor/mediatek/proprietary/tinysys/freertos/source/project/CM4_A/mt6771/ 下新建项目spm8666+项目名+_64_car
3)vendor/mediatek/libs/ 下新建项目spm8666+项目名+_64_car
替换文本内容工具
首先搜索关键字,找到需要替换的文件。然后VIM打开,在VIM中用下面的方法替换:
:%s/被替换字符/新字符/g
例如:
:%s/spm8666s203_64_car/spm8666s311_64_car/g