编译Android 8.1 并刷入Nexus 6P


-----------------AOSP Android源码----------------
源码下载:
https://lug.ustc.edu.cn/wiki/mirrors/help/aosp


cd ~/bin
#curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' | base64 -d > ~/bin/repo
chmod a+x ~/bin/repo


# cd ~/work ;
mkdir aosp; cd aosp;
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest

查看所有的分支:
cd .repo/manifests/; git branch -a

从官网查到Nexus 6P较新的分支是 android-8.1.0_r50  (OPM7.181105.004)
https://source.android.com/setup/start/build-numbers

下载这个分支的代码:
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r50
repo sync


-------------内核-------------------
下载内核代码(官网)
    https://source.android.com/setup/build/building-kernels 
    在https://android.googlesource.com/kernel/msm/+refs 检查所有angler分支,
    找到android-msm-angler-3.10-oreo-m7后进入,下载内核代码压缩包,解压在aosp/kernel/msm目录:
https://android.googlesource.com/kernel/msm/+/android-msm-angler-3.10-oreo-m7


--------------二进制驱动---------------------
到官网下载Nexus 6P binaries for Android 8.1.0 (OPM7.181105.004)
对应的Vendor image 和 高通的设备驱动 
https://developers.google.com/android/drivers#angleropm7.181105.004

分别解压到AOSP根目录,执行脚本后一个个确认,最后一步输入"I ACCEPT"。

-------------------------
修改Jack的配置文件prebuilts/sdk/tools/jack-admin
找到start-server函数,添加选项"-Xmx4096m":
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

如果是虚拟机,内存设置为8G以上,否则容易出现内存不足问题。

------------编译内核-------------

流程参考官网 https://source.android.com/setup/build/building-kernels
cd aosp/kernel/msm
export ARCH=arm64
export CROSS_COMPILE=/home/konga/bin/aarch64-linux-android-4.9/bin/aarch64-linux-android-
make angler_defconfig
make
编译完后把arch/arm64/boot/Image.gz-dtb 复制到aosp/device/huawei/angler-kernel/
cp arch/arm64/boot/Image.gz-dtb ../../device/huawei/angler-kernel/

或者导出如下变量:
export TARGET_PREBUILT_KERNEL=$KERNEL_DIR/arch/arm64/boot/Image.gz-dtb

---------------编译AOSP------------------
source build/envsetup.sh
lunch #选择28. aosp_angler-userdebug
make -j4

进入out/target/product/angler

    android-info.txt       fake_packages         previous_build_config.mk  system
    boot.img               gen                   ramdisk.img               system.img
    build_fingerprint.txt  installed-files.json  ramdisk-recovery.img      userdata.img
    cache                  installed-files.txt   recovery                  vendor
    cache.img              kernel                recovery.id               vendor.img
    clean_steps.mk         module-info.json      recovery.img
    data                   obj                   root
    dex_bootjars           obj_arm               symbols

把需要的文件打包成一个压缩文件:
zip  packall.zip android-info.txt  boot.img recovery.img  system.img  vendor.img

-----------------烧写---------------
    先从https://developers.google.com/android/images#bullhead 下载Nexus6P出厂镜像:
8.1.0 (OPM7.181205.001, Dec 2018)
https://dl.google.com/dl/android/aosp/angler-opm7.181205.001-factory-b75ce068.zip
    
解压后把刚才的packall.zip也放进去,修改flash-all.bat
把 fastboot -w update image-angler-opm7.181105.004.zip
改为 fastboot -w update packall.zip
其他不用修改。

剩下的按照普通刷机流程进行,参考官网:
https://developers.google.com/android/images


 

猜你喜欢

转载自blog.csdn.net/konga/article/details/84786784
8.1