首页
社区
课程
招聘
[原创]Ubuntu 18.04.3 LTS 编译安卓6.0.0_r1
发表于: 2019-10-1 12:46 10016

[原创]Ubuntu 18.04.3 LTS 编译安卓6.0.0_r1

2019-10-1 12:46
10016

碎碎念:之前编译编译安卓4.4.4_r1出现问题,前来论坛求助。

还说了事后会把那次编译过程记录下来,发到看雪上,帮助他人少走弯路。

junkboy大佬给了aosp的docker链接,然而我的windows10死活无法正常运行docker,于是放弃。

最近,给电脑装了ubuntu系统,成功编译安卓系统。

这期间,遇到了不少问题,论坛很多热心的大佬给了帮助。

于是,就有了本文,希望能给之后编译aosp的人提供一些帮助。


前提:

1.已经搞定了ubuntu基础配置;

2.会一些ubuntu的基础命令行


正文:

更换软件源为清华

修改完成后,保存文件,警告什么的都不理,然后运行下面的命令


安装依赖:

所需JDK:


因为是编译安卓6,所以安装openJDK7


网上安装openJDK7的方法基本都失效了,我废了很大功夫才在csdn找到一个能用的,下载链接:

将openJDK7解压到/usr/lib/jvm这个目录下面,比如我的目录/usr/lib/jvm/openjdk-1.7.0_121

打开/etc/profile文件:

在末尾追加下面代码:

验证

下载安卓系统(AOSP)源码:

【推荐】方法1:直接下载别人分享的

优点:数据量小,大约只有几GB;

缺点:不能保证代码是最新的;

我在网上找的别人通过百度网盘分享的源码下载链接:

【我尝试了,下载了半天,受不了,放弃】方法2:通过国内镜像网站下载:

优点:代码是最新的;

缺点:要先下载 repo 工具,大小大约50GB+,然后才能下载安卓系统源码;安卓源码也非常大,我下载了半天还没下载好!

下载 repo 工具:

使用每月更新的初始化包

由于首次同步需要下载约 30GB 数据,过程中任何网络故障都可能造成同步失败,我们强烈建议您使用初始化包进行初始化。

下载 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar,下载完成后记得根据 checksum.txt 的内容校验一下。

由于所有代码都是从隐藏的 .repo 目录中 checkout 出来的,所以我们只保留了 .repo 目录,下载后解压 再 repo sync 一遍即可得到完整的目录。

使用方法如下:

建立工作目录:

初始化仓库:

如果提示无法连接到 gerrit.googlesource.com,repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新,可以将如下内容复制到你的~/.bashrc里

并重启终端模拟器。

