`

自制android1.5的源码包

阅读更多

最近打算玩下android,听hong老大说最好看看源码。而android官方并没有提供直接可用的。

具体参考如下:
http://www.williamhua.com/2009/04/29/git-and-repo-for-dummies/
http://blog.michael-forster.de/2008/12/view-android-source-code-in-eclipse.html

注意:在做sources.zip的时候不能是用主干来做,要切换到origin/android-sdk-1.5_r3分支下,我是这么做的

$ git checkout origin/android-sdk-1.5_r3 -b sdk1.5r3

否则在debug的时候会定位错误; 今天刚接触这东西,不熟瞎试的,好像还要在.repo/manifest/目录下能执行上面的命令

另外用mike's blog里的python抽取java源文件好像太多了,我稍微修改一下,把android.jar包里面没有的java类都去了。

在自己建的源代码根目录建get_source.py这么个文件:

from __future__ import with_statement  # for Python < 2.6

import os
import re
import zipfile

# open a zip file
DST_FILE = 'sources.zip'
CLASS_FILE_PATH = '/home/don/desktop/android/'
if os.path.exists(DST_FILE):
  print DST_FILE, "already exists"
  exit(1)
zip = zipfile.ZipFile(DST_FILE, 'w', zipfile.ZIP_DEFLATED)

# some files are duplicated, copy them only once
written = {}

# iterate over all Java files
for dir, subdirs, files in os.walk('.'):
  for file in files:
    if file.endswith('.java'):
      # search package name
      path = os.path.join(dir, file)
      with open(path) as f:
        for line in f:
          match = re.match(r'\s*package\s+([a-zA-Z0-9\._]+);', line)
          if match and os.path.exists(CLASS_FILE_PATH + match.group(1).replace('.', '/') + '/' + file[0:-4] + 'class'):
            # copy source into the zip file using the package as path
            zippath = match.group(1).replace('.', '/') + '/' + file
            if zippath not in written:
              written[zippath] = 1
              zip.write(path, zippath)
            break;
zip.close()

对python不熟,不知道怎么读jar文件,我把android.jar解压到了桌面。运行上面代码就能生成干净的sources.zip了。

将sources.zip解压到 sdk目录下platforms/android-1.5/下即可

android-1.5下会多出一个sources文件,源文件就在里面了,重启eclipse就可以用了。

 

我把android1.5的源码包放附件里了,省得大家再做了。

 

分享到:
评论
20 楼 xff 2011-11-11  
谢谢谢谢~~~~
19 楼 Puras 2009-10-19  
houniao 写道
国内好像被墙掉了,谁有空按上面的方法做一个1.6的源码包放出来吧 呵呵


强烈希望哪位大哥能做个1.6的源码包,
强烈需求!!!!
18 楼 WongWaiting 2009-10-13  
谢谢了,不过,1.6出来了。
17 楼 houniao 2009-10-10  
国内好像被墙掉了,谁有空按上面的方法做一个1.6的源码包放出来吧 呵呵
16 楼 houniao 2009-10-10  
zzhsnow 写道
因为看不空py的代码。使用lz能否辛苦下描述下 从class-》java文件的一个算法呢?

没有class到java的过程,不是反编译
只是从几G的android源码中把android.jar中的源码给筛选出来
方法就是根据类名,类中第一行package信息,以及类所在文件夹路径三者的关系
15 楼 zzhsnow 2009-10-10  
因为看不空py的代码。使用lz能否辛苦下描述下 从class-》java文件的一个算法呢?
14 楼 superhanliu 2009-09-28  
太感谢了,正到处下载呢,原来楼主都弄好了。对新手来说很好,对没有linux和python的用户来说很好!!
13 楼 hehawjq 2009-09-16  
不错~谢谢楼主分享
12 楼 talangniao 2009-09-16  
真不错!刚开始学习
11 楼 wudi0715 2009-09-07  
非常好,正想看些android的源代码
10 楼 houniao 2009-08-21  
langhua9528 写道
不错不错,我去官方看过所有源码加起来几个G,而且不知道怎么下载。。

windows下得用cygwin
不过你可以试试这个
http://code.google.com/p/tortoisegit/downloads/list
下载完整个工程还得单独提取里面的java文件,如果要引到eclipse里的话
9 楼 ostrichmyself 2009-08-18  
再顶, 很不错,好东东
8 楼 langhua9528 2009-08-18  
不错不错,我去官方看过所有源码加起来几个G,而且不知道怎么下载。。
7 楼 lordhong 2009-08-17  
多谢!  eclipse里可以, 只要关闭项目, 关闭eclipse, 然后开启eclipse, 开启项目即可.  投15票良好, 呵呵, 希望SDK更新后LZ可以持续更新!
6 楼 houniao 2009-08-17  
ostrichmyself 写道
能从Eclipse 中直接定位到源代码不?

好像访问受限了.

android的源码被指定到sdk/platform/android-*.*/sources下了
这个好像是在它的eclipse的plugin里面写死的,只能自己解压到对应的目录下
5 楼 ostrichmyself 2009-08-17  
能从Eclipse 中直接定位到源代码不?

好像访问受限了.
4 楼 right 2009-08-17  
很有用 谢谢
3 楼 liqiuxi 2009-08-17  
感谢lz分享
2 楼 yysolo 2009-08-16  
多谢LZ分享,省却Windows下的麻烦了
1 楼 mydoors 2009-08-16  
谢谢你的分享。呵呵。

相关推荐

Global site tag (gtag.js) - Google Analytics