Android 查看源码

Android在eclipse中调试经常看不到源码很郁闷,所以网上查了很做资料终于搞定了。
解决方法
下载android的source code
下载地址
http://dl.iteye.com/topics/download/794cf3a9-5436-3354-add9-aae1ff26a338
 
源码解压缩到
..android\android-sdk-windows-1.5_r3\platforms\android-1.5

重启eclipse,可以看到android.jar中的内容了,虽然不全但是好多了。
----------------------------------------------------------------
使用Git下载Google Android源代码

准备资源
Android资源分布说明:http://source.android.com/projects#TOC-External-projects
Android的Git资源:http://android.git.kernel.org/
Git中文教程:http://www.bitsun.com/documents/gittutorcn.htm
Git下载地址:http://code.google.com/p/msysgit/

步骤:
1 下载msysgit工具,安装
2 参考“Android的Git资源”上的说明,git想要的工程
----------------------------------------------------------------
ubuntu 9.04上下载android源码

作为开源手机操作系统,android一经推出,便引来业界极大的关注。Google现在的android源码的版本号已经是1.50r1的。越来越多的爱好者开始加入到android源码的研究中,下面就ubuntu 9.04上如果去获得android最新源码。

1.      安装git 和gnupg 。输入

$sudo apt-get install git-core gnupg 

2.    安装其它工具

$sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

3.  安装valgrind 工具

$sudo apt-get install valgrind 

4.  安装java sdk

$sudo apt-get install sun-java6-sdk

$sudo apt-get install sun-java5-sdk

$cd /etc/alternatives
$sudo rm javadoc.1.gz javadoc
$sudo ln -s /usr/lib/jvm/java-1.5.0-sun/man/man1/javadoc.1.gz javadoc.1.gz
$sudo ln -s /usr/lib/jvm/java-1.5.0-sun/bin/javadoc javadoc

android 仅支持1.5 以上版本的java sdk ,且1.6 版本的java sdk 在进行android sdk 编译时会出现java doc 错误,在这里我的解决办法时先安装java sdk 1.6, 接着安装java sdk 1.5, 然后将系统的java sdk 链接到java sdk 1.6 上,仅是将javadoc 和javadoc.1.gz 链接到java sdk 1.5 上,这样做的好处是在编译android 源码和进行android 应用开发时,使用的是java sdk 1.6, 仅在编译android sdk 的doc 时,使用的是java sdk 1.5 版本的javadoc 和javadoc.1gz 。

5.        下载 repo 工具

$mkdir  $HOME/bin

$vi  .bashrc

加入

export  PATH=$HOME/bin:$PATH

$source  .bashrc

$ curl   http://android.git.kernel.org/repo > $HOME/bin/repo

$ cd   $HOME/bin

$ chmod  +x   repo 

6.        导出 android 项目

$ cd

$ mkdir  Android

$ cd  Android

$ repo init -u git://android.git.kernel.org/platform/manifest.git
并完成提示的配置,这样我们建立的目录就已经和 Google 的 android 源码库建立了链接。



7.        开始下载 android platform 的源代码

$ repo sync

由于 android 的源码很大,现在完整的代码已经高达 3G 以上,所以最分文件夹进行同步下载。如要下载 kernel :

$repo sync kernel

现在,就可以做别的事,让电脑自动完成源码的下载工作。


----------------------------------------------------------------
fix_android_sdk.py上下载android源码
各位调试Android程序的时候遇到“source not found”错误应该很抓狂吧,Goolge在发布SDK时没有把源代码包含进去着实有点让人费解,对很多人来说Git无疑是个生涩的东西,而 framework中所有Java代码加起来打个包也就是20多MB。更要命的是,Android Eclipse plugin (ADT)不允许我们在项目属性中attach源代码到android.jar上。好在Eric Burke找到了把source加入到SDK中的办法,通过分析ADT的源代码我们知道ADT是从SDK目录下的“sources”目录来查找class对应的源代码,这样我们只要把源代码放到sources目录中ADT就可以自动找到对应的源代码了。

那么接下来的问题是,我们需要把哪些源代码加入到SDK中,我们又如何得到这些源代码呢?
我之前的文章Android Scripting Environment动手玩中提到过一个fix_android_sdk.py脚本,用来解决编译ASE的时候找不到android.os.Exec包的问题,事实上这个脚本还做了另一件事,即遍历整个< android-source >目录,把其中所有的Java代码复制到了SDK的sources目录中。ASE Wiki的CompilingASE中提到,编译ASE需要Android的代码树,而我当时告诉大家了一个取巧的方法,即只要下载frameworks/base的android- 1.5r2这个tag的snapshot就行,因为android.os.Exec包就在其中,这足已解决我们编译ASE的问题。

回到我们把源代码加入到SDK上来,有了fix_android_sdk.py脚本(这里我们并不需要把android.os.Exec包编译并添加到android.jar,所以我把脚本中的这个功能去掉了,点击下载修改后的脚本 http://www.williamhua.com/wp-content/uploads/2009/06/fix_android_sdk.py),如果你已经通过repo下载了完整的代码树(需要注意版本的对应),那么一切都很简单。按照下面的方法,把android源代码和SDK目录作为参数传给它即可。
fix_android_sdk.py < android-source > < android-sdk >
执行完成以后,在\platforms\android-1.5目录下就会生成一个sources目录,其中包含了android代码树中所有的Java代码,并且都根据包名存放各自的目录,再次Debug代码的时候ADT就可以找到相应的源代码了。

如果手上没有完整的代码树,又想快速的把源代码添加到SDK呢?看过Android的代码树就会知道,除了frameworks/base以外,还有很多framework的代码其实是在Dalvik目录下,另外还有常用的apache http的包位于external/apache-http目录下,所以要获得用于调试的比较完整的framework源代码,我们至少需要从 Android的代码库中下载platform/dalvik.git、platform/frameworks/base.git、platform/external/apache-http.git这三个project(20090729,Update,platform/frameworks/policies/base.git的源代码也很有用,不过解压的时候留下为智能手机准备的phone目录就够了,至于mid,这是为MID设备准备的policy)。把下载回来的文件解压到同一个目录下,目录结构随意,接下来利用fix_android_sdk.py脚本就可以把Java文件提取出来。用这种方法来提取framework的源代码比下载整个代码数来得快很多,而且提取的结果和从完整的代码树比较来看,仅仅是少了我们Debug时完全用不到的 Android中捆绑的Application的源代码,以及jdiff、tagsoup、clearsilver等包的代码(这3个包我都没有接触过,如果各位觉得有必要,可以自行下载并按上面提到的方法来添加源代码,它们都在platform/external下)。

最后,如果你连上面这几个包也懒得下载,懒得装Python执行环境,那么Android Forum上有一个讨论Source code for android.jar的帖子正适合你,帖子的第10楼和11楼提供了提取好的Android 1.5 SDK源代码(虽然未必100%和你的SDK匹配,也总比满眼的source not found好吧),解压缩到你SDK下的sources目录即可。

你可能感兴趣的:(java,eclipse,android,git,ubuntu)