Android源码下载及开发环境的搭建

1、前言

        前一博文给自己列了一下Android的学习计划,是时候一个个的完成了。如计划列的,我要写的第一篇是《Android源码 的下载及开发环境的搭建》,致于如何去下载源码,其实网上已经一大堆的帖子了,一搜就有。但在这里,我想说,一个源码的下载,不是简单的把源码下载下来之 样就OK了,就可以开始你的源码学习之旅。要想更好的学习源码和进行开发,一个适合自己的开发环境还是必不可少的,这里我会列出来我给自己准备的开发环境 的做法,不能说明是最优的,但至少我感觉对我来说还是挺方便的。

 

2、硬件环境准备

         Android源码的开发环境,对机子的要求还是挺高的。首先,源码的大小就接近10G,编译完之后,占用的空间骤增到逼近 20G了。而源码的编译过程中,而且还有一种可能是在编译的时候报错了,编译就这样中断了,一直找不到原因的所在,却万万没想到,自己虚拟机的内存分配太 小了,导致编译失败。一增大分配的内存大小,就正常的编译过去了。

        自我全用的感觉,如果是虚拟机里面安装的话建议如下:

        1、虚拟机里分配的硬盘大小至少60G(可设置为动态增长就好了) ;

        2、内存大小分配至少1.5G(自家的电脑就2G而已,为止又买了个4G的);

        但如果是双系统的,那就不用说了。

        

        Android源码如官网介绍的在linux和mac系统环境下进行下载,Windows还是不支持哦。

 

3、Android 源码下载

        这里简单的弄出源码下载的一些步骤,可以完成ubuntu环境下的下载,而对于Mac系统或是更多详细的环境下载信息,可以在 Android官方网站上查看http://source.android.com/source/initializing.html。

3.1 Android 源码编译环境准备

3.1.1 JDK安装

        由于sun 的已经不再存在于ubuntu的主要包分支中,所以为了下载它,需要添加源路径,以便下载到正确版本的JDK。ubuntu里面自带安装的openjdk会导致Android编译失败。

 
java 6: Android2.3及以上版本

1 $ sudo
add-apt-repository "deb http://archive.canonical.com/ lucid partner"
2 $ sudo
apt-get update
3 $ sudo
apt-get install
sun-java6-jdk

3.1.2 添加需要的包

64位系统:

1 $ sudo
apt-get install
git-core gnupg flex bison gperf build-essential \
2   zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
3   x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
4   libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
5   libxml2-utils xsltproc

对于ubuntu 10.10:

1 $ sudo
ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

对于ubuntu 11.10:

1 $ sudo
ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

32位系统:

1 $ sudo
apt-get install
git-core gnupg flex bison gperf build-essential \
2   zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \
3   libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \
4   libxml2-utils xsltproc

以上的方式可以正常的在ubuntu下完成源码编译环境的设置。完成以上的步骤设置,就可以接下来的源码下载了。这个时候无法去确认,只能在源码的编译过程中,碰到了错误,再来解决问题。

 

3.2 源码下载

 

     P.S:有此时候,环境需要设置上网代理。这里需要在终端里面进行代理设置,否则是不能正常的进行下载操作。

    设置代理在终端上设置:

1 $export
http_proxy=http://username:pwd@yourproxyaddress:proxyport
2 $export
https_proxy=https://username:pwd@yourproxyaddress:proxyport
3 #查询是否设置成功可以使用echo命令打印出刚设置的代理,或可以正常显示出设置的值说明,已经设置完成。
4 $echo
$http_proxy
5 $echo
$https_proxy

3.2.1 下载repo

    由于Android源码内容及模块很多,谷歌使用了git的版本控制工具,并对不同的模块设置不同的git服务器,又自行研发了repo工具,把上百的git工程,统一起来。只需要一个repo文本,便可以从上百的git服务器,取到完成的Android源码。

    在用户目录下,创建bin文件夹,用于存放repo,并把该路径设置到环境变量中:

1 $ mkdir
~/bin
2 $ PATH=~/bin:$PATH

下载repo的脚本,用于执行repo.

1 $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
2 $ chmod
a+x ~/bin/repo

以上为正常的下载完成的效果。

 