如果需要某个特定的 Android 版本(https://source.android.com/setup/start/build-numbers#source-code-tags-and-builds):

同步源码树(以后只需执行这条命令来同步):

问题:

解决方法:

替换已有的 AOSP 源代码的 remote

如果你之前已经通过某种途径获得了 AOSP 的源码(或者你只是 init 这一步完成后), 你希望以后通过 TUNA 同步 AOSP 部分的代码,只需要将 .repo/manifest.xml 把其中的 aosp 这个 remote 的 fetch 从 https://android.googlesource.com 改为 https://aosp.tuna.tsinghua.edu.cn/。

根据机型及想要编译的安卓版本,去官方 Nexus 和 Pixel 设备的二进制驱动下载页面:https://developers.google.com/android/drivers 下载了相应的二进制驱动。


因为附件限制大小8MB,而驱动大小为23.4MB,所以只能靠你们自己去下载了。

下载好,解压,得到几个sh脚本,将它们复制到安卓源码目录下面并运行。

运行后,会提示你查看证书,按Enter键一行行的查看(最后一项是第8条第e项),出现下面的输入提示时,输入:I ACCEPT,会在安卓源码下生成vendor目录。其它几个自解压脚本也是这样执行。


修改 源码目录/art/build/Android.common_build.mk 文件,定位到75行,将下面的代码:

开始编译:

如果之前编译过,删除所有以前编译操作的已有输出:

(1) 在 .bashrc文件末尾添加:export USE_CCACHE = 1

(2) 为了提高编译效率,设置编译器高速缓存:

(3) 接着导入编译Android源码所需的环境变量和其它参数:

(4) 运行lunch命令选择编译目标:


(5) 开始编译,执行make -j12, 12为同时编译的线程数,一般google推荐这个数字为2倍的cpu个数再加上2,比如4核,就是10。我使用的是12:

花了1个多小时编译成功


编译后输出的文件都放在了源码根目录下的out文件中,比如我的目录:/android-6.0.0_r1/out/target/product。可以在该目录下面找到boot.img、system.img、recovery.img、cache.img、userdata.img五个镜像文件,这表示编译成功,这也是刷机需要的文件。

问题1:

问题2:

问题3:

sudo gedit /etc/apt/sources.list
在文件最前面加入下面代码:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
sudo apt-get update
sudo apt-get upgrade

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
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 lib32z-dev ccache
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

https://download.csdn.net/download/tenyearsafterg/10462952
去某宝找代下,1元就可以下载了

sudo gedit /etc/profile
修改了/etc/profile文件需要 重启 才能生效,但使用下面命令可以在不重启的情况下在 当前 bash环境生效:
source /etc/profile

export JAVA_HOME=/usr/lib/jvm/openjdk-1.7.0_121
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

java -version
javac -version

http://pan.baidu.com/s/1ngsZs

通过repo下载安卓6.0.0_r1,我下载了几百GB还没有下载完,无奈放弃。有没有大佬这是这么一回事啊?到底哪里出问题了?安卓一个版本不应该有几百GB这么大啊......

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2020-1-7 16:41 被xmhwws编辑 ,原因:
收藏
免费 1
支持
分享
最新回复 (13)
雪    币: 6266
活跃值: (1276)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
通过repo下载安卓6.0.0_r1,我下载了几百GB还没有下载完,无奈放弃。
有没有大佬知道这是这么一回事啊?到底哪里出问题了?安卓一个版本不应该有几百GB这么大啊......
我是先下载每月更新的初始化包,然后在这个目录通过repo下载安卓6.0.0_r1,是不是应该直接通过repo下载,而不用 先下载每月更新的初始化包呢?
最后于 2019-10-1 12:52 被xmhwws编辑 ,原因:
2019-10-1 12:51
0
雪    币: 3935
活跃值: (197)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
硬盘足够大,网络非常好。。
技术也牛x
2019-10-1 13:14
0
雪    币: 6266
活跃值: (1276)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
nqxcwl 硬盘足够大,网络非常好。。 技术也牛x
用了闲置的1TB机器硬盘做移动硬盘,然后把ubuntu装在移动硬盘。
网络。。。别人的梯子。。。清华的镜像站,国内可以直连。。。
很多问题,参考了前辈们的教程,才解决
2019-10-1 13:24
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
xmhwws 通过repo下载安卓6.0.0_r1,我下载了几百GB还没有下载完,无奈放弃。有没有大佬知道这是这么一回事啊?到底哪里出问题了?安卓一个版本不应该有几百GB这么大啊......我是先下载每月更新的初始 ...
用清华的下,指定对应的版本。
6.0还好,从7.0开始,是越来越大,都是上百G了。
2019-10-1 13:48
0
雪    币: 6266
活跃值: (1276)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
我指定了6.0.0_r1版本啊

但没有用啊。
6.0源码几百GB吗?我下载了别人分享的,解压后只有40GB左右。
我有点懵,不知道为什么repo会出现这种问题。
最后于 2019-10-1 13:58 被xmhwws编辑 ,原因:
2019-10-1 13:57
0
雪    币: 3907
活跃值: (5822)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
7
难为楼主了,全手动模式编译
2019-10-1 15:53
0
雪    币: 9479
活跃值: (757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
xmhwws 我指定了6.0.0_r1版本啊但没有用啊。6.0源码几百GB吗?我下载了别人分享的,解压后只有40GB左右。我有点懵,不知道为什么repo会出现这种问题。
网上下载的都是删除了 .repo 目录的,这个最庞大,所以清华镜像要先下载个 last.rar。
具体大小我也不清楚,因为从6.0以后找了台旧机器1T硬盘,编译了6.0、7.1、8.0,
下载完就把. repo 目录删了。
最后于 2019-10-1 16:07 被无边编辑 ,原因:
2019-10-1 16:04
0
雪    币: 977
活跃值: (435)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
9
感谢分享
2019-10-1 17:24
0
雪    币: 1634
活跃值: (113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
xmhwws 通过repo下载安卓6.0.0_r1,我下载了几百GB还没有下载完,无奈放弃。有没有大佬知道这是这么一回事啊?到底哪里出问题了?安卓一个版本不应该有几百GB这么大啊......我是先下载每月更新的初始 ...
init repo目录的时候加一个--depth=1的参数,
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.0_r1 --depth=1,
这样就会只拉最新的git版本。而不是把所有版本都拉下来。
最后于 2019-10-1 18:33 被TopDbg编辑 ,原因:
2019-10-1 18:32
0
雪    币: 6266
活跃值: (1276)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
TopDbg xmhwws 通过repo下载安卓6.0.0_r1,我下载了几百GB还没有下载完,无奈放弃。有没有大佬知道这是这么一回事啊?到底哪里出问题了?安卓一个版本不应 ...
感谢大佬♪(・ω・)ノ,终于有办法解决这个问题了
2019-10-1 19:59
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
可以参考这篇文章  https://blog.csdn.net/loongembedded/article/details/88714960  ubuntu 14.04 阿里云源 包含openjdk7 docker 虚拟机都能用
2019-10-30 11:45
0
雪    币: 575
活跃值: (586)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
感谢分析,mark
2020-3-30 17:32
0
雪    币: 235
活跃值: (540)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
export LC_ALL=C这个有什么作用呢大佬?百度了一圈原来卡在这儿了
2020-9-10 13:53
0
游客
登录 | 注册 方可回帖
返回
//