首页
社区
课程
招聘
下载android系统源码及其编译过程
发表于: 2022-11-7 22:30 1594

下载android系统源码及其编译过程

2022-11-7 22:30
1594

最开始注意:我使用的是google源,也就是需要挂代理,当然也可以用清华源等
目标:编译安卓aosp8.1.0_r1源码 机型:Nexus5x
首先需要的虚拟机ubuntu(我的版本20.04.1)
全程我使用全局代理(科学上网)
我配置如下:(硬盘我这里设置200GB,编译整个过程大概用了180G,硬盘有条件的可以再多点,内存根据自己电脑情况而定),这里我没有进行分盘,直接使用200G整盘
图片描述

1.安装jdk

1
2
3
4
5
6
7
8
apt-get install openjdk-8-jdk
# 加入环境变量
vim ~/.bashrc
#在文件末尾加入
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 
#根据你自身的路径修改
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc

安装python(注意安装python2,安装python3会报错)
报错如下:(所以为了避坑,我们安装python2)
图片描述

1
apt install python

2.安装依赖

1
apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

3.下载repo 工具

repo 是安卓环境下的命令行工具,对Git部分命令进行封装,将百多个git库进行更新。
按照如下步骤进行安装Repo.

1
2
3
4
5
6
7
8
9
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
# 加入环境变量
vim ~/.bashrc
在文件末尾加入
export PATH=~/bin:$PATH
source ~/.bashrc

4.创建文件夹

1
2
mkdir android-8.1.0_r20
cd android-8.1.0_r20

5.初始化git,repo(注意先初始化git,再初始化repo)初始化repo中应查询清楚编译出来的镜像是否适配手中的手机

1
2
3
4
git init
repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r20
或者
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-8.1.0_r20

repo init 后,会提示你输入名字和邮箱,写入随机都可以,我直接写的默认的

1
2
git config --global user.name "Your Name"
git config --global user.email "you@example.com"

6.下载源码(同步)时间较长

1
repo sync -j1

如果中途出现卡顿,crlt+c终端,继续执行命令即可
将会在我们android-8.1.0_r20目录下生成很多代码

7.下载驱动到我们的android-8.1.0_r20目录下

驱动下载:https://developers.google.com/android/drivers#bullheadopm2.171019.029
图片描述
下载后将其解压:
图片描述
如上两个shell脚本,如果我们不修改的话需要遇到License就输入I ACCEPT
那么我们修改这两个脚本
图片描述
图片描述
都将'if test "$typed" != I\ ACCEPT'改为'if test "$typed" = I\ ACCEPT',执行脚本就可以一直Enter了
当然改完之后输出的结果就是You didn't accept the license. Extraction aborted.实际是成功的,如下:
图片描述

8.编译

选择编译系统:https://source.android.com/source/running#selecting-device-build

1
2
3
模拟器一般选eng,调试功能全开。
调试真机的话选userdebug 。
发行最终版本用user。

图片描述

1
2
3
4
5
6
7
8
9
10
# 导入环境变量
source build/envsetup.sh
# 选择设备编译系统
lunch aosp_bullhead-userdebug
# 去除可能问题
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH
export LC_ALL=C
ulimit -c unlimited     # 去除core文件大小限制
# 开始编译,时间很长耐心等待
make -j8

如果还出现报错就采用解决办法:https://blog.csdn.net/piao3956/article/details/103924566
我接下来的操作如下:
安装对应库:

1
2
3
4
5
6
7
8
9
10
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

ubuntu20.04 需安装如下库:

1
2
3
4
FAILED: out/host/linux-x86/obj/EXECUTABLES/validatekeymaps_intermediates/Main.o
prebuilts/clang/host/linux-x86/clang-4053586/bin/clang++.real: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
 
解决命令:sudo apt install libncurses5

我遇到的坑:

(1)编译aosp踩坑Main.o

图片描述
解决如上:sudo apt install libncurses5

(2)Android编译出现FAILED:setup-jack-server

图片描述
解决方法:https://blog.csdn.net/weixin_42433094/article/details/118603694
这个改端口我试过了,不顶用需要看报错
图片描述

 

删除红框内的TLSv1,TLSv1.1,如下:
图片描述
然后重启服务,注意在jack-admin路径下执行
图片描述
然后再次编译

1
make-j8

时间比较长,我大概1个小时多

编译成功:

图片描述
图片描述

9.刷机

1.配置镜像环境变量

1
export ANDROID_PRODUCT_OUT=/root/bin/android-8.1.0_r20/out/target/product/bullhead

2.进入fastboot模式

1
adb fastboot bootloader

3.开始刷机
如果遇到这个错误“error: Cannot generate image for userdata”,请删除 -w执行

1
fastboot -w flashall

图片描述

 

4.刷机结束,等待手机重启
图片描述
可以看到刷机成功
图片描述
可以看到就是我们编译的包

 

参考链接:
https://bbs.pediy.com/thread-273961.htm#msg_header_h2_3
https://bbs.pediy.com/thread-218366.htm
https://bbs.pediy.com/thread-218513.htm


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2022-11-7 22:35 被茄子不茄编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//