16.04编译android 7.0,[原创]使用ubuntu 16.04编译android-6.0.0_r1
前言
最近一直在折腾这个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)
参考
16.04编译android 7.0,[原创]使用ubuntu 16.04编译android-6.0.0_r1相关推荐
- 【指导]如何编译完整建立开发环境和编译Android 4.0.1 on Ubuntu 11.04 (64 bit)
建议大家直接飞官方这里下载: 传送门: http://source.android.com/source/downloading.html 这个是国外一个网站上的文章,大家可以借鉴一下. ...
- Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章目录 一. 前言 二.系列文章 三. 服务器配置 3.1 Repo 工具配置 3.2 AOSP 依赖配置 四. 下载源码 4.1 下载 aosp tar ball 4.2 同步代码 4.3 切分支 ...
- ubuntu linux的特点,16个新特性,让你爱上Ubuntu 20.04,
16个新特性,让你爱上Ubuntu 20.04, 如果你已经从Ubuntu 18.04 LTS升级到Ubuntu 20.04 LTS,会发现新操作系统的外观和行为与您以前运行的操作系统有所不同. 本文 ...
- 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...
- 看这里!带你快速体验MindSpore V1.0(For ubuntu 18.04)
摘要: 本文介绍了如何在Ubuntu 18.04上安装CPU版本的MindSpore V1.0.并使用安装好的MindSpore进行了LeNet的模型训练. Part One:引言 在HC2020大会 ...
- 一个纯粹的视频解码程序(基于FFMPEG 4.0,在Ubuntu 14.04下验证)
程序功能: 将指定的视频文件,解码为原始YUV数据,只包含视频流. 开发环境: Ubuntu 14.04, GCC 4.8.4, FFMPEG 4.0 编译方法: 将代码copy命名为SimpleD ...
- linux编译安装intel核显,升级至Ubuntu 9.04后解决与INTEL集成显卡兼容问题
升级至Ubuntu 9.04,解决与INTEL集成显卡兼容问题--开启桌面特效和3D特效 1.使用2.6.30rc3linux内核,按照下列顺序下载并安装: 2.运行sudo gedit /etc/X ...
- debian编译php mysql5.6_在Debian/Ubuntu上免编译安装PHP7.2~5.6
本文介绍在 Debian/Ubuntu 系统上免编译安装 PHP7.2~5.6,教程适用系统为:Debian 9.Deiban 8.Ubuntu 18.04 LTS.Ubuntu 16.04 LTS. ...
- anbox android 镜像,Anbox将使Ubuntu手机能运行Android应用程序
Anbox 就在支持Ubuntu Phone设备的OTA-3软件更新发布两天之后,Ubuntu Touch维护者UBports现在开始为用户提供即将到来的Android应用程序支持. [UBports ...
最新文章
- Python 最强编辑器详细使用指南!
- MaxCompute(原ODPS) 脑图 - 常用知识总结
- python爬虫如何从一个页面进入另一个页面-Python爬虫信息输入及页面的切换方法...
- 信息革命的新世界正在到来,连睡觉都觉得浪费
- Python 标准库 18.5 - asyncio
- springsecurity-sample中hsqldb的使用注意
- CDQ 分治与整体二分
- 一个 WordPress 安装,多个博客
- 水滴石穿之页面遮罩层实现、向window.open()打开的窗口POST数据
- Linux内核分析:recv、recvfrom、recvmsg函数实现
- Atitit 实体的概念与理解 目录 1. 使用不同的语言来描述实体	1 1.1. H5 table dom模型 json	1 1.2. Sql table	1 1.3. Java class m
- 层次分析法(小白必看手机查看)
- 免费PDF翻译,不限页数,不限字数,保留排版
- 淘宝订单信息获取接口,淘宝开放平台R2权限,淘宝开放平台订单获取接口
- 保研之路——复旦计算机学院预推免
- android 高德地图SDK报 KEY鉴权失败
- 计算机视觉 牛人主页
- linux系统访问NAS网络存储
- 计算机无法自动连接网络地址,ip地址错误网络无法连接怎么办-ip地址错误网络无法连接解决办法 - 河东软件园...
- openfalcon 组件监控_监控软件之open-falcon
热门文章
- 详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], p[0] 的含义
- 易优CMS:list的基础用法
- 计算机非全日制硕士 选校,非全日制硕士研究生,到底值不值得报考?看完这篇就懂了!...
- 246Echarts - 3D 曲面(Image Surface Sushuang)
- 管理3.0 学习词汇笔记 一 树
- linux :Java SE Development Kit 7u5
- python学习——tsv文件批量转为csv文件、csv文件列合并
- 宏转录组方法_综述:分析微生物组的最佳做法
- 2022年Behance高清大图免费下载技术分享。WIN和MAC电脑通用,官方靠谱小工具。
- arm linux 识别新硬盘_嵌入式Linux 的NTFS移动硬盘支持