3.2.2 初始化一个repo的客户端

 
      创建一个空的目录,用于存放android源码。

1 $ mkdir
myandroid
2 $ cd
myandroid

在上面创建的目录下运行repo进行下载源码:


    下载主线分支,主分支里面包含着最新修改的bugs,并未正式发出版本的最新源码。

1 $ repo init -u https://android.googlesource.com/platform/manifest

下载其他分支,正式发布的版本,可以通过添加-b的命令下载下来。

1 $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

以上操作初始化了一个repo客户端,设置分支的方向。
出下以下信息,说明了已经在正常的进行客户端下载操作。 在下载过程中会需要填写Name及Email,填写完之后,选择Y进行确认。
最后,提示repo初始化完成在所在的目录下,这里也可以看到当前的目录下有一个隐藏文件.repo/ 这个文件里面设置着一些初始化的信息。
接下来就是代码同步的过程了,这个过程很漫长,也需要很有耐心。

虽然只是一个简单的命令,即:

1 $ repo sync

效果如下:(若出现了new branch 、new tag说明已经在正常的同步过程了)这时只需要等待其完成,这个同步的时间会很久,因为Android的代码全部下载下来了,也包括着其他的分支。整个源 码大概会有16G左右,惟有等待了,但这个时候可以用来准备一下开发环境。

 

   下载一个漫长的过程,在下载的过程中,有可以会有中断的情况,这时需要重新的repo sync,进行继续的同步了。下载完成的最后,会有许多100%的下载成功的提示,

 

3.3.1 构建本地开发分支

        主要是构建本地开发分支,在本地的开发分支上可进行添加和修改自己想要的代码。

      

       在源码的根目录下

1 $git --git-dir
.repo/manifests/.git/ branch -a

以上这些就是分支的名称,当希望去切换到其他分支上的时候,这里以切换到android-4.0.3_ri,并创建自己的开发分支为例如下:

1 $repo init -b android-4.0.3_r1
2 #初始化客户端到某一分支
3 $repo sync
4 #进行同步,此时更新的速度比一开始的源码下载要快得多了,大概个把小时可完成
5 $repo start myandroid4.0.3 --all
6 #构造本地分支,取一个分支名称myandroid4.0.3
7 $repo checkout myandroid4.0.3
8 #检出到自己创建的分支上。

4、开发环境搭建       

 

4.1 开发环境搭建结构图 图4-1 Android源码开发环境搭建   

 

上图画出我在对Android源码上的学习和工作上所设置的开发环境。这是目前为此我感觉比较合适的方式。

        对于上面的几点,解决以下几点:

        1、为何不直接在ubuntu环境下直接去使安装eclipse就好了?

        理由: 对于我个人来说,编辑和修改代码还是习惯于window环境下,ubuntu里面的环境只是个别情况下才去进行编译,这里面所设计的开发环境适用于习惯基 于window下写代码的,如果可本身就已经习惯在ubuntu下进行开发,可直接在ubuntu里面安装eclipse即可。

        2、为什么使用samba来映像挂载,而不是使用mount,直接把window下的目录直接挂载到ubuntu上就好了?

        理由:如果以mount的方式,把window的目录挂载到ubuntu上,再把源码移至挂载的目录上,就会发现,复制或移动 的过程中,会报出文件已经存在的现象,提示是否替换。这个原因很简单,windows下的文件系统对文件名的大小写不敏感,对于它来说a.txt和 A.txt其实是同一个文件,而对于linux系统来说a.txt和A.txt则是两个不同的文件。Android源码也正因为有这样的同名却大小写一致 的情况,所以只能支持在ubuntu环境下。这时就需要把ubuntu环境下的目录给挂载出来,以samba挂载出来的目录实为ubuntu下的,所以其
文件系统是基于linux的。这样的方便不会导致破坏源码的现象.

        3、为何这里要使用Xmanger工具。

        理由:工具只是为了提高工作效率,Xmanger工具里面包含着很多实用的小工具,包括Xshll,Xftp等终端命令访问和 文件操作,更方便的避免了windows和ubuntu的切换而浪费的时间。Xshell只是作为windows下的窗体,方便窗口间的切换。

 

 

4.2 samba环境搭建

 

4.2.1 安装samba与smbfs

