编译pixel-experience,关联 oneplus 8T, kebab, android, rom, 一加

  1. 有一个支持 apt 的linux发行版
  2. Install the platform-tools
    主要用的是 adb , fastboot
  3. 配置系统环境
  4. 安装git
  5. 运行配置脚本
    1
    2
    3
    4
     cd ~/
     git clone https://github.com/akhilnarang/scripts
     cd scripts
     ./setup/android_build_env.sh
    
  6. 安装 repo 工具
    1
    2
     curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
     chmod a+x ~/bin/repo
    

    设置 repo 到可执行查找目录

    1
    2
    3
     if [ -d "$HOME/bin" ] ; then
         PATH="$HOME/bin:$PATH"
     fi
    
  7. repo 工具需要 python,确保python安装并能被找到
    MX21 上只有 python3 ,没有python,所以要设置下:
    1
    2
    3
     sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
     update-alternatives --list python
     python -V
    
  8. 下载 pixelexperience 源代码
    注意:
    (1)下载时间比较长,另外,注意磁盘空间。(2)之后可以使用 repo sync 持续更新源码。

    1
    2
    3
    4
     mkdir ~/android/pe
     cd ~/android/pe
     repo init -u https://github.com/PixelExperience/manifest -b branch_name
     repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags
    
  9. 下载机型相关的代码,比如: Onplues8T 是 kebab
    1
    2
    3
     cd ~/android/pe
     source build/envsetup.sh
     lunch aosp_kebab-userdebug
    
  10. 使用 ccache ,缓存这次的build文件,下次编译就会很快(一小时的编译时间,会被缩短到20分钟)。
    添加如下设置到 ~/.bashrc
    1
    2
    3
     export USE_CCACHE=1
     export CCACHE_EXEC=/usr/bin/ccache
     export CCACHE_DIR=/your-path-may-have-50G/ccache
    

    然后执行如下命令,设置缓存大小:

    1
    2
    3
     # 如果就针对一种机型,25G - 50G 就够了
     # 如果是多个机型,而且不是一套kernel source, 设置  75G - 100G
     ccache -M 50G
    
  11. 编译
    1
    2
    3
     croot
     # nproc -all 会返回所有cpu线程数目,编译时候还要电脑干其他事情,就自己指定下核心/线程数目吧。
     mka bacon -j$(nproc --all)
    
  12. 安装
  13. 进入编译结果目录: cd $OUT
    例如: out/target/product/kebab

    2个文件比较有用:

    • recovery.img, which is the PixelExperience recovery image.
    • A zip file whose name starts with PixelExperience_, which is the PixelExperience installer package.
  14. 第二次编译
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     # 更新代码
     repo sync
     # 设置编译变量
     cd ~/android/pe
     source build/envsetup.sh
     # 设置下设备,这里是 kebab
     lunch aosp_kebab-userdebug
     # 开始编译
     croot
     mka bacon -j$(nproc --all)