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 ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
  1. 安装Repo后,设置自己的客户端用来访问代码库: 这里需要自己注册一个google帐号
(1)创建一个文件夹用来存放源码
mkdir Pixel3cd 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

    再到驱动官网上找到对应的驱动信息并下载下来

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

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

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

  1. 提取成功后会在根目录下生成vendor目录

编译Android源码

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

source build/envsetup.shlunch aosp_blueline-userdebugmake -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.imlsudo 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模式,参考文档为
// (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 

避坑

  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权限下执行。

最终效果图

参考链接
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

更多相关文章

  1. Android(安卓)NDK HelloJNI
  2. Android(安卓)框架学习4:一次读懂热门图片框架 Picasso 源码及流
  3. 一个Android健身APP源码(类似KEEP、FEEL、轻+、减约、薄荷等)
  4. Android内核开发:源码的版本与分支详解
  5. 图解Android和Linux发行版的区别
  6. apk反编译
  7. Android应用AsyncTask处理机制详解及源码分析
  8. android全平台基于ffmpeg解码本地MP4视频推流到RTMP服务器
  9. 如何将Android默认的Camra程序导入到eclipse中

随机推荐

  1. Android短彩信数据库信息整理
  2. 浅析Android(安卓)手机卫士设备管理权限
  3. Android实现BannerLayout图文轮播功能
  4. android使用service和activity获取屏幕尺
  5. Android 定位当前位置可能出现的问题
  6. android 开发中遇到的问题
  7. Android style 的继承
  8. java android(ios)通用aes加密解密
  9. Android "多方向"抽屉
  10. Android实现录屏和截屏功能