Ubuntu14.04 编译 Android 5.1.1源码(采用国内镜像)
欢迎转载,转载请注明出处: http://www.cnblogs.com/lanrenxinxin/p/5424554.html
之前就有编译android源码的想法,但是由于有GFW的存在,又没有梯子,连开发工具都是经过androiddevtools从百度云弄下来的,前两天发现了清华大学AOSP的镜像站点,就想着从上面git android 源码,然后编译。在这里做个简单的记录,和大家分享一下,毕竟小水管不容易,下载源码加编译花了接近两天。
1.安装openjdk-7-jdk
$ sudo apt-get install openjdk--jdk
安装好之后修改 /etc/profile 中的环境变量,将openjdk加入到JAVA_HOME中
JAVA_HOME=/usr/lib/jvm/java--openjdk-amd64/
我因为之前就有装过Oracle jdk,就直接把Open Jdk 附在了后面

然后使修改的配置文件立即生效:
$ . /etc/profile
查看java 这时使用的jdk 就是Open Jdk

接下来安装必备的工具软件
$ sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
注意,上面使官方的需要安装的包,但是在实际中,我安装的时候报错了,
ERROR:
unity-control-center : 依赖: libcheese-gtk23 (>= 3.4.) 但是它将不会被安装
依赖: libcheese7 (>= 3.0.) 但是它将不会被安装
这里的报错是因为是由 libgl1-mesa-glx:i386 报引起的,需要替换掉,更改为:
$ sudo apt-get install libgl1-mesa-glx-lts-quantal:i386
接下来配置Cache,使用下面两条命令
$ sudo apt-get install ccache
$ source ~/.bashrc
然后就是下载repo :
首先创建repo 目录
$ mkdir ~/bin
$ PATH=~/bin:$PATH
然后就是下载repo,google官方被墙了,这里用的是清华大学镜像的:
$ git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/
然后将git-repo 目录中的repo 文件拷贝到 bin目录
$ cp git-repo/repo ~/bin/
接下来打开bin目录下的repo 文件,修改其中的 REPO_URL 参数,修改为:
REPO_URL = 'git://aosp.tuna.tsinghua.edu.cn/android/git-repo'
接下来就需要初始化repo:
先创建目录aosp,就是等会要存放android源码的目录
$ mkdir ~/aosp
进入到aosp目录中
$ cd ~/aosp
初始化repo,最新的android 都可以进行下载,以下三条命令任意执行一条就可以了,会下载不同版本的android源码,我采用的是android-5.1.1
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-5.1.1_r4 $ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-6.0.1_r22 $ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-n-preview-1
在初始化的时候会要求输入名字和邮箱,正常输入就可以了。
最耗时间的步骤来了,下载android源码
$ repo sync
我在同步的过程中有好几次出现Error,不用管,加上参数 -f 继续同步
$ repo sync -f
这个过程是很漫长的,我的小水管用了一天多才同步完成。
下载完成之后就是编译了,我的计算机是双核4线程,编译的还比较快,用了差不多5个小时编译完成:
1) 设置cache
$ cd aosp
$ prebuilts/misc/linux-x86/ccache/ccache -M 50G
2) 初始化编译环境
$ . build/envsetup.sh
3)选择编译目标包
有很多中,可以用lunch命令查看,我选择的是最常用的arm
$ lunch aosp_arm-eng
4)编译
可以在 make 后设置参数,加快编译速度,我用的是
$ make -j4
表示4个线程进行编译,因为我的计算机是双核4线程,如果机器配置更好,可以开更多的线程,减少编译时间
make 失败或停止后,可以使用make -k 继续编译,不过我是一次就编译成功了。
编译成功之后

会在aosp目录下编译产生out目录
然后就可以运行编译产生的模拟器了:
$ emulator &

运行的结果就是这样:

