51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2634|回复: 2

[转]获取Android SDK 源代码并在Eclipse中关联查看的方法(for sdk2.3)

[复制链接]
  • TA的每日心情
    擦汗
    2024-3-11 11:30
  • 签到天数: 534 天

    连续签到: 1 天

    [LV.9]测试副司令

    发表于 2014-4-3 11:09:07 | 显示全部楼层 |阅读模式
    在Google搜索“Android Eclipse 源代码”得到的结果并不合适,因为Google的Eclipse Android开发插件已经更新到了ADT 8.0.1.相应的lib关联java源代码的方式也变了。
    以下是获取Android的Java源代码并在Eclipse中关联的最新操作方法和步骤:
    1.首先下载Android的SDK安装文件:http://dl.google.com/android/android-sdk_r08-windows.zip
    然后解压到:E:\Java\android\android-sdk-windows,运行目录中的SDK Manager.exe,下载好Android不同版本的API包。

    2.然后下载或在线安装Eclipse插件ADT,
    安装包地址为:http://dl.google.com/android/ADT-8.0.1.zip
    在线安装地址:https://dl-ssl.google.com/android/eclipse/
    来源:ttp://developer.android.com/sdk/eclipse-adt.html

    2.ADT插件安装好之后,下载我已经打包好的Android 2.3(gingerbread)的java源代码压缩包:
    下载地址:http://lizongbo.googlecode.com/f ... erbread_javasrc.zip
    来源:http://code.google.com/p/lizongbo/downloads/list
    下载后复制到E:\Java\android\javasrc。

    3.Android的Java源代码压缩包下载好之后,在Eclipse中设置好SDK配置:
    操作步骤为:主菜单->Window–>Preferences–>选择Android,SDK Location设置为:E:\Java\android\android-sdk-windows,然后点右下角的Apply来生效。

    4.开始进行关联Android的源代码,在Eclipse中新建一个Android工程,选中工程,主菜单 –>Project–>Properties–>选择Android,Project Build Target选中Android 2.3。
    然后再点左边的“Java Build Path”,切换到 Libraries 面板,展开 Android2.3 这个lib,点击android.jar的Source attachment,再点Edit.在对话框中点“External File”,选择E:/Java/android/javasrc/android_gingerbread_javasrc.zip,点OK进行确认。这样就把Android的java代码关联好了。

    5.在同一个工程中,选中工程,主菜单–>Project–>Properties–>选择Android,Project Build Target分别选择Android1.5,Android1.6,Android2.01,Android2.1- update1,Android2.2,按上面第四步的操作重复设置关联。
    以后在任何Android工程里按住Ctrl用鼠标点击Java类名都可以浏览到对应的java源代码。
    Android各个版本对应的源代码为:
    Android1.5对应android_cupcake_javasrc.zip
    Android1.6对应android_donut_javasrc.zip
    Android2.01和Android2.1-update1对应的是android_eclair_javasrc.zip
    Android2.2对应android_froyo_javasrc.zip
    Android2.3对应android_gingerbread_javasrc.zip

    6.在Eclipse配置好源代码关联之后之后的信息会存储在:
    E:\lizongbo\workspacenew\.metadata\.plugins\org.eclipse.core.resources\.root\.indexes\properties.index
    E:\lizongbo\workspacenew\.metadata\.plugins\org.eclipse.jdt.core\variablesAndContainers.dat







    同时记录Android的java源代码压缩包制作方法如下:
    1.先在远程的Ubuntu Linux服务器(是Linode VPS)上安装以下组件(JDK1.6已经安装好了):
    sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
    信息来自Android官方:http://source.android.com/source/download.html
    2.运行 sudo apt-get install lib32readline5-dev
    3.安装Repo脚本:
    我懒得配PATH了,于是直接安装到了/usr/local/bin。
    http://apps.hi.baidu.com/share/detail/:void(0):~/bin# cd /usr/local/bin
    http://apps.hi.baidu.com/share/detail/:void(0):/usr/local/bin# ls
    geoip-lookup
    http://apps.hi.baidu.com/share/detail/:void(0):/usr/local/bin# curlhttp://android.git.kernel.org/repo >/usr/local/bin/repo
    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    Dload  Upload   Total   Spent    Left  Speed
    100 17412  100 17412    0     0  27517      0 –:–:– –:–:– –:–:– 31148
    http://apps.hi.baidu.com/share/detail/:void(0):/usr/local/bin# chmod a+x /usr/local/bin/repo
    注意在下载该脚本的时候,可能会遇到服务器出错,下载的内容不对,运行命令的时候会提示错误“syntax error near unexpected token `newline’”。
    http://apps.hi.baidu.com/share/detail/:void(0):/usr/local/bin# repo init -ugit://android.git.kernel.org/platform/manifest.git -b cupcake
    /usr/local/bin/repo: line 1: syntax error near unexpected token `newline’
    /usr/local/bin/repo: line 1: `<!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>’
    http://apps.hi.baidu.com/share/detail/:void(0):/usr/local/bin# more repo
    <!DOCTYPE HTML PUBLIC “-//IETF//DTD HTML 2.0//EN”>
    <html><head>
    <title>500 Internal Server Error</title>
    </head><body>
    <h1>Internal Server Error</h1>
    <p>The server encountered an internal error or
    misconfiguration and was unable to complete
    your request.</p>
    <p>Please contact the server administrator,
    http://apps.hi.baidu.com/share/detail/:void(0) and inform them of the time the error occurred,
    and anything you might have done that may have
    caused the error.</p>
    <p>More information about this error may be available
    in the server error log.</p>
    </body></html>
    从内容看是服务器出错了,因此需要重新下载脚本.
    4.建立mydroid目录,按代码分支下载对应版本的Android完整的源代码,比如下载Android2.3的代码:
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid# mkdir gingerbread
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid# cd gingerbread/
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/gingerbread# repo init -ugit://android.git.kernel.org/platform/manifest.git -b gingerbread
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/gingerbread# repo sync
    Android1.5的代码分支:
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/cupcake# repo init -ugit://android.git.kernel.org/platform/manifest.git -b cupcake
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/cupcake# repo sync
    Android1.6的代码分支:
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/donut# repo init -ugit://android.git.kernel.org/platform/manifest.git -b donut
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/donut# repo sync
    Android2.0.1和2.1的代码分支:
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/eclair# repo init -ugit://android.git.kernel.org/platform/manifest.git -b eclair
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/eclair# repo sync
    Android2.2的代码分支:
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/froyo# repo init -ugit://android.git.kernel.org/platform/manifest.git -b froyo
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/froyo# repo sync

    如果遇到代码下载速度太慢,可以指定hosts,hosts配置不住为:
    http://apps.hi.baidu.com/share/detail/:void(0):~/mydroid/gingerbread/.repo/projects# nslookup
    > android.git.kernel.org
    Server:         72.14.188.5
    Address:        72.14.188.5#53
    Non-authoritative answer:
    android.git.kernel.org  canonical name = android.git.geo.kernel.org.
    android.git.geo.kernel.org      canonical name =android.git.us.kernel.org.
    Name:   android.git.us.kernel.org
    Address: 149.20.20.141
    Name:   android.git.us.kernel.org
    Address: 204.152.191.45
    > exit

    http://apps.hi.baidu.com/share/detail/:void(0):/etc# vi hosts
    204.152.191.45 android.git.us.kernel.org
    204.152.191.45 android.git.kernel.org

    网上有文章介绍使用提取java文件并打包的pytho脚本可以生成源代码包,参考:

    http://android.opensourceror.org/2010/01/18/android-source/

    http://blog.michael-forster.de/2 ... ode-in-eclipse.html
    Python下载地址:http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi
    但是在Android2.2和Android2.3的代码里,Android写一了一些mock的类,比如android.webkit.WebView,使用python脚本打包的话,会把mock的源代码打进去,而不是真正的源代码,
    因此我根据python脚本写了个java程序来提取java文件过滤冗余的java代码并打包。
    生成的java源代码压缩:android_cupcake_javasrc.zip,android_donut_javasrc.zip,android_eclair_javasrc.zip,android_froyo_javasrc.zip,android_gingerbread_javasrc.zip
    目前在code.google.com上传了android_gingerbread_javasrc.zip,欢迎下载。

    以下是各版本的Android java source 下载地址:

    Android2.3:http://lizongbo.googlecode.com/f ... erbread_javasrc.zip

    Android1.5:http://lizongbo.googlecode.com/files/android_cupcake_javasrc.zip
    Android1.6:http://lizongbo.googlecode.com/files/android_donut_javasrc.zip
    Android2.1:http://lizongbo.googlecode.com/files/android_eclair_javasrc.zip
    Android2.2:http://lizongbo.googlecode.com/files/android_froyo_javasrc.zip

    转载:http://618119.com/archives/2011/01/01/201.html
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    发表于 2014-6-24 11:22:53 | 显示全部楼层
    感谢果子分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2016-8-23 15:39
  • 签到天数: 44 天

    连续签到: 1 天

    [LV.5]测试团长

    发表于 2015-11-18 14:53:40 | 显示全部楼层
    学习了!谢谢分享
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 03:23 , Processed in 0.071608 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表