-
-
下载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直播授课