Android源代码 之 构建 编译源码的环境(Ubuntu篇)

官方已经在Ubuntu LTS (14.04)上对源代码进行了测试。其他系统也可以,笔者建议使用Ubuntu LTS (14.04)

一、系统要求:

1、Linux   或    Mac    (也可在虚拟机上的Linux下进行)

2、若要编译Gingerbread (2.3.x)及以上版本的源代码,需要64位的系统环境,Gingerbread (2.3.x)以前的版本可以在32位系统上编译。

源代码版本名称和版本号、API级别列表见:http://blog.csdn.net/u013647453/article/details/45512455

3.至少50GB用来下载源代码(a checkout),单分支编译(single build)需要100GB,多分支编译(Multiple build)需要大于等于150GB的空间。

4.Python2.6-2.7,官网:python.org(Ubuntu已内置,命令行:python可以查看版本)

5.GNU Make3.81--3.82,官网:gnu.org(Ubuntu已内置,命令行:make -version查看版本)

6.编译master 分支需要   JDK7,编译Gingerbread  至  KitKat版本需要JDK6, 编译Cupcake至Froyo版本需要  JDK5.

安装JDK7:  $sudo apt-get update

$sudo apt-get install openjdk-7-jdk  (命令行:java -version查看当前版本)

7.Git1.7及以上版本,官网:git-scm.com  (Ubuntu没有内置,使用sudo apt-get install git进行安装,安装后,git --version查看版本)

二、安装必要的包

对于Ubuntu 14.04:

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip

对于Ubuntu 12.04:

$ 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-glx:i386 \

libgl1-mesa-dev g++-multilib mingw32 tofrodos \

python-markdown libxml2-utils xsltproc zlib1g-dev:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

对于Ubuntu 10.4-11.10:

$ sudo apt-get install git gnupg flex bison gperf build-essential \

zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \

x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \

libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \

libxml2-utils xsltproc

另外对于10.10还要执行:sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

对于11.10还要执行:$ sudo apt-get install libx11-dev:i386

三、补充

1.使用Ccache。

Ccache意思是编译时的缓存(Compiler Cache),使用后可以加速重编译(rebuild)。如果经常使用make clean命令或者经常要在编译好的东西指奸切换的话,建议使用Ccache。

将下行语句添加到    .bashrc文件(~目录下)中即可。缓存的文件默认存储在~/.ccache文件夹。

export USE_CCACHE=1

建议缓存大小设置为50-100GB。Ubuntu设置命令为:(需要下载好源代码后使用)

prebuilts/misc/linux-x86/ccache/ccache -M 50G

在苹果电脑上,命令为:(将  linux-x86   改为   darwin-x86)

prebuilts/misc/darwin-x86/ccache/ccache -M 50G

若需要编译的源代码是Ice Cream Sandwich (4.0.x)及以前版本的代码,命令为:

prebuilt/linux-x86/ccache/ccache -M 50G

上述命令的执行结果会被永久的存储到   CCACHE_DIR  中。

2.改变编译的输出文件夹位置(只支持Jelly Bean (4.1)及以上版本)

默认情况下,编译的输出文件是存储在  源代码文件夹下的 out  目录中。

如果你的电脑有多个分区,将输出文件夹放到非源代码所在分区的话,可以加快编译速度。如果想要编译更快,选择存储速度较快格式的分区,不要安全性较高格式的分区。

设置方法:

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

3.系统插上USB设备无反应的问题的解决:(使用于较老的系统版本,较新的版本的系统无此问题,此方法已测试在Ubuntu  8.04.x LTS和10.04.x LTS上有效,其他版本无法保证)

新建文件:/etc/udev/rules.d/51-android.rules(root用户)

将以下内容粘贴进去,重新拔插设备即可:(其中的<username>要替换为要读取USB的用户)

# adb protocol on passion (Nexus One)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"

# fastboot protocol on passion (Nexus One)

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"

# adb protocol on crespo/crespo4g (Nexus S)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"

# fastboot protocol on crespo/crespo4g (Nexus S)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"

# adb protocol on stingray/wingray (Xoom)

SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"

# fastboot protocol on stingray/wingray (Xoom)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"

# adb protocol on maguro/toro (Galaxy Nexus)

SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"

# fastboot protocol on maguro/toro (Galaxy Nexus)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"

# adb protocol on panda (PandaBoard)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"

# adb protocol on panda (PandaBoard ES)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER="<username>"

# fastboot protocol on panda (PandaBoard)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"

# usbboot protocol on panda (PandaBoard)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"

# usbboot protocol on panda (PandaBoard ES)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"

