1.说明
vendor.img的生成依赖system.img,原因是其中的一些符号、变量、分区、vendor依赖的包等都需要system.img中的信息。也就是说,谷歌的工厂镜像中的system.img和我们自己编译的有区别,所以直接刷入工厂镜像的vendor.img就会出现问题,因此需要我们自己生成vendor.img。
2.下载android-prepare-vendor工程
git clone https://github.com/anestisb/android-prepare-vendor.git
3.切换java环境
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_40/bin/javac 300
sudo update-alternatives --config java
选择4 (主要选择java-8变量),如下图:
4.进入android-prepare-vendor
执行命令:
sudo ./execute-all.sh -d angler -b MTC20F -o $(pwd) -i /home3/jerry/angler-mtc20f-factory-4355fe06.zip -k
参数详解:
-d 后面是设备代号,nexus6p是angler
-b build id,分支编译时的代号
-o 输出目录
-i 下载好的谷歌工厂镜像路径
-k (不懂,好像是保持所有工厂镜像,优化数据)
5.生成vendor目录
在对应文件夹($(pwd))下,如下图:
6.将vendor目录拷贝至android工程的根目录下
注意:由于此文件夹由sudo生成的,故应该改所属权限 sudo
chmown xxx:xxx vender
拷贝完成后,重新编译即可。