flyingsir

Android源码获取方法。

作为一个Android开发者,必要的时候阅读以下源码可以拓宽一下自己的视野和对android的认知程度。

Google的Android的源码管理仓库是用的是Git。Android是一个开源手机终端系统,基于Linux内核的。

1、下载一个Git客户端,我使用的是Git-1.7.0.2版本

     下载地址:http://code.google.com/p/msysgit/

    

2、windows下安装Git的客户端软件很方便,和普通软件一样。安装完成后,我们在电脑上建立一个文件夹,用来存放我们将要下载的源码。比如:在D盘上简历一个android source文件夹。

我们在android source文件夹上右击鼠标,选中Git Bash选项,会打开一个窗口命令,类似CMD命令窗口。

 

命令窗口如下:

 

3、完成到此处,我们基本完成一半了。接下来我们来看看android的源码地址。

源码地址:http://android.git.kernel.org/

浏览器打开此URL地址,可以看到

 

该地址首页即告诉你如何下载源码:

git clone git://android.git.kernel.org/+工程模块的相对路径。

例如:我想下载platform/packages/apps/Launcher.git这个模块。

那么完整URL为:

git clone git://android.git.kernel.org/platform/packages/apps/Launcher.git


即在第三步打开的命令窗口输入如上完成url按回车即可,会将此模块源码下载在你的android source文件夹下。

 

 

下载完成后,去你的目标文件夹android source下看看,就会有你想要的源码。

 

 

截止到这里。windows下获取android源码的方法就结束了。

接下来我们看看在Linux下如何获取呢?

我使用的是Ubuntu10.4,你也可以使用SuSE,RedHat。说实话,我也是看到很多android在Ubuntu下编译才装的。本人之前使用的一直是RedHat和SuSE.不熟悉Linux的朋友可以先在VM上安装RedHat试试,很容易上手。SuSE部分版本在VM上显示画面有问题,SuSE还是很强大的,之前做J2EE常用。

回到正题Android上来。

 

在Ubuntu 10.4上安装Git只要设定了正确的更新源,然后使用apt-get就可以了,有什么依赖问题,就让它自己解决吧。其中curl是一个利用URL语法在命令行下工作的文件传输工具。

在Ubuntu Linux中打开终端命令窗口输入:sudo apt-get install git-core curl

 


Git会自动更新它需要的组件和依赖包,安装完成之后。同理简历一个目录,例如:android,

更改权限:chmod 777 /android

读写权限都附上。

输入的命令和windows下的命令窗口一样,如果想获取platform/packages/apps/Launcher.git这个模块源码,

输入如下命令:

git clone git://android.git.kernel.org/platform/packages/apps/Launcher.git


这些都是同一个道理。下载完成如下:

 


如果要全部下载下来,也是一样。获取platform/manifest.git即可。

 

---------------------------------------------------------------------

 

-----------------------------------------------------------------------------------

 

 

教你在Windows环境下下载Android源码(Launcher为例)

东方标准培训——android开发培训 来源:未知 点击: 170 次

    这篇文章将教大家如何在Windows环境下下载Android源码,Android 自2007年11月5号发布以来,发展速度

如此之快,和它走开源的路是分不开的。我们在开发中有什么不明白不清楚的,直接把Android 源码下下来研

究就可以了,看源代码将会让你提升很快!

在这之前大家先熟悉俩个代码版本管理工具SVN,以及Git。

SVN(Windows环境下最常用的):

svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件 都使用svn作为

代码版本管理软件。

Git:

Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分

布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于

诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

Google Android的项目是基于Git进行版本管理的,所以经常在Linux环境下开发的人,就不用我多说了,

而大都数在Windows环境开发的人,就比较陌生了。那下面我就手把手教你如何在Windows环境下

Git Android源码。

第一步:Msysgit工具的下载(这个是Google为Windows环境下开发的Git客户端程序):