1 $ sudo
apt-get install
samba
2 $ sudo
apt-get install
smbfs

4.2.2 创建共享的文件夹

        对于网络映射可见的文件夹目录,放在这文件夹里面的文件可被访问到。

1 $ mkdir
/home/sammor/share
2 $ chmod
777 /home/ray/share #设置文件夹的权限为777

4.2.3 备份并编辑smb.conf允许网络用户访问

1 $ sudo
cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
2 $ sudo
gedit /etc/samba/smb.conf

搜寻以下一行文字

1 ; security = user

改为:

1 $ security = user
2 $ username map = /etc/samba/smbusers

将下列几行新增到文件的最后面,假设允许访问的用户为:nancy。而文件夹的共享名为 share

01 [Share]
02 comment = Shared Folder with username and password
03 path = /home/sammor/share
04 public = yes
05 writable = yes
06 valid users
= sammor
07 create mask = 0700
08 directory mask = 0700
09 force user = sammor
10 force group = nogroup
11 available = yes
12 browseable = yes

找到[global]把 workgroup = MSHOME  改为:

1 workgroup = WORKGROUP
2 display charset = UTF-8
3 unix charset = UTF-8
4 dos charset = cp936

上面假设新增加的用户名为nancy,故现在需要添加该用户

1 $ sudo
useradd nancy
2 $ sudo
smbpasswd -a nancy
3 $ sudo
gedit /etc/samba/smbusers

在新建立的文件中加入下面的一行并保存

1 nancy = "network username"

删除网络上用的帐号的命令把 -a改为-x

1 sudo testparm
#如果显示出之前设置的信息,即成功设置上了
2 sudo /etc/init.d/samba restart
#有可能找不到对应的文件,但此时已经成功启动了

4.2.4 win7/xp中创建映射网络

        计算机—>右击“映射网络驱动器”—>填写虚拟机中的IP及对应的共享 的文件share,确定之后需要填写网络上的帐号和密码(即上面创建的为nancy用户),如果顺利的话,可以连接上,这时在此映射文件夹里面,创建和修 改的文件可以在ubuntu系统里面看到了。

 

后面的三行是为了防止出现中文目录乱码的情况。其中根据你的local,UTF-8 有可能需要改成 cp936。

 

4.3 源码导入eclipse

 

4.3.1 设置eclipse的相关配置

       进入eclipse的安装目录中,找到eclipse.ini文件,修改该文件中的。 

1 -Xms40m
2 -Xmx256m
3 -XX:MaxPermSize=256m

为能支持Android源码查看,改为:

1 -Xms128m
2 -Xmx512m
3 -XX:MaxPermSize=256m

4.3.2 提取android对eclipse的支持的配置文件

 

从android源码的路径中找到

把.classpath复制到源码的根目录上,为了导入eclipse作准备。

 

而对于android-formatting.xml、android.importorer,导入eclipse中。

 

打开eclipse,在eclipse中

1、 Window > Preferences > Java > Code Style.

2、 Formatter > Import to import android-formatting.xml.

3、Organize Imports > Import to import android.importorder.

 

4.3.2 修改.classpath

        对于eclipse,每一个工程都对应着一个.classpath,而android源码中,也已经准备好了该文件。但这里需 要对.classpath文件进行确定每一个目录路径是否存在,否则可能会导入工程时产生源码的影响。因为工程还未进行编译,帮这里面主要不存在的路径是 out/目录。


4.3.3 创建工程,导入源码

        

        使用eclipse的java project的方式进行项目工程创建,而不是用Android project的方式(该方式会破坏源码的结构)。

        1、  File > New > java  project.

        2、 取工程名,并引导指定源码存在的路径。

        3、 直接Finish进入,并等待完全结果。

4.3.4 源码的修改

        当外面repo sync去更新码时,需要在eclipse进行同步变化,则需要:

        1、Window > show View > Navigator

        2、在该视图下面,右击对应的工程名字

        3、点击refresh进行更新

         

reference

1、android源码: http://source.android.com

2、samba安装参考: http://forum.ubuntu.org.cn/viewtopic.php?t=20852

时间: 2024-08-24 05:05:53

Android源码下载及开发环境的搭建的相关文章

android源码下载方式

