Android源码下载 编译 刷机

来点前奏说明

当你打开这个文档的时候,你已经做好准备了,话不多说开搞。
这里参考Google官网文档(https://source.android.com/setup/build/requirements)和
清华镜像文档(https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/),让不能科学上网的童靴也能搞。友情提示:最好后期还是可以能够科学上网因为后面还有下载驱动和刷机包啥的。

先上图,其他的文档有些不是很全,我这个我只能说我现在刷机成功了,有图有真相。我买的Pixel 一代欧版手机,刷的 android-9.0.0_r20 分支。下图请忽略相机名称(这个我自己修改的)和WiFi图标显示图标显示问题,那个刷官方的ROM包WiFi图标也那样,但是可以正常上网。

IMG_20190424_210030.jpg


1、硬件要求:

电脑  内存推荐16G,硬盘推荐150G以上,最好250G以上
我之前搞内存4G的电脑编译各种问题换成16G一次成功,8G能不能编译过我不知道。

2、软件要求:

Ubuntu下载

Ubuntu系统,本人安装的Ubuntu 18.04 LTS版64位系统

Ubuntu下载:
https://www.ubuntu.com/download/desktop
Android源码对Ubuntu版本是有要求的,6.0版本最低要求14.04版本,默认网址下载就是LTS版本,个人推荐安装15.04以上

JDK下载

15.04版本的JDK下载
    sudo apt-get update
    sudo apt-get install openjdk-8-jdk
14.04 版本的JDK下载,它没有直接支持JDK 8版本

下载JDK8相应.deb 软件包:
http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/
可以下载这个版本
http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jdk_8u45-b14-1_amd64.deb

谷歌官网步骤
sudo apt-get update
cd XXX                 到下载目录,XXX为目录名称
sudo dpkg -i   openjdk-8-jdk_8u45-b14-1_amd64.deb
解决缺少依赖项的问题: sudo apt-get -f install
安装的时候可能会出现找不到deb文件 有同学说强制安装,我没试过
sudo apt-get update
cd downloads                   到下载目录
sudo dpkg -i --ignore-depends=libxml2-utils  openjdk-8-jdk_8u45-b14-1_amd64.deb
解决缺少依赖项的问题: sudo apt-get -f install

3、下载代码:

下载 repo 工具

清华镜像步骤
mkdir ~/bin 
PATH=~/bin:$PATH 
curl https://aosp.tuna.tsinghua.edu.cn/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
谷歌步骤
mkdir ~/bin 
PATH=~/bin:$PATH 
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

初始化名称和邮箱

mkdir Aosp     (名称随意,我这里叫Aosp)
cd Aosp
git config --global user.name "Your Name" 
git config --global user.email "you@example.com"

初始化repo

镜像的(默认下载master分支,后期也可以切换再下载)  
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
或者
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r20 
谷歌的(默认下载master分支,后期也可以切换再下载)  
repo init -u https://android.googlesource.com/platform/manifest
或者
repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r20 

分支情况和对应手机,只截取一部分,这个太多了。
2019-04-24 14-55-05.png

下载并且输出下载的日志

repo sync -j4 2>&1 | tee sync_log.txt

这里推荐会掉线,建议写一个shell脚本,如下
循环拉取代码,这是github链接。https://github.com/rogan528/TuPianResource/

fn_repo_sync()
{
	repo sync -j8 2>&1 | tee sync_log.txt
}
fn_get_source_code()
{
	echo "fn_get_source_code:$(pwd)"
	fn_repo_sync
	FETCH_ERROR=`grep -i "error: Exited sync" -A 1  sync_log.txt`
	echo  "${FETCH_ERROR}"
	while [ -n "${FETCH_ERROR}" ]
	do
		echo "需要重新拉取代码"
		fn_repo_sync
		FETCH_ERROR=`grep -i "error: Exited sync" -A 1  sync_log.txt`
	done
	echo "leave begin download source"
	#repo start ${DATE_TIME} --all
}
fn_get_source_code

4、下载驱动:

下载驱动(专有的二进制文件),官网地址(https://developers.google.com/android/drivers)这个时候细分版本那栏就用到了,先找到Pixel手机,搜索PQ1A.181205.002.A1 有几个下载几个,这个目录有两个我已经下载并且解压好了,放在我的github上了链接https://github.com/rogan528/TuPianResource/。

2019-04-24 15-18-27.png

下载完成之后每个目录里面有一个shell脚本,将两个shell脚本放在Aosp 目录下,chmod 777 XXX.sh 然后执行 ./XXX.sh 先按一个回车,一直按回车只到出现 I ACCEPT输入这两个单词再回车。

5、编译 Android:

关联代码:

方法一:
source build/envsetup.sh 
方法二:
 . build/envsetup.sh

选择手机型号:

lunch  aosp_sailfish-userdebug

只截取一部分,这个也不少
2019-04-25 0-49-15.png

编译并且输出日志

make -j4 2>&1 | tee build.log   (电脑内存高的可以16或者32,我用的16)

6、刷机:

打开OEM开关:
先点击设置—关于手机----版本号七次—开发者选项—打开OEM解锁(这步必须科学上网,否则打不开)

进入bootloader页面(使用方法1必须安装adb) 下载地址如下
https://developer.android.google.cn/studio/releases/platform-tools.html
我也下载好了放在github上了 (名称为platform-tools_r28.0.3-linux.zip)
https://github.com/rogan528/TuPianResource

方法1:
adb reboot bootloader  
方法2:
使用下图的快捷键,我的手机 Pixel  就是音量减键和电源键

下图只贴了一部分手机机型

image.png

在源码根目录(我的项目Aosp目录下)执行,这步必须下载SDK,手机已经解锁的跳过此步

对于新款设备(2015 年及之后发布的设备)
fastboot flashing unlock
对于老款设备(2014 年及之前发布的设备)
fastboot oem unlock

配置生成的out目录,刷机

export ANDROID_PRODUCT_OUT=/home/zhangbin/Aosp/out/target/product/sailfish
cd Aosp/out/target/product/sailfish
fastboot flashall -w 
切换分支
清华镜像
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r20
repo sync
谷歌
repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r20
repo sync
FAQ

platforms下载地址

https://developer.android.google.cn/studio/releases/platforms

Question1:怎么重新锁定引导加载程序?
Answer1:我能问一下为什么要关闭,你后期使用还得开。车跑偏了哈,回答问题。

对于新款设备(2015 年及之后发布的设备)
fastboot flashing lock
对于老款设备(2014 年及之前发布的设备)
fastboot oem lock
插个相亲和户外旅游活动广告

http://shop3607770.bjailv.360jlb.cn/m
旅行中遇见爱.jpg

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值