由于公司会安排我做硬解码这块,所以最近一直想研究一下Android源码,可是Android源码的下载真的挺麻烦的(可能是我第一次下载),参照网上的方法,没有一个可行的,现在就将我的下载过程和大家分享一下,如果有什么地方没有说清楚或者写错了,希望大家拍砖(哈哈)。

开始步入正题吧。。其实网上很多文章给出了下载方法,但是可能那时以前的方法,现在貌似已经失效了,我给出一个连接,如果大家英文很好,可以直接上去了解一下:
http://source.android.com/source/building.html

在介绍下载之前,我先说一下要注意的事情:

1、环境要是Ubuntu或者Mac电脑,由于Mac比较少,所以我这里使用的是Ubuntu10.04.

如果你是要编译Android2.2(或者之前)的版本,那么你可以使用32位的,但是如果编译2.3(或之后),那么最好使用64位。

2、JDK的选择,在2.2(或者之前)可以使用1.5的,但是在2.3之后要使用1.6

3、我是在虚拟机上运行Ubuntu,磁盘最好设置大一些,我给的是50G

4、如果是自己私人使用,我建议使用root账户登录,因为避免经常使用sudo操作,感觉挺麻烦的。

下面开始下载:

1、安装Git和Curl:apt-get install git-core curl;

2、安装Repo

mkdir -p ~/develop/download

cd develop/download

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo >./repo

chmod a+x repo

repo init -u https://android.googlesource.com/platform/manifest -b android-2.2_r1

