首页
社区
课程
招聘
[原创]使用ubuntu 16.04编译android-6.0.0_r1
发表于: 2019-11-3 14:30 4781

[原创]使用ubuntu 16.04编译android-6.0.0_r1

2019-11-3 14:30
4781

前言

最近一直在折腾这个android源码从Mac到docker再到ubuntu14.04,最后换了ubuntu 16.04,前前后后花了大概2个星期,感觉自己就是自带bug的男人。。。呵呵了,记录一下吧(求大佬勿喷)

虚拟机安装

安装虚拟机ubuntu 16.04,并分配200G的硬盘空间,3个处理器,以及4g的内存。

安装jdk7

安装openjdk7

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk

配置OpenJDK.打开/etc/profile文件:

sudo gedit /etc/profile

在末尾追加下面代码:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

最终效果

下载依赖包

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

repo工具下载&&配置git用户名

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
git config --global user.name "Simp1er"
git config --global user.email "simp1er_sec@163.com"

静待下载完毕

下载源码

mkdir source
cd ./source
echo export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/ >> ~/.bashrc
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.0_r1 --depth=1

repo sync

静待下载完毕,为了进一步让我们的代码可以在真机上运行,仅仅是下载这部分源码是不够的,我们还需要下载对应的二进制驱动,这里由于我的测试机为Nexus 5,我们从这里下载对应的二进制驱动并解压到源码目录下,并分别运行三个shell文件,

最后解压出vender目录到当前目录
repo sync出现错误

get: error: RPC failed; 
curl 56 GnuTLS recv error (-12): A TLS fatal alert has been received. 
fatal: The remote end hung up unexpectedly 
fatal: The remote end hung up

解决办法

git config --global http.sslVerify false
git config --global http.postBuffer 1048576000

编译

设置编译器缓存

export USE_CCACHE=1
export CCACHE_DIR=ccache
prebuilts/misc/linux-x86/ccache/ccache -M 50G

导入android源码所需环境

source build/envsetup.sh //配置android源码所需环境变量以及其他

选择编译目标

这里我们选择userdebug模式

lunch aosp_hammerhead-userdebug


最后编译

make -j6

这里的6根据CPU核心个数乘以2加二,最后坐看听着风扇呼呼的吹,然后静待编译成功。

 

编译过程中出现错误

make: fork: Cannot allocate memory


原因: 内存不够
解决办法: 关机,增加虚拟机内存大小为8g

clang: error: linker command failed with exit code

貌似这是一个ubuntu 16.04会出现的问题,最终解决办法是将art/build/Android.common_build.mk文件第75行ifneq ($(WITHOUT_HOST_CLANG),true)改为ifeq ($(WITHOUT_HOST_CLANG),false)

参考

Ubuntu 18.04.3 LTS 编译安卓6.0.0_r1

 

记一次安卓系统源码编译刷机过程。

 

Android7.0Rom编译相关

 

编译Android源码的坑

 

git error: RPC failed; curl 56 GnuTLS

 

Android软件安全权威指南(jd链接)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 180
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
openjdk 7 已经不能安装了,请问下您是怎么解决的?
2019-11-3 20:29
0
雪    币: 634
活跃值: (1503)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
单身汉丶司 openjdk 7 已经不能安装了,请问下您是怎么解决的?
AOSP有自带
2019-11-4 14:02
0
雪    币: 2270
活跃值: (5537)
能力值: ( LV8,RANK:146 )
在线值:
发帖
回帖
粉丝
4
单身汉丶司 openjdk 7 已经不能安装了,请问下您是怎么解决的?
我上面写了啊
2019-11-4 15:00
0
雪    币: 12502
活跃值: (3058)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
只求把asop里面的aarch交叉编译工具链上传一哈。。。
2019-11-7 12:42
0
雪    币: 1385
活跃值: (5609)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
6
你还要把vendor纳入一起编译的。不然可能移动卡没用。
2019-11-8 08:43
0
雪    币: 10945
活跃值: (7334)
能力值: ( LV12,RANK:219 )
在线值:
发帖
回帖
粉丝
7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
build/core/host_shared_library_internal.mk:51: recipe for target 'out/host/linux-x86/obj32/lib/libart.so' failed
make: *** [out/host/linux-x86/obj32/lib/libart.so] Error 1
编译到最后 因为这个失败了 是什么原因呢 ?
2019-11-9 07:43
0
游客
登录 | 注册 方可回帖
返回
//