http://code.google.com/p/msysgit/ 下载地址如图:

 

第二步:安装Msysgit软件(一直默认到底),如下图:

 

第三步:建立一个文件夹用来存放Git下来的Android 源码(我这里以G:/Android Src)为例,如下图:

 

第四步:右击Android Src文件夹选择Git Bash出现如下图所示:

 

第五步:查找我们要下载源代码的地址。Android的源代码是放在下面地址下:

http://android.git.kernel.org/

 

这里以Launcher为例,我们Ctrl + F查找:输入Launcher如下图所示:

 

点击链接进入另一个页面:

 

第六步在Git Bash端输入如下命令,命令格式(如上图图示)

git clone git://android.git.kernel.org/platform/packages/apps/Launcher.git

 

在Receiving Objects: 100%时候,我们在G:/Android Src/文件夹下多一个工程Launcher,这正是我们所要的,如下图所示:

 

Ok通过以上的步骤我们就把Android Launcher的源代码拿到手了,下面就剩下你研究了!


 

-----------------------------------------------------------------------------------

 

android源码开发

已有 589 次阅读 2011-7-8 21:31 |个人分类:android

   android提供的工具链和开发工具比较完善,因此它的开发环境的搭建比较简单,相信许多朋友都已经搭建好环境,并编写了HelloActivity入门程序了。这里先看几个问题:
  1、android的文件系统结构是怎样的,我们安装的程序放在那里?
编译android源码之后,在out/target/product/generic一些文件:
ramdisk.img、system.img、userdata.img、 system、 data、root
其中, system.img是由 system打包压缩得到的, userdata.img是由 data打包压缩得到的。
ramdisk.img是模拟器的文件系统,把ramdisk.img解压出来可知道,ramdisk.img里的文件跟root文件夹的文件基本一样。
模拟器装载ramdisk.img并解压到内存,接着分别把system.img和userdata.img挂载到ramdisk下的system和data目录。我们编译出来的应用程序就是放在system/app下的。用户安装的程序则是放在data/app下。

  2、android SDK和android源码能为我们提供什么工具?
   android SDK提供有很多工具,如adb,ddms,emulator,aapt等,并提供kernel-qemu、ramdisk.img、 system.img、userdata.img。因此,只要有android SDK,我们就可以在模拟器上把android跑起来。
android源码可以编译出android SDK、adb等工具、android文件系统,以及ADT插件,也就是说,我们可以从android源码编译出所有android相关的东西。
   3、 把android源码”make”之后会生成许多工具和android文件系统(system.img等),我们又可以使用“make sdk”来生成android SDK,android SDK也包括有工具和android文件系统(system.img等),而原来安装的时候我们也安装了android SDK,那么我们在开发时应该使用那些工具和android文件系统呢?
这个问题在后面回答。
   4、官方推荐我们使用 eclipse+adt进入开发应用程序,我们的HelloActivity程序也是这里开发的。当我们把android源码/packages /apps/下的工程导入eclipse时,一般都会出现找不到包的错误。那么我们怎样修改、编译、调试android源码呢?Google又是用什么工 具来开发android的?
这个问题在后面回答。

下面系统地讲述android开发环境建立以及开发工具的使用
   一、android SDK和eclipse的安装以及android开发环境建立
android工具链比较完善,需要外部的工具比较少。具体的安装过程可参考官方文档或<<android模拟器在ubuntu8.10的安装>>和<<android源码的编译>>。
这 里需要注意的是,用”make”来编译android源码时,我们可以使用JDK5或JDK6;用”make sdk”来编译时,会用到javadoc来生成文档,javadoc就必须使用JDK5的javadoc,否则编译是通不过的。因此,我们可以把JDK5 和JDK6都装上,然后只把javadoc和javadoc.1.gz指向JDK5相应的工具,其它工具还是用JDK6的。当然,我们可以只安装JDK5 或只用JDK5的工具。具体操作可以参考<<android源码的编译>>

