前言

最近一直在折腾这个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相关推荐

  1. 【指导]如何编译完整建立开发环境和编译Android 4.0.1 on Ubuntu 11.04 (64 bit)

    建议大家直接飞官方这里下载: 传送门:      http://source.android.com/source/downloading.html  这个是国外一个网站上的文章,大家可以借鉴一下. ...

  2. 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 切分支 ...

  3. ubuntu linux的特点,16个新特性,让你爱上Ubuntu 20.04,

    16个新特性,让你爱上Ubuntu 20.04, 如果你已经从Ubuntu 18.04 LTS升级到Ubuntu 20.04 LTS,会发现新操作系统的外观和行为与您以前运行的操作系统有所不同. 本文 ...

  4. 安卓9.0刷linux,Ubuntu系统下编译Android 9.0系统

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 前言 在Ubuntu系统下编译Android系统.哎呀不知道是不是换了新电脑的缘故,这次编译居然从安装JDK和配置环境下 ...

  5. 看这里!带你快速体验MindSpore V1.0(For ubuntu 18.04)

    摘要: 本文介绍了如何在Ubuntu 18.04上安装CPU版本的MindSpore V1.0.并使用安装好的MindSpore进行了LeNet的模型训练. Part One:引言 在HC2020大会 ...

  6. 一个纯粹的视频解码程序(基于FFMPEG 4.0,在Ubuntu 14.04下验证)

    程序功能: 将指定的视频文件,解码为原始YUV数据,只包含视频流. 开发环境: Ubuntu 14.04, GCC 4.8.4, FFMPEG 4.0 编译方法:  将代码copy命名为SimpleD ...

  7. linux编译安装intel核显,升级至Ubuntu 9.04后解决与INTEL集成显卡兼容问题

    升级至Ubuntu 9.04,解决与INTEL集成显卡兼容问题--开启桌面特效和3D特效 1.使用2.6.30rc3linux内核,按照下列顺序下载并安装: 2.运行sudo gedit /etc/X ...

  8. 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. ...

  9. anbox android 镜像,Anbox将使Ubuntu手机能运行Android应用程序

    Anbox 就在支持Ubuntu Phone设备的OTA-3软件更新发布两天之后,Ubuntu Touch维护者UBports现在开始为用户提供即将到来的Android应用程序支持. [UBports ...

最新文章

  1. Python 最强编辑器详细使用指南!
  2. MaxCompute(原ODPS) 脑图 - 常用知识总结
  3. python爬虫如何从一个页面进入另一个页面-Python爬虫信息输入及页面的切换方法...
  4. 信息革命的新世界正在到来,连睡觉都觉得浪费
  5. Python 标准库 18.5 - asyncio
  6. springsecurity-sample中hsqldb的使用注意
  7. CDQ 分治与整体二分
  8. 一个 WordPress 安装,多个博客
  9. 水滴石穿之页面遮罩层实现、向window.open()打开的窗口POST数据
  10. Linux内核分析:recv、recvfrom、recvmsg函数实现
  11. Atitit 实体的概念与理解 目录 1. 使用不同的语言来描述实体 1 1.1. H5 table dom模型 json 1 1.2. Sql table 1 1.3. Java class m
  12. 层次分析法(小白必看手机查看)
  13. 免费PDF翻译,不限页数,不限字数,保留排版
  14. 淘宝订单信息获取接口,淘宝开放平台R2权限,淘宝开放平台订单获取接口
  15. 保研之路——复旦计算机学院预推免
  16. android 高德地图SDK报 KEY鉴权失败
  17. 计算机视觉 牛人主页
  18. linux系统访问NAS网络存储
  19. 计算机无法自动连接网络地址,ip地址错误网络无法连接怎么办-ip地址错误网络无法连接解决办法 - 河东软件园...
  20. openfalcon 组件监控_监控软件之open-falcon

热门文章

  1. 详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], p[0] 的含义
  2. 易优CMS:list的基础用法
  3. 计算机非全日制硕士 选校,非全日制硕士研究生,到底值不值得报考?看完这篇就懂了!...
  4. 246Echarts - 3D 曲面(Image Surface Sushuang)
  5. 管理3.0 学习词汇笔记 一 树
  6. linux :Java SE Development Kit 7u5
  7. python学习——tsv文件批量转为csv文件、csv文件列合并
  8. 宏转录组方法_综述:分析微生物组的最佳做法
  9. 2022年Behance高清大图免费下载技术分享。WIN和MAC电脑通用,官方靠谱小工具。
  10. arm linux 识别新硬盘_嵌入式Linux 的NTFS移动硬盘支持