Pixel4 安卓源码及内核修改编译教程 | 基于Android12 AOSP【更新:231128】

马肤
这是懒羊羊

之前整理了 Pixel4上的源码过程,下载的话大家可以去镜像网站下载,可以节约很多时间。

实验设备:Ubuntu18.04 32G+2T Pixel4

(图片来源网络,侵删)

文章目录

  • 一、安卓源码下载
    • 1.准备下载环境
      • (1)安装Python 3.9
      • (2)安装git
      • (3)安装curl
      • (4)配置环境变量 安装repo
      • 2.下载源代码
        • (1)创建目录
        • (2)初始化仓库
        • (3)同步
        • (4)拉取repo shell脚本
        • 二、安卓源码编译
          • 1.安装jdk
          • 2.使用 ubuntu 14+,需要安装以下依赖包
          • 3.安装libncurses5
          • 4.构建编译环境依赖
          • 5.下载编译驱动
          • 6.开始编译
          • 7.刷机
            • (1)fastboot 安装
            • (2)安装kvm
            • (3)进入reboot-bootloader模式
            • (4)配置ANDROID_PRODUCT_OUT环境
            • (5)刷机
            • 三、内核构建&编译刷机
              • 1.下载相应分支的源代码
              • 2.内核编译
                • (1)改变Touch路径
                • (2)编译内核
                • (3)刷入设备
                • (3)重启
                • 四、参考资料
                  • AOSP
                  • 刷机

                    一、安卓源码下载

                    1.准备下载环境

                    (1)安装Python 3.9

                    sudo apt update
                    sudo apt install software-properties-common
                    sudo add-apt-repository ppa:deadsnakes/ppa
                    sudo apt update
                    sudo apt install python3.9
                    sudo apt-get install python
                    

                    (2)安装git

                    sudo apt-get upgrade
                    sudo apt-get install git
                    git config --global user.email "xxxxxxx@gmail.com"
                    git config --global user.name "xxxxx"
                    

                    (3)安装curl

                    sudo apt-get install curl
                    

                    (4)配置环境变量 安装repo

                    mkdir ~/bin
                    PATH=~/bin:$PATH
                    //2023-11-28更新:由于网络因素更换使用清华repo
                    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
                    chmod a+x ~/bin/repo
                    //原始repo, 和上面的二选一
                    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
                    chmod a+x ~/bin/repo
                    之后打开bin文件夹下的repo将
                    REPO_URL = 'https://gerrit.googlesource.com/git-repo'
                    改为
                    REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
                    

                    如果替换了还不行?可尝试以下方案之一:

                    curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
                    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
                    

                    可选项,给repo换个源,把该执行放到~/.bashrc环境变量中

                    export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
                    

                    2.下载源代码

                    (1)创建目录

                    mkdir android12.0.0
                    cd android12.0.0
                    

                    (2)初始化仓库

                    重开终端 PATH 会失效,可以在使用时直接改成绝对路径 python3 ~/bin/repo xxx

                    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
                    

                    其他镜像地址供参考,不要全copy输入一遍,参考用的!

                    repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
                    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
                    

                    以下是分支仓库(拉取特定TAG用的!!!)

                    版本号要对应!!!版本号要对应!!!版本号要对应!!!

                    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r11
                    

                    网络不行就试试其他镜像地址,不要直接照搬,对照修改,下面3种方案:

                    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-12.0.0_r9
                    repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b  android-12.0.0_r3
                    python3 ~/bin/repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-12.0.0_r28
                    

                    可以登录以下网页查看自己手机对应的版本号【魔法】

                    https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds

                    如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:

                    REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'
                    

                    (3)同步

                    repo sync -j$(nproc)
                    

                    (4)拉取repo shell脚本

                    touch repo.sh       # 1. 创建 repo.sh 文件
                    vim repo.sh         # 2. 复制下面的脚本内容到 repo.sh 里面
                    chmod a+x repo.sh   #3. 修改权限
                    ./repo.sh            # 4. 运行脚本,万事大吉
                    
                    #!/bin/bash
                    python3 ~/bin/repo sync -j4
                    while [ $? -ne 0 ]
                    do
                    echo "======sync failed ,re-sync again======"
                    sleep 3
                    python3 ~/bin/repo sync -j4
                    done
                    

                    二、安卓源码编译

                    准备编译环境

                    1.安装jdk

                    sudo apt-get update
                    sudo apt-get install openjdk-8-jdk
                    

                    2.使用 ubuntu 14+,需要安装以下依赖包

                    sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
                    

                    3.安装libncurses5

                    sudo apt install libncurses5
                    

                    4.构建编译环境依赖

                    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
                    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
                    sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
                    sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
                    sudo apt-get install git-core gnupg flex bison gperf build-essential  
                    sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
                    sudo apt-get install libc6-dev-i386 
                    sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
                    sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
                    sudo apt-get install lib32z-dev ccache libncurses5
                    

                    5.下载编译驱动

                    https://developers.google.cn/android/drivers#flamesp1a.210812.016.a1

                    去以上网站找对所下载安卓源代码版本所对应的驱动下图buildID要对应

                    如果只是运行模拟器忽略这一步。Pixel4手机需要下载驱动编译脚本–脚本链接,下载机器对应的驱动编译脚本文件并解压,得到extract-google_devices-flame.sh和extract-qcom-flame.sh,放到源码的根目录执行(会让输入 I ACCEPT,回车别按的太快,之后ctrl+c 跳过),执行后会得到vender目录

                    执行以下命令,不同机型命令不一

                    ./ extract-qcom-flame.sh  
                    ./extract-google_devices-flame.sh
                    

                    6.开始编译

                    cd #(源代码文件名)
                    source build/envsetup.sh  (每次关闭 Shell 之后都需要重新执行配置环境)
                    make clobber
                    lunch
                    

                    输入#后的数字(找到pixel4对应 aosp-flame -userdebug 输入对应数字)

                    make -j$(nproc)
                    

                    7.刷机

                    准备刷机环境

                    (1)fastboot 安装

                    sudo apt-get install  android-tools-fastboot
                    

                    (2)安装kvm

                    sudo apt-get install qemu-kvm
                    

                    开始刷机

                    (3)进入reboot-bootloader模式

                    (无反应可先进入adb reboot bootloader)

                    fastboot reboot-bootloader
                    

                    (4)配置ANDROID_PRODUCT_OUT环境

                    export ANDROID_PRODUCT_OUT=/绝对路径/out/target/product/flame(注意要用自己的路径替代)

                    (5)刷机

                    fastboot flashall -w
                    

                    三、内核构建&编译刷机

                    1.下载相应分支的源代码

                    mkdir android-kernel && cd android-kernel 
                    python3 ~/bin/repo init -u https://aosp.tuna.tsinghua.edu.cn/kernel/manifest -b android-msm-coral-4.14-android12
                    repo sync -j$(nproc)
                    

                    2.内核编译

                    (1)改变Touch路径

                    将 /kernel/private/msm-google-modules/touch/fts/flame目录下的文件剪切到/kernel/private/msm-google-modules/touch/fts/目录下删除flame

                    sudo apt-get install libssl-dev
                    

                    (2)编译内核

                    在内核主目录下

                    ./build/build.sh
                    

                    (3)刷入设备

                    1、永久刷入设备【参考刷AOSP】出错不能恢复默认内核,不推荐:

                    在编译好的安卓源码⽬录下有⼀个out⽂件夹,将⽬录out/target/product/flame⽬录下的 *.img和kernel删除

                    rm *.img kernel 
                    

                    然后备份安卓源码的⽬录device/google/coral-kernel下的Image.lz4,⽤内核源码中的 Image.lz4进⾏替换

                    回到安卓⽬录后进⾏:

                    source build/envsetup.sh 
                    make -j$(nproc)
                    

                    2、【推荐】快速刷入内核

                    adb reboot bootloader
                    fastboot boot /home/wangheng/kernel12/kernel12/out/android-msm-pixel-4.14/private/msm-google/arch/arm64/boot/Image.lz4-dtb
                    

                    (3)重启

                    fastboot reboot
                    

                    四、参考资料

                    AOSP

                    1、http://liuwangshu.cn/batcoder/aosp/2-download-aosp.html

                    2、https://blog.csdn.net/y738587653/article/details/119983521?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link

                    3、http://liuwangshu.cn/batcoder/aosp/3-compiling-aosp.html

                    4、https://blog.csdn.net/weixin_45767368/article/details/105962606#t1

                    5、https://blog.csdn.net/grackergao/article/details/120984766

                    6、https://www.cnblogs.com/palance/p/5187103.html

                    刷机

                    1、https://blog.csdn.net/y738587653/article/details/119983521

                    2、https://www.droidwin.com/fix-failed-remote-partition-should-be-flashed-in-fastbootd/#Fix_1_Use_the_latest_ADB_Fastboot_Binaires

                    3、https://jingyan.baidu.com/article/5552ef47a15249518ffbc9ec.html

                    4、https://developer.android.com/studio/releases/platform-tools


文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:表情:
评论列表 (暂无评论,0人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码