二、使用eclipse来开发android源码
这里主要参考官方文档
https://sites.google.com/a/android.com/opensource/using-eclipse
下面,从官方文档总结出具体怎样用eclipse来开发android源码
1、建立基本的android开发环境
请参考官方文档或<<android模拟器在ubuntu8.10的安装>>
2、编译android源码
android源码根目录下通过make进行编译,请注意一些配置,具体可参考<<android源码的编译>>
3、把eclipse工程配置文件复制到android源码根目录下
cp development/ide/eclipse/.classpath ./
chmod u+w .classpath  # Make the copy writable
4、修改eclipse程序的配置
1)、增大eclipse内存设置
eclipse.ini(在eclipse软件的安装目录下)的3个值改为下面的值:
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
2)、把android-formatting.xml和android.importorder导入eclipse(可选)
android-formatting.xml、.classpath和android.importorder都放在development/ide/eclipse/下
android-formatting.xml用来配置eclipse编辑器的代码风格;android.importorder用来配置eclipse的import的顺序和结构。
window->preferences->java->Code style->Formatter中导入android-formatting.xml
window->preferences->java->Code style->Organize Imports中导入android.importorder
3)、安装anyedit插件(可选)
http://andrei.gmxhome.de/anyedit/下载并导入eclipse中

5、把android源码作为一个工程导入eclipse
导入前先检查.classpath里的文件在android源码中是否有相应的文件(文件夹),否则也会破坏android源码(一般是多添加文件/文件夹),.classpath里多余的路径可删除
新建Java Project(不是android project,否则会破坏android源码),选择从已存在的工程导入,工程名任意,完成。
导入时,eclipse要build工程,比较慢。导完后,一般都没有错误。
这里也就回答了第4个问题

6、eclipse上调试android里的程序。
为了不让其它版本的android工具和android文件系统影响下面的编译和调试,需要从环境变量中去除android工具和android文件系统的路径:
vim ~/.bashrc
看看有没有在PATH变量中加入android工具和android文件系统的路径,如果加有,则注释它。通过下面的方法,我们是不需要在.bashrc中添加android工具和android文件系统的路径的
执行:
cd android源码目录
. build/envsetup.sh #设了环境变量之后,会多出mmm等命令,可以通过输入help来查看
lunch 1   # 把emulator等工具和ramdisk.img等文件的路径对应起来,就可以直接调用emulator等工具,也解决了第3个问题
emulator &
ddms &
注意,先启动ddms,再启动eclipse,这样eclipse中就不会说端口冲突
然后在eclipse中配置调试类型和端口:
Run->Debug Configurations->Remote java application上双击,然后,”Host:”设为localhost,”Port:”设为8800,”Connection Type”为Standard(Socket Attach)
然后“Apply”
注意,上面设置的端口要与DDMS中设置的端口一致,ADT插件使用了8700端口,因此上面设置的端口是8800。如果出现连不到VM的错误时,请注意,要先在DDMS中选中某一进程(对应某一应用程序),才能在eclipse执行 Debug。
eclipse调试时,可以设断点、单步调试。估计google团队也是这样开发、调试android应用程序的

7、编译android源码
执行:
cd android源码目录
. build/envsetup.sh
那 么就会多出mm/mmm等命令,mm/mmm用来编译模块(包括C、C++、JAVA程序)。我们也可以直接在 android源码根目录下执行“make 模块名”来编译模块(模块名可以在.mk文件中找到)。模块编译后会在out/target/product/generic/system/app下生成对应的.apk包。但是,用mm/mmm来编译生成的.apk并不会打包到system.img中,需要我们手动通过make snod把 system文件夹打包为system.img,不过这就得重新运行模拟器了,这也是很麻烦了。对于我们开发者来说,我们可以这样做:
1)把需要修改、调试的模块(比如AlarmClock.apk)从/system/app下移除,然后

分类:

技术点:

相关文章: