-
出现的问题
上边这两个问题都是由于配额不够,点击申请配额,然后下一步就,提交申请就可以了,等他们配置。
安装工具
-
更新&&配置
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: 这里版本不要选错,不然后面没办法成功刷机.
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跑满了
等待编译完成,谷歌云这里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}