下次如果执行emulator 命令提示command not found,则需要进入aosp目录执行. build/envsetup.sh 和 lunch 命令,lunch命令会将 prebuilts/android-emulator/linux-x86_64/ 加入到PATH环境变量中。
Ubuntu14.04 编译 Android 5.1.1源码(采用国内镜像)的更多相关文章
- [Android] repo 下载Android源码(国内镜像)
reference : http://blog.csdn.net/shenlan18446744/article/details/51490560 repo 下载Android源码(国内镜像) 下载r ...
- 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码
http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...
- 编译Android 4.4.2源码
在之前的文章中,和大家分享了在天朝下下载android 4.4.2源码的过程(详见下载android4.4.2源码全过程(附已下载的源码)),现在写下编译的笔记. 虽然在android doc中,有提 ...
- VisualBox ubuntu14.04 64位 android4.4.4源码编译总结
转载请保留出处:http://www.cnblogs.com/wi100sh/p/4337907.html 折腾了好几天,今天终于编译通过,用了4个多小时,太不容易了.如下图所示: 软件环境 虚拟机: ...
- Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程
Ubuntu 14.04 LTS 下 android 2.3.5 源码编译过程 在新的Ubuntu 64位系统下去编译早期的安卓源码是会出现很多问题的,因为64位系统在安装完成后,很多32位的兼容 ...
- Ubuntu14.04编译安装mysql5.6.26
Ubuntu14.04编译安装mysql5.6.26 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5-d ...
- Ubuntu 17.04版本下,opencv进行源码编译安装
本文主要针对Ubuntu 17.04版本下,opencv进行源码编译安装.开发环境主要针对python 对 openCV库的调用. 安装 gcc cmake 编译环境 sudo apt-get ins ...
- Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正
Android逆向之旅---反编译利器Apktool和Jadx源码分析以及错误纠正 http://blog.csdn.net/jiangwei0910410003/article/details/51 ...
- 编译Docker<v1.9.0>源码和初级安装
本文主要介绍了如何在POWER CPU处理器上编译和安装Docker服务.很多时候,我们都需要自己编译Docker源码,有的时候是由于自己的处理器没有对应的安装包,有的时候是由于当前的新版本还有发布, ...
随机推荐
- Python开发——解释器安装
Python(解释器)安装 Windows 1.Python(解释器)下载链接 2.选择好安装路径,点击安装即可 3.环境变量配置 [右键计算机]-->[属性]-->[高级系统设置]--& ...
- how to adjust PKG_CONFIG_PATH environment-variable
PKG_CONFIG_PATH is a environment variable that specifies additional paths in which pkg-config will s ...
- springmvc mybatis shiro ios android构建cms系统
开发语言: java.ios.android 部署平台: linux.window jdk版本:JDK1.7以上版本 开发工具: eclipse.idea等 服务器中间件:Tomcat 6.7.Jbo ...
- 大型互联网 b2b b2c o2o 电子商务微服务云平台
鸿鹄云商大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B.B2C.C2C.O2O.新零售.直播电商等子平台. 分布式.微服务.云架构电子商务平台 java ...
- C++ 提取网页内容系列之五 整合爬取豆瓣读书
工作太忙 没有时间细化了 就说说 主要内容吧 下载和分析漫画是分开的 下载豆瓣漫画页面是使用之前的文章的代码 见http://www.cnblogs.com/itdef/p/4171179.html ...
- 让.net core 支持静态文件
想不到默认的.net core竟然不支持静态文件,还需要额外配置中间件来支持 1.Nuget安装 Microsoft.aspnetcore.staticfiles 2.在Startup.cs中使用服 ...
- 目录命令(tree)
TREE 命令: // 描述: 以图形方式显示驱动器中路径或磁盘的目录结构. // 语法: tree [<Drive>:][<Path>] [/f] [/a] // 参数: / ...
- (PMP)第10章-----项目沟通管理
10.1 规划沟通管理 相关方的数量:(n * (n-1))/2 交互式沟通,推式沟通,拉式沟通 沟通管理计划 10.2 管理沟通 电子项目管理工具 电子沟通管理 社交媒体管理 10.3 监督沟通 B
- linux服务器时间同步失败解决方法
linux服务器时间同步失败解决方法 1.为什么会时间不同步: ①计算机的时间是根据电脑晶振以固定频率震荡而产生的,由于晶振的不同或者老化,会导致电脑时间积累误差的产 (什么是电脑晶振:http:// ...
- ASP.NET Core 统一异常处理和返回
业务场景: 业务需求要求,需要对 ASP.NET Core 异常进行统一处理和返回,比如出现 500 错误和业务服务错误进行不同的处理和返回. 具体实现: using Microsoft.AspNet ...