• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

互联网 diligentman 2个月前 (02-26) 24次浏览

Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

  • 实验环境
    • 下载Android源码
    • 在pixel3上安装手机驱动版本
    • 编译Android源码
    • Android Studio导入Android系统源码
    • 源码导入Android Studio过慢
    • 在pixel3上刷入刚刚编译好的镜像文件
    • 避坑
    • 最终效果图

实验环境

  1. Ubuntu20.04
  2. pixel3

下载Android源码树

下载android源代码可以选择下载最新版本,也可以下载指定分支。如果能使用科学上网建议在google的源码树进行下载,如果不行推荐使用清华镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/,使用镜像教程链接已经详细给出,这里就不一一赘述啦

  1. 下载repo工具
// 下载repo工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
  1. 安装Repo后,设置自己的客户端用来访问代码库: 这里需要自己注册一个google帐号
(1)创建一个文件夹用来存放源码
mkdir Pixel3
cd Pixel3
(2)使用google帐号和真实姓名去配置Git
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
(3)运行repo init 获取最新版本代码或者指定分支
repo init -u https://android.googlesource.com/platform/manifest // 获取最新源码
repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r1// 指定分支
  1. 下载Android源码树
repo sync

在pixel3上安装手机驱动版本

  1. 在官网上找到与手机型号以及安卓源码Build号相对应的驱动版本
    这里我下载的源码是android-10.0.0_r1,因此它的Build号为QP1A.190711.019
    Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南
    再到驱动官网上找到对应的驱动信息并下载下来
    Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

  2. 解压到刚刚下载下来的源码根目录下

  3. 在命令行中输入如下代码,然后按回车来阅读协议,但是由于协议过长,可以按ctrl+c进行中断,在此会提示需要输入I ACCEPT,输入完毕后便可以提取镜像了

./extract-google_devices-blueline.sh
./extract-qcom-blueline.sh

Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

  1. 提取成功后会在根目录下生成vendor目录
    Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

编译Android源码

注意编译源码至少需要16GB的内存,因此需要增加swap分区,详细步骤请参照我第一篇博文

source build/envsetup.sh
lunch aosp_blueline-userdebug
make -j12

Android Studio导入Android系统源码

  1. 编译成功后执行如下命令进行编译源码idegen模块及生成AS配置建(*ipr):
mmm development/tools/idegen/
development/tools/idegen/idegen.sh

完成后就会在根目录下看到三个新文件:
android.iml(用于记录项目所包含的module,依赖关系,sdk版本)
android.ipr(工程的具体配置,代码以及依赖的lib信息) android.iws(个人的配置信息)

  1. 将android.iml android.ipr权限改成777
sudo chmod 777 android.iml
sudo chmod 777 android.ipr
  1. 打开Android studio,导入已有项目,选择根目录下的.ipr文件

源码导入Android Studio过慢

sudo vim /etc/sysctl.conf

进入文件后按i进入编辑模式

在文件最后加上

fs.inotify.max_user_watches = 524288

输入完这段话以后按Esc进入normal模式,再按:然后输入wq(表示写入保存)

生效文件

sudo sysctl -p –system // 生效文件

在pixel3上刷入刚刚编译好的镜像文件

  1. 将pixel3连接上电脑,进入bootloader模式
adb reboot bootloader
  1. 解锁手机
fastboot flashing unlock
  1. 进入fastbootd模式,参考文档
    Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南
// (1) 方法一:在bootloader模式下输入
fastboot reboot fastboot
// (2)方法二:返回Android系统,输入以下命令
adb reboot fastboot
  1. 命令行里输入以下命令
source ./build/envsetup.sh
  1. 命令行里输入以下命令
lunch aosp_blueline-userdebug
  1. 进入生成的product路径,在命令行里输入以下命令
cd  $ANDROID_PRODUCT_OUT
  1. 烧录编译好的镜像文件,在命令行中输入以下命令
fastboot flashall -w 

Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

避坑

  1. 在选择刷机的手机的时候,不要买pixel2 美版,它的bootloader无法解锁,若要刷pixel2手机需要购买欧版的
  2. 如果在输入镜像之前一定要做在pixel3上刷入刚刚编译好的镜像文件3,4步,不然在刷入镜像文件的时候会遇到"Value too large for defined data type"
  3. 一定要在fastbootd模式下刷机,不然在刷到System会遇到错误:‘Partition should be flashed in fastbootd’
  4. :假如手机原先的系统是android 11的,如果将Android 10.0的镜像文件烧录到设备中会烧录失败,。建议先去官网烧录编译的源码分支的底包(factory images),然后再去烧录Android 10.0的镜像文件
  5. 如果在fastboot flashall -w输入结束后,出现“wait for any devices”,那么在pixel3上刷入刚刚编译好的镜像文件这些步骤需要在root权限下执行。

最终效果图

Ubuntu20.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

参考链接
https://blog.csdn.net/weixin_45767368/article/details/105962606?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-6&spm=1001.2101.3001.4242
https://developers.google.com/android/drivers#bluelineqp1a.190711.019
https://source.android.google.cn/devices/bootloader/fastbootd?hl=zh-cn
https://www.jianshu.com/p/1f4a2b18246a


喜欢 (0)