Android源码编译烧录

一、编译环境/设备

  • ubuntu 20.04 LTS
  • openjdk 1.8
  • Pixel XL
  • Android版本:10.0
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt install openjdk-8-jdk

  • 编译依赖
sudo apt-get install -y 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 -y tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install -y dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install -y git-core gnupg zip curl zlib1g-dev gcc-multilib
sudo apt-get install -y libc6-dev-i386 x11proto-core-dev libx11-dev
sudo apt-get install -y unzip m4 lib32z-dev ccache libssl-dev
sudo apt-get install -y lib32ncurses5-dev

二、代码下载

  1. 安装初始化依赖工具
 sudo apt install curl python git
  1. 配置repo工具
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
  1. 修改repo默认源,通过国内镜像更新:在~/.bashrc文件里添加如下两行,保存退出,然后执行source ~/.bashrc更新环境变量
PATH=~/bin:$PATH
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
  1. 配置git信息
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
  1. 初始化仓库
mkdir AOSP
cd AOSP
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest
  1. 查看源码分支,选择其一下载
    初始化完成之后,使用 “ls -a” 命令查看所有隐藏文件,找到.repo,切换到.repo/manifests目录,执行 git branch -a 可以看到所有分支,再次执行 “repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b + 分支名” ,如选择9.0版本:
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r17 --depth=1 --platform=auto
  1. 同步源码
repo sync

三、编译源码

  1. 初始化编译环境,切换到源码根路径下,执行如下命令:
source build/envsetup.sh
  1. 选择编译目标,真机选项见 官方文档
lunch aosp_arm64-eng
  1. 开始编译,可能等待数个小时
make -j12
  1. 当出现如下字样时,编译成功
#### build completed successfully ####

四、启动模拟器

如果中途关闭了终端,需要重新执行source build/envsetup.sh 和lunch命令才能启动模拟器

emulator

五、真机烧录

这里我采用的真机是 Pixel 一代,目前这款手机可以一直升级到 Android 10,注意在选择真机的时候,一定要问清楚BootLoader是否可解锁!同时真机烧录之前,需要将对应设备的 驱动 一同编译进去,否则将设备将变成一块板砖!设备的驱动需要到 官网 上找对应的 手机型号Android 版本 的驱动!之后就可以开始编译安装了,过程比较简单,网上很多不再赘述,可参见 pixelXL 下载编译源代码刷机烧录记录

  1. 进入bootloader 模式并解锁
adb reboot bootloader
解锁手机:sudo fastboot flashing unlock
  1. 烧录系统之前,先双清一下
sudo fastboot erase cache
sudo fastboot erase userdatas
  1. 刷入系统镜像
// 进入Android编译产生的文件 /out/target/product/marlin 执行如下命令
sudo fastboot flashall -w

有时上述命令可能会出问题,可以采用如下方式单个刷入

sudo fastboot flash boot_a boot.img
sudo fastboot flash boot_b boot.img
sudo fastboot flash system system.img
sudo fastboot flash system_b system_other.img
sudo fastboot flash vendor vendor.img
sudo fastboot flash userdata userdata.img
  1. 重启设备
 sudo fastboot reboot 

六、Google底包镜像系统

这里简单提一下怎么烧录Google官方的镜像底包,打开 镜像底包 链接,找到对应设备对应版本号系统镜像,下载之后解压,可以看到如下文件:

图片.png

Windows系统上运行 flash-all.bat ,Linux系统上运行flash-all.sh,不过这里如果直接运行可能会出问题,需要做如下修改:
去掉最后一行命令中的 -w 变更如下:

fastboot update image-sailfish-pq3a.190801.002.zip

七、可能出现的问题

  1. 安装依赖冲突解决
    可能是apt的源版本不对,直接在网络上搜寻的apt源大多没有标明ubuntu版本,建议在清华大学镜像源上,选择对应版本的源:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
图片.png
  1. 找不到libncurses.so.5之类的库,可采用如下暴力手段:
sudo apt-get install libncurses* 

  1. Running an x86 based Android Virtual Device (AVD) is 10x faster
图片.png

出现如上问题,意思是使用一个x86的模拟器比使用arm内核的要快10倍,建议换成内核为x86的模拟器,否则模拟器启动、运行都会比较慢,可能会等待几分钟才能启动

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容