专栏首页潇涧技术专栏Build Android Source Code on Mac

Build Android Source Code on Mac

本文记录下搭建Android源码编译环境的流程。

趁着国庆长假,抽出些时间来记录下最近倒腾的一些内容,第一个需要记录的自然是Android源码编译的流程。上班第一天就干了一件事,编译Android 6.0源码,第二天就是编译Flyme系统啦!但是编完系统之后刷到PRO6里面还有点小鸡冻呢!

Ubuntu系统下的Android源码编译环境搭建

如果是在Ubuntu系统下进行编译的话,中文文档请参考自己动手编译最新Android源码及SDK或者Gityuan写的编译最新的7.0源码的文章搭建Android 7.0的源码环境,英文文档主要看Google官方的文档,包括前提要求篇环境准备篇以及源码编译篇,如果磁盘空间充足并且网络环境通畅的话,编译通过是没啥问题的。

特别需要注意以下几点: 0.磁盘空间的大小 按照Google官方的说法是,checkout代码至少需要100GB空间,单个编译的话至少需要150GB空间,多类型的编译的话至少需要200GB空间(实际我下载完代码之后大约占用了50GB左右)。而且,如果你是在虚拟机的Linux中编译的话,还需要满足至少有16GB的RAM/swap。

1.Ubuntu系统的版本和JDK的版本 Ubuntu系统推荐使用14.04,而且安装好系统之后如果有提示软件更新,建议更新一下。此外,推荐在设置中设置软件更新的远程服务器,将其设置为China下的aliyun服务器,这样速度会快很多。

JDK版本需要根据你要编译的Android系统版本来确定,而且还需要注意是Oracle JDK还是Open JDK!可以在系统中多安装几个版本的JDK,以后使用update-alternatives --config命令来切换。

2.Android源码的分支 详细的分支列表可以在这里查看,当然,repo init的时候也可以不指定分支。

Mac系统下的Android源码编译环境搭建

关于是否在自己的MBP上搭建android编译环境的问题我纠结了很久,原因是自己的磁盘剩余空间真的不多了,后来在网上找到了Mac笔记本的扩容卡,对于我这款MBP来说最大可以扩容256GB!虽然有点贵,但是,为了Android,豁出去啦!

在Mac系统上进行Android源码编译的话可以参考Mac下设置Android源代码编译环境这篇文章,主要步骤分别是创建大小写敏感的磁盘、安装依赖包、下载Android源码然后编译就行了。

对于第一步,创建磁盘操作我是直接将买来的扩容卡格式化成OS X Extended(Case-sensitive Journaled)格式。

第二步是安装JDK、Xcode、MacPorts,这三个在我当前的系统中都已经有了,检查下版本是否可以就行,之后就是通过MacPorts安装几个依赖包,POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg

这一步我遇到了一个坑,简单描述下:我目前的系统一直以来都是通过系统的更新而升级过来的,所以大概有2年左右的时间没有重装了(嗯,我就是在夸Mac系统好☺️),系统环境也慢慢变得相当复杂了。之前用MacPorts,后来用Homebrew,但是大家都知道brew doctor的时候总是会提醒MacPorts如何如何的,建议你移动它的位置,后来我貌似是移动了还是怎么的,系统的MacPorts不能正常工作了,利用安装工具反复安装了很多次都卡在了最后的Running package scripts这个步骤,访问外国网站状态下安装也是如此,最后的解决方案是利用MacPorts的源码安装一次就好啦!还有就是,不管你的MacPorts是否正常,建议执行一次sudo ports -v selfupdate进行更新升级一次,如果失败可能是网络连接的问题,可以试试MacPorts的其他镜像。

第三步是下载Android源码,大家都知道在国内的话需要找镜像,我选择的是清华大学的TUNA镜像。建议下载它的初始化包,大约20多GB,待解压并且完成repo sync之后建议将这个初始化包保存到移动硬盘中存起来,然后删除本地的初始化包,这样可以省下大量的磁盘空间。

对于Mac系统最后还需要在~/.bash_profile中设置ulimit -S -n 1024以增加最大文件打开数量。

最后一步是执行编译,lunch时我选择aosp_arm64_eng为target,并启动6个线程进行编译make -j6

Anyway,最后我还是没能在Mac上编译成功,貌似机器的配置还是不够,算了,还是用来看代码吧。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android Dependency Injection Libraries

    本文总结并对比了三种Android依赖注入库:Butter Knife、RoboGuice、Android Annotations的使用

    宅男潇涧
  • Python Algorithms - C8 Dynamic Programming

    Python算法设计篇(8) Chapter 8 Tangled Dependencies and Memoization

    宅男潇涧
  • Android Heroes Reading Notes

    最近有幸认识了很多国内安卓开发的大神,每每想到这里都感觉自己总算是找到了组织,步入了正轨。(^o^) 前段时间购入了几位大牛们写的书,这些书都是好评如潮啊,哈哈...

    宅男潇涧
  • AndroidStudio阅读Android源码终极篇

    几乎在所有的教程里面,都提到说,要阅读Android源码,需要完整编译一次源码,比如我之前的文章使用AndroidStudio阅读Android源码。但是这个完...

    用户2930595
  • Eclipse——编译已有工程出现“ No rule to make target”的解决方案

    【问题】:使用Eclipse打开已有工程后,编译出现如下错误“ No rule to make target”;

    Winter_world
  • Windows下编译64位CGAL

    CGAL的官网准备了压缩包和安装程序两种类型的的源代码,推荐使用安装程序包,因为其中自带了编译好的gmp和mpfr库。gmp和mpfr是CGAL的依赖库,如果自...

    charlee44
  • .Net Micro Framework移植环境准备

    移植准备 .Net Micro Framework移植必须安装PK最新版本,可以从官网(http://netmf.codeplex.com/)下载,建议安装到C...

    大石头
  • readlink: command not found 解决方案

    /c/Program Files (x86)/Yarn/bin/yarn: line 3: readlink: command not found 用gitba...

    smy
  • Windows下PCL1.9.1配置(编译源码)

    PCL1.9.1并没有支持vs2015版本的exe版本,然后需要下载PCL的源码重新自己CMake编译出vs2015版本的

    点云PCL博主
  • 交叉编译学习笔记(一)——交叉编译和交叉工具链

    交叉编译学习笔记(一)——交叉编译和交叉工具链 最近看论文看的烦,又重新拾起之前没有完全完成的交叉编译,准备在网上找资料,好好研究一下。 参考链接: htt...

    剑影啸清寒

扫码关注云+社区

领取腾讯云代金券