android源码下载方式: 方式一: 1) 创建~/bin $ mkdir ~/bin$ PATH=~/bin:$PATH 2) 下载repo $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo$ chmod a+x ~/bin/repo 3) 创建保存Android源码文件 $ mkdir WORKING_DIRECTORY$ cd WORKING_DIRECTORY 4 ) 下载Androi

Android源码下载网站

javaapk安卓源码服务专家为您提供专业的安卓手机cocos2dx游戏源码下载.安卓项目源码下载.安卓商业应用源码下载.android app源码以及游戏源程序下载服务.所有android源码都经过严格的人工测试确保可用,源码每日更新.安卓快速开发从javaapk开始. 推荐给大家看看. 网址:http://www.javaapk.com/wp-login.php?action=register&refid=15745

android NDK 在Ubuntu10.04开发环境的搭建

最近可能要用到调用jni,我对NDK和Jni了解非常的少,今天根据网络上的一些博客搭建了一下NDK的开发环境,但是继续往下编译jni这些就不会了,如果有哪位看到了,希望能帮帮忙 下面我将今天搭建NDK的步骤分享一下: 1.下载android-ndk-r8d源码 (或者去下载最新的包:http://developer.android.com/tools/sdk/ndk/index.html) 2.解压过后,配置环境     a)cd  ~     b)vim .bashrc     c)在文件的最

《Android的设计与实现:卷I》——第1章 1.3Android源码下载和编译

1.3 Android源码下载和编译 Android源码的开发需要Linux环境,读者可以安装Ubuntu 10.04及其后续版本,推荐安装Ubuntu的10.04或者12.04这两个LTS(长期技术支持)版本.本书基于Jelly Bean(Android 4.1)分析源代码,该部分源代码的编译需要64位操作系统环境.本节将介绍如何在Ubuntu 12.04(LTS)-64bit上搭建Android源码开发所需环境,这是保障后续步骤能够顺利进行的前提条件,必须准确无误.Android源码分成上层

我的Android进阶之旅------>如何将Android源码导入Eclipse中来查看(非常实用)

Android源码下载完成的目录结构如如所示: step1:将.classpath文件拷贝到源代码的根目录 Android源码支持多种IDE,如果是针对APP层做开发的话,建议大家使用Eclipse开发环境.在源码路径(~/development/ide/eclipse)下,Android提供了.classpath配置文件(备注:该文件为隐藏文件). cp development/ide/eclipse/.classpath ./ chmod u+w .classpath # Make the

Android源码编译make的错误处理

Android源码下载: 官方下载:http://source.android.com/source/downloading.html 或参考android源码下载方式:http://blog.csdn.net/sunboy_2050/article/details/6746810 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35- 30-generic #61-Ubuntu

android 源码编译出现的错误

问题描述 android 源码编译出现的错误 xxxxx@compiler:~/xxxx/0313-test-1/0313/packages/xxxx/myTV$ mm -B PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=4.4.2TARGET_PRODUCT=m201TARGET_BUILD_VARIANT=userTARGET_BUILD_TYPE=releaseTARGET_BUILD_APPS=TARGET_ARCH=armTARGET_AR

Eclipse与Android源码中ProGuard工具的使用

由于工作需要,这两天和同事在研究android下面的ProGuard工具的使用,通过查看android官网对该工具的介绍以及网络上其它相关资料,再加上自己的亲手实践,算是有了一个基本了解.下面将自己的理解和认识简要的做个笔记,有异议或者不解的,可以直接留言. 什么是ProGuard工具? ProGuard是android提供的一个免费的工具,它能够移除工程中一些没用的代码,或者使用语义上隐晦的名称来重命名代码中的类.字段和函数等,达到压缩.优化和混淆代码的功能.具体来说,使用ProGuard工具

android studio-Android studio除了做app开发还能不能看Android源码

问题描述 Android studio除了做app开发还能不能看Android源码 现在想做ADB和Fastboot的移植,于是想在Android环境下编译ADB和Fastboot. 在网上看到一篇文档, 说的是" Both adb and fastboot are available for download within the ADT Bundle " 下载了Android studio 之后,在SDK Manager安装了那些tool和API,可是发现不知道从哪里看ADB哪些的