谷歌云上高速编译安卓AOSP ROM、驱动、内核并完成刷机

目标

  • 完成安卓10rom的aosp源码+驱动+内核编译、并完成刷机
  • 手机sailfish
  • 选择谷歌云的目的
    在群里听到乌师傅说谷歌云便宜,cpu多,编译源码几分钟就够了,并且利用免费的300美金可以随便玩,那就动手试试了。

致谢

肉丝大佬文章
https://www.anquanke.com/post/id/199898#h3-8
乌师傅
谷歌云和驱动的建议
众多翻阅过的博客文章

选择服务器




最后创建就好了。

  • 出现的问题
    file
    上边这两个问题都是由于配额不够,点击申请配额,然后下一步就,提交申请就可以了,等他们配置。
    file安装工具
  • 更新&&配置
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade
sudo apt-get -u dist-upgrade
sudo dpkg --configure -a
sudo apt-get -f install
  • 安装git
sudo apt-get install git -y
git config --global user.email "your mail"
git config --global user.name "your name"
  • 安装repo工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
  • 装个看CPU、内存、缓存的htop
apt install htop -y

同步源码

  • 我们有两种方式同步源码,清华和谷歌,由于我们是在谷歌云操作,就只用谷歌来下载源码。
  • 创建存放源码的文件夹
mkdir android/
cd android/
  • 初始化仓库 从google的服务器同步(国内不可用)
repo init -u https://android.googlesource.com/platform/manifest
  • 也可以指定特定的版本同步源码,记得输入y
    选择源码版本 https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds
    以Pixel为例, 对应的Android 10源码tag是android-10.0.0_r2, build id是QP1A.190711.020.
    PS: 这里版本不要选错,不然后面没办法成功刷机.
    file
repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r2


同步源码树
下面三行命令其中一行就行。

repo sync
repo sync -j8 #8个线程同步代码
nohup repo sync -j8 >sync.log 2>&1 & #推荐:后台去同步,ssh断开也没事。

可以看到htop下,多个cpu已经跑起来了。


htop的cpu使用率为0,则是已经同步完成了。下载驱动如果不刷机的话,可以忽略不看。
下载驱动地址
https://developers.google.com/android/drivers
Pixel机型且build id为QP1A.190711.020对应的驱动是下面两个文件
注意: 这里驱动版本不要选错,选错刷机就是板砖了。


wget 这个链接即可
下载并解压, 得到两个脚本文件

extract-google_devices-sailfish.sh
extract-qcom-sailfish.sh


执行脚本后一个个确认,最后一步输入”I ACCEPT”。最后会生成一个ventor文件夹里面就是驱动代码,内容如下,ventor需要拷贝到aosp源代码目录。

google_devices
  marlin
     BoardConfigVendor.mk
     device-vendor-sailfish.mk
  sailfish
      android-info.txt
      BoardConfigPartial.mk
      device-partial.mk
      proprietary
          vendor.img
qcom
   sailfish
       BoardConfigPartial.mk
       device-partial.mk
       proprietary
           ATT_profiles.xml
           lib64
              vendor.qti.atcmdfwd@1.0.so
              vendor.qti.qcril.am@1.0.so
           pktlogconf
           qcrilhook.jar
           ROW_profiles.xml
           VZW_profiles.xml


删除之前编译生成的文件(第一次编译忽略)

make clobber


编译AOSP源码,编译master源码需要安装OpenJDK 8,注意不是SUN JDK1.8,否则编译会报错

安装OpenJDK 8

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

安装依赖

apt install bison tree
dpkg --add-architecture i386
apt update
apt install libc6:i386 libncurses5:i386 libstdc++6:i386
apt install libxml2-utils
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
  • 初始化编译环境
source build/envsetup.sh
  • 选择设备
    选择自己的设备
lunch


我这里是选择16
如果你这里提示如下图


请在初始化编译环境哪里,执行如下命令

cd build
source benvsetup.sh
lunch #选择自己的设备
cd .. #进入源码文件夹
  • 开始编译
export LC_ALL=C #recipe for target 'run_soong_ui' failed 解决方案二
#下面两行命令其中一行就行
make -j60 #这个60是cpu核心个数*2,我这是30个cpu
nohup make -j 60 >>123.log 2>&1 & #推荐这个命令,后台运行。
  • cpu跑满了file
  • 等待编译完成,谷歌云这里100个cpu的话,只需要5分钟左右,泡面即可。
  • 可以先去配置下载刷机包的依赖啦。
  • 编译完成。
  • 编译完成的系统镜像位于当前目录的out/target/product/sailfish/下,各类img就是遇到的错误
  • recipe for target ‘run_soong_ui’ failed*解决方案一
    增加swap空间
    增加办法:
    增加4个G的交换空间
cd /
sudo dd if=/dev/zero of=/swp bs=10M count=400
sudo mkswap /swp
sudo swapon /swp
  • 下载刷机包
  • 打包刷机镜像
    tar zcvf sailfish.tar.gz sailfish
    打包文件如下图所示
  • 利用NodeJs的served来做文件服务器
  • 超级快的下载文件服务器(web还不错的)
    served支持断点续传和多线程下载
apt install npm nodejs-legacy
npm install -g served curl
served 8000 #在要下载的文件的目录下运行

    开始下载

    • 刷机我这里是mac
    • 设置ANDROID_PRODUCT_OUT路径
    export ANDROID_PRODUCT_OUT=/Users/zxc/Downloads/sailfishimg
    echo ${ANDROID_PRODUCT_OUT}
    • 刷机
    adb reboot bootloader
    fastboot flashall -w
    • 开机

    编译内核

    现在的内核版本是3.18,分支是g382d7256ce44

    • 选择内核
      根据自己手机型号选择的

    这里选择我们内核版本


    我们去切到分支
    https://android.googlesource.com/kernel/msm/+/refs/heads/android-msm-marlin-3.18-android10

    git clone https://android.googlesource.com/kernel/msm.git
    cd msm
    git checkout android-msm-marlin-3.18-pi-qpr1
    • 配置环境
      安装依赖
    sudo apt install bc #/bin/sh: 1: bc: not found
    sudo apt-get install liblz4-tool #lz4c: not found

    开始编译

    source build/envsetup.sh
    lunch aosp_sailfish-userdebug
    #上边命令需要在源码文件夹进行操作。
    export PATH=$PATH:/root/android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin #这里是在源码里面
    export ARCH=arm64
    export CROSS_COMPILE=aarch64-linux-android-
    export SUBARCH=arm64
    make marlin_defconfig
    make -j60

    编译完成后,生成的文件在:

    	
    ls arch/arm64/boot/
    • 生成新的boot.img
    	
    export TARGET_PREBUILT_KERNEL=/root/android/msm/arch/arm64/boot/Image.lz4-dtb
    rm out/target/product/sailfish/boot.img &&  make -j60 bootimage
    • img编译完成


    时间已经更新

    • 刷入内核
    adb reboot bootloader
    fastboot flash boot boot.img
    • 最后这个内核版本已经改变
    • 总结这个刷机编译搞了两天,遇到坑有很多,最重要的还是编译速度和环境改动等等。谷歌云可以申请100+的cpu,这样make起来很快。
      源码编译的很多坑都是因为环境依赖问题,耐心点总会解决。
    下载说明:
    1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
    2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
    3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
    4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
    5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
    6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
    7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
    8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
    原文链接:https://www.dandroid.cn/20694,转载请注明出处。
    0

    评论0

    显示验证码
    没有账号?注册  忘记密码?