# adb protocol on grouper/tilapia (Nexus 7)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"

# fastboot protocol on grouper/tilapia (Nexus 7)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"

# adb protocol on manta (Nexus 10)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"

# fastboot protocol on manta (Nexus 10)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"

以上内容如有谬误,敬请指出,多谢!

时间: 2024-10-17 19:41:48

Android源代码 之 构建 编译源码的环境(Ubuntu篇)的相关文章

Android View 事件分发机制源码详解(View篇)

前言 在Android View 事件分发机制源码详解(ViewGroup篇)一文中,主要对ViewGroup#dispatchTouchEvent的源码做了相应的解析,其中说到在ViewGroup把事件传递给子View的时候,会调用子View的dispatchTouchEvent,这时分两种情况,如果子View也是一个ViewGroup那么再执行同样的流程继续把事件分发下去,即调用ViewGroup#dispatchTouchEvent:如果子View只是单纯的一个View,那么调用的是Vie

idea构建spring源码阅读环境

(一)安装git和Gradle Spring项目托管在github之上,基于Gradle来构建项目.所以要想搭建Spring的阅读环境,首先需要安装github和Gradle.对于一个程序员来说,github肯定都是安好了的,这里只简单介绍一下Gradle的安装. 首先,我们可以从https://gradle.org/releases/页面下载我们需要的Gradle版本(我的是gradle-4.0.2-all).下载完成之后,解压到自己指定的目录,然后类似配置JDK一样配置环境变量: (1)根据

基于Eclipse构建Hadoop源码阅读环境

一.工具 1.hadoop-2.6.0-src.tar 2.eclipse 3.maven 4.protoc二.下载源码地址:http://mirrors.hust.edu.cn/apache/hadoop/common/三.准备maven包:eclipse-maven3-plugin M2_HOME E:\apache-maven-3.3.3 path ;%M2_HOME%\bin 测试:cmd-->mvn -v四.protoc安装 1.准备:protoc-2.5.0-win32.zip.pr

Android # 4.0.x(1-3) 源码 下载 编译

Android 4.0源码下载方法:repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1 官方下载页面:http://source.android.com/source/downloading.html Android SDK 4.0官方下载页面:http://developer.android.com/sdk/android-4.0.html android 4.0.3最新源码下载

【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

作者 : 韩曙亮  博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csdn.net/shulianghan VLC 二次开发 视频教程 : http://edu.csdn.net/course/detail/355 博客总结 : -- 本博客目的 : 让 Android 开发者通过看本博客能够掌握独立移植 VLC Media Player 核心框架到自己的 app 中,

ubuntu配置android开发环境和编译源码遇到的一些问题

---------------------------------------------环境变量设置--------------------------------------------- 1.设置jdk环境变量 编译android源码只支持jdk 1.6,所以如果需要编译源码必须下载jdk 1.6,不能下载最新的jdk 1.7,如果不需要编译源码则可以下载1.7版本的. 1.6版本jdk下载地址:http://www.oracle.com/technetwork/java/javase/d

Android源码浅析(三)——Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机

Android源码浅析(三)--Android AOSP 5.1.1源码的同步sync和编译make,搭建Samba服务器进行更便捷的烧录刷机 最近比较忙,而且又要维护自己的博客,视频和公众号,也就没仔细的梳理源码的入门逻辑,今天也就来讲一个源码的玩法,各位看官,一起学习学习! 看本篇博客之前,先看下我的前面两篇 Android源码浅析(一)--VMware Workstation Pro和Ubuntu Kylin 16.04 LTS安装配置 Android源码浅析(二)--Ubuntu Roo

Android预安装软件&adb命令&编译源码

1.预安装软件: 将apk文件拷贝到 android/platform/thirdapp/ 目录下,然后编译android源码再烧录就可以完成 当然,在该下删除apk也可以实现去掉预装软件,这应该就是很多精简rom包实现的原理 2.编译android源码 进入android源码根目录下 rm $OUT/system $OUT/data $OUT/obj/APPS -rf source build/envsetup.sh  make image 3.烧录 将编译得到的out/mt8658sdk/b

React Native Android入门实战及深入源码分析系列(2)——React Native源码编译

本文为老曾原创,转载需注明出处:http://blog.csdn.net/minimicall?viewmode=contents 在上一节中,我们通过一个相册的制作来学习了React Native编写.这一节我们需要开始学习React Native的源码. 学习源码,从编译源码开始. 首先,我们需要把代码从github中克隆下来. https://github.com/facebook/react-native.git 然后,我们可以切换到它的稳定分支,2016-03-30是我的操作时间,这个