(http://source.android.com/source/build-numbers.html)这个版本号可以到这个网址去查,我是下的这个版本, -b表示分支,如果你要下载其他版本,把这个版本号改了即可。我这个大概2G,所以3个小时就下完了。

3、repo sync  执行了这个之后,你就慢慢的等待吧

下面完成后,就是编译了,编译之前切忌要设置好环境变量:

我这里简单的举个例子:

在.bashrc文件中加入如下内容(不懂的可以查看Linux相关书籍)

export JAVA_HOME=/root/develop/jdk1.5

export JRE_HOME=$JAVA_HOME/jre(这个在java开发中貌似可以不用设置,但是这里希望你设置)

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH(这里一定要设置jre_home/bin,如果不设置,后面会报choosecombo找不到)

开始编译吧,我是使用的make方式编译的,但是不是编译整个工程,编译android源码主要有三种方式:make,mmm,mm

make:如果不带参数,那么将会编译整个系统,这个比较费时间,一般不会这么干,我是编译的framework,如  make framework

make有个特点就是我指定某一个模块后,它会将该模块依赖的模块都进行编译。

mmm:该命令是编译指定目录下的目标模块,但是不编译它依赖的模块,所以如果是第一次编译,那么往往会报错,使用方法如:mmm packages/providers/MediaProvider

mm:这种方式和上面的方式有点类似,只不过它需要进入到目录中,如cd  packages/providers  然后mm MediaProvider

mm也不会编译模块依赖的其他模块。

编译之前执行两个操作:进入到下载根目录:(1) source build/envsetup.sh  (2) choosecombo

这里我使用的make编译  make framework

在编译的过程中,遇到如下常见错误:

问题:bison: command not found

解决方案:sudo apt-get install bison

问题:

g++: command not found

解决方案:Ubuntu软件中心,选择安装g++;

问题:
error: zlib.h: No such file or directory

解决方案:
apt-get install zlib1g-dev

问题:

flex: command not found

解决方案:
sudo apt-get install flex

问题:

cannot find -lncurses

解决方案:
sudo apt-get install libncurses-dev

如果使用root登录,可以不用sudo

我遇到的就这些吧,如果大家按照我这样做的,相信都可以成功。

Android源码的下载和编译的更多相关文章

  1. Android源码的下载、编译与导入到Android Studio【转】

    本文转载自:http://wl9739.github.io/2016/05/09/Android%E6%BA%90%E7%A0%81%E7%9A%84%E4%B8%8B%E8%BD%BD%E3%80% ...

  2. Android源码和内核源码的下载,编译和执行

    笔者依据罗升阳老师的<Android 系统源码情景分析>一书,尝试下载,编译和执行Android源码和内核源码.但可能是软件源"被墙"或版本号更新的原因.期间遇到诸多问 ...

  3. 【转】Android 源码下利用jni编译自己的项目(参考系统development/samples/SimpleJNI)

    原文网址:http://blog.csdn.net/qiuxiaolong007/article/details/7860481 记于正文前:环境是ubuntu10.10,android 源码是2.0 ...

  4. Atitit.反编译apk android源码以及防止反编译apk

    Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool  apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...

  5. 【转】Android 4.3源码的下载和编译环境的安装及编译

    原文网址:http://jingyan.baidu.com/article/c85b7a641200e0003bac95a3.html  告诉windows用户一个不好的消息,windows环境下没法 ...

  6. 关于android源码中的APP编译时引用隐藏的API出现的问题

    今天在编译android源码中的计算器APP时发现,竟然无法使用系统隐藏的API,比如android.os.ServiceManager中的API,引用这个类时提示错误,记忆中在android源码中的 ...

  7. Android源码批量下载及导入到Eclipse

    1.去http://code.google.com/p/msysgit/downloads/list  下载Git,进行安装 2.生成批量下载脚本文件  下载批量工具CreatAutoGetSh(工具 ...

  8. ubuntu下android源码的下载(最新)

    在ubuntu下下载android源码我断断续续搞了好几个月,希望大家不要向我学习啊!一次性搞定! 这里给大家一些建议啊,如果是看书的话看下书的出版日期,超过一年的基本上失效,网上的也是,特别是在国内 ...

  9. 从 Android 源码到 apk 的编译打包流程

    文中涉及到的工具所在目录:Android/sdk/build-tools.下面开始分解并逐步实现对源码的打包. 编译流程 1. 生成仅包含资源文件的 apk 包和 R.java 文件 根据资源文件和 ...

随机推荐

  1. SQL Server 中的跨库视图

    SQL Server 中的跨库视图 在一个SQL中,有多个数据库,A.B.C,在使用C为连接库中,现在要查询A中的表T1. 那么,在C中建创视图(A_T1). SELECT *FROM A.dbo.T ...

  2. sql server varchar(10)和 nvarchar(10)存储数据长度

    ) 存储10个字母,英文标点符号等,5个汉字以及中文标点等. )存储10汉字.字母等,不区分中英文.

  3. 第三条:私有化构造器或者枚举类型强化Singleton属性

    1.5版本之前,我们通常实现单例模式有两种方式: 两种方法前提都是私有化构造器,然后通过不同的方式获取对象. 第一种:通过公共的静态变量获取 public class Elivs{ // 私有化构造器 ...

  4. codeforces 650B . Image Preview 二分

    题目链接 B. Image Preview time limit per test 1 second memory limit per test 256 megabytes input standar ...

  5. poj 3469 Dual Core CPU 最小割

    题目链接 好裸的题....... 两个cpu分别作为源点和汇点, 每个cpu向元件连边, 权值为题目所给的两个值, 如果两个元件之间有关系, 就在这两个元件之间连边, 权值为消耗,这里的边应该是双向边 ...

  6. [LeetCode]题解(python):137-Single Number II

    题目来源: https://leetcode.com/problems/single-number-ii/ 题意分析: 给定一个数组,数组里面每一个数字都出现了3次除了一个,找出那个数.要求时间复杂度 ...

  7. Ceph相关博客、网站(256篇OpenStack博客)

    官网文档: http://docs.ceph.com/docs/master/cephfs/ http://docs.ceph.com/docs/master/cephfs/createfs/   ( ...

  8. ViewPager不能高度自适应?height=wrap_content 无效解决办法

    ViewPager用的很多,主要用啦展示广告条.可是高度却不能自适应内容,总是会占满全屏,即使设置android:height="wrap_content"也是没有用的.. 解决办 ...

  9. hdu 4497 GCD and LCM(2013 ACM-ICPC吉林通化全国邀请赛——题目重现)

    质分解 + 简单计数.当时去比赛的时候太年轻了...这道题都没敢想.现在回过头来做了一下,发现挺简单的,当时没做这道题真是挺遗憾的.这道题就是把lcm  / gcd 质分解,统计每个质因子的个数,然后 ...

  10. Sencha Touch 2 结合HTML5的本地存储创建数据库实现增、删、改、查

    大家好!我是范范.本人刚接触ST2到现在刚刚两个月,6月1号接的项目,那时才知道有Sencha Touch2这个东西,到现在两个月了期间的幸酸就不说了.今天说说在项目中用到的HTML5的本地存储.可能 ...