用git下载Android自带app的源代码

 

(1) 创建工作目录,创建并切换本地的master分支,然后检出远程的master分支

 

 

 写道
$ git clone http://android.googlesource.com/platform/manifest.git

 

 

(2) 切换到工作目录(除git clone外大多数git命令都必须在工作目录下执行)

 

 

 写道
$ cd manifest
$ ls

 

 

 

(3) 查看本地和远程分支。在没有创建新分支的情况下,本地和远程分支的名称是相同的。可以看到本地和远程各有一个叫master的分支。这里没必要用git branch XXX来创建分支,因为我无法提交代码到远程。

 

 

 写道
$ git branch
$ git branch -r
$ git branch | grep master
* master
$ git branch -r | grep master
origin/HEAD -> origin/master
origin/master

 

 

 

(4) 切换分支(是git checkout <分支名>而非git branch <分支名>)。当本地的分支不存在时,git checkout <分支名>实际上隐式地创建分支。

例如,虽然本地没有android-1.6_r1分支,但执行完检出后android-1.6_r1就被自动创建了。因为本地已经存在master分支,所以执行git checkout master并没有创建分支,而是直接切换回去。

 

 

 写道
$ git branch
* master
$ git checkout -f android-1.6_r1
Branch android-1.6_r1 set up to track remote branch android-1.6_r1 from origin.
Switched to a new branch 'android-1.6_r1'
$ git branch
* android-1.6_r1
master
$ git checkout master
$ git branch
android-1.6_r1
* master

 

 

(5) 获取远程git的路径

先用git checkout切换到platform/manifest的某个系统版本的分支。

然后打开manifest/default.xml,看到这一行

<project path="ndk" name="platform/ndk" />

就是说ndk的git clone路径为

http://android-review.googlesource.com/platform/ndk.git

方便起见这里使用http://而非https://

 

(6) 获取指定系统版本的app源代码。先

 

 

 写道
$ git clone http://android.googlesource.com/platform/manifest.git
$ cd manifest/
$ git branch -r
origin/HEAD -> origin/master
origin/android-1.6_r1
origin/android-1.6_r1.1
origin/android-1.6_r1.2
origin/android-1.6_r1.3
origin/android-1.6_r1.4
origin/android-1.6_r1.5
origin/android-1.6_r2
origin/android-2.0.1_r1
origin/android-2.0_r1
origin/android-2.1_r1
origin/android-2.1_r2
origin/android-2.1_r2.1p
origin/android-2.1_r2.1p2
origin/android-2.1_r2.1s
origin/android-2.2.1_r1
origin/android-2.2.1_r2
origin/android-2.2.2_r1
origin/android-2.2.3_r1
origin/android-2.2.3_r2
origin/android-2.2.3_r2.1
origin/android-2.2_r1
origin/android-2.2_r1.1
origin/android-2.2_r1.2
origin/android-2.2_r1.3
origin/android-2.3.1_r1
origin/android-2.3.2_r1
origin/android-2.3.3_r1
origin/android-2.3.3_r1.1
origin/android-2.3.4_r0.9
origin/android-2.3.4_r1
origin/android-2.3.5_r1
origin/android-2.3.6_r0.9
origin/android-2.3.6_r1
origin/android-2.3.7_r1
origin/android-2.3_r1
origin/android-4.0.1_r1
origin/android-4.0.1_r1.1
origin/android-4.0.1_r1.2
origin/android-4.0.2_r1
origin/android-4.0.3_r1
origin/android-4.0.3_r1.1
origin/android-4.0.4_r1
origin/android-4.0.4_r1.1
origin/android-4.0.4_r1.2
origin/android-cts-2.2_r8
origin/android-cts-2.3_r10
origin/android-cts-2.3_r11
origin/android-cts-2.3_r12
origin/android-cts-4.0.3_r1
origin/android-cts-4.0.3_r2
origin/android-cts-4.0_r1
origin/android-cts-verifier-4.0.3_r1
origin/android-cts-verifier-4.0_r1
origin/android-sdk-4.0.3-tools_r1
origin/android-sdk-4.0.3_r1
origin/android-sdk-adt_r16.0.1
origin/froyo
origin/gingerbread
origin/gingerbread-release
origin/ics-mr0
origin/ics-mr1
origin/master
origin/tradefed
$ git checkout android-2.2_r1.3
$ ls
default.xml
$ notepad default.xml
(看到这么一行
<project path="packages/apps/AlarmClock" name="platform/packages/apps/AlarmClock" />

$ cd ..
$ git clone http://android-review.googlesource.com/platform/packages/apps/AlarmClock.git
$ cd AlarmClock/
$ git branch -r
origin/HEAD -> origin/master
origin/donut-release
origin/donut-release2
origin/eclair-passion-release
origin/eclair-release
origin/eclair-sholes-release
origin/eclair-sholes-release2
origin/froyo
origin/froyo-release
origin/master
(因为Android的系统代号是按英文字母排序的,所以froyo-release是最新的发布版本)

 

 

(7) 废弃分支上的修改。由于代码不会去提交,所以对代码作出的修改可以安全地丢弃,例如不小心删除了某个文件(但新增的文件不会被删除)

 

 

 写道
$ ls
base-for-3.0-gpl.xml base-for-3.1-gpl.xml base-for-3.2-gpl.xml default.xml
$ rm default.xml
$ ls
base-for-3.0-gpl.xml base-for-3.1-gpl.xml base-for-3.2-gpl.xml
$ git checkout -f
$ ls
base-for-3.0-gpl.xml base-for-3.1-gpl.xml base-for-3.2-gpl.xml default.xml

 

 

(8) 一些有用的链接

* Downloading the Source Tree

http://source.android.com/source/downloading.html

 

* Android On Github

https://github.com/android

 

* CyanogenMod

https://github.com/CyanogenMod

 

 

20120717补:

官方的仓库列表(网页版):

https://android.googlesource.com/?format=HTML

 

 20130731补:

一些Java API包的源码位置:

 

(package java.lang.*)

platform_libcore(原为platform_dalvik子目录) 

https://github.com/CyanogenMod/android_libcore/tree/gingerbread/luni/src/main/java/java/lang

 

(package android.*)

platform_frameworks_base 

https://github.com/android/platform_frameworks_base/tree/master/core/java

 

 

 

(20131120)

android开源源码树中值得参考的界面/代码的位置(引用自code.google.com/p/kidsbbs2/)

volley: android.googlesource.com/platform/frameworks/volley

chips: android.googlesource.com/platform/frameworks/ex

photoviewer: android.googlesource.com/platform/frameworks/opt

 

 

(20141110)

Windows命令行创建ssh key(用于git clone [email protected]:xxx/xxx.git和提交私人仓库代码)

参考:

https://help.github.com/

https://help.github.com/articles/generating-ssh-keys/

https://help.github.com/articles/keeping-your-ssh-keys-and-application-access-tokens-safe/

https://help.github.com/articles/caching-your-github-password-in-git/

http://www.cnblogs.com/sheldonxu/archive/2012/09/17/2688281.html

 

环境:

Windows XP

Git-1.9.2-preview20140411(msysgit最新版http://msysgit.github.io/)

 

写道
$ git config --global user.name <github注册用户名>
$ git config --global user.email <github注册邮箱名>
$ ls -al ~/.ssh
$ ssh-keygen -t rsa -C <github注册邮箱名>
(提示save the key时,直接回车(使用默认路径保存钥匙),然后输入github注册密码(没有回响显示,会提示输入两次))
$ ssh-agent -s(官方建议,不过有问题, 20150605:应使用eval `ssh-agent -s`
$ ssh-add ~/.ssh/id_rsa(失败,改用ssh-agent bash)
$ ssh-agent bash
bash-3.1$ ssh-add ~/.ssh/id_rsa(成功, 2015年6月5日:后来发现仍然会失败
(到了这里需要手工把C:\Documents and Settings\Administrator\.ssh的id_rsa.pub文件内容粘贴到github网站->设置->SSH Keys (https://github.com/settings/ssh,点击Add SSH Key按钮),标题可以任意指定
$ ssh -T [email protected](测试,只要显示authenticated就表示成功,不要理会shell access警告)
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.
$ git clone [email protected]:xxx/xxx.git(在网页上创建github代码库,然后使用右下角的SSH clone URL克隆代码)

 

(20150605)

应使用eval `ssh-agent -s`启动授权代理进程

参考: 

http://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent

 

另外win7的路径为

C:\Users\Administrator\.ssh

可以通过执行(cd ~/.ssh;pwd)命令查看目录名

 

写道
执行ssh-add时出现Could not open a connection to your authentication agent

若执行ssh-add /path/to/xxx.pem是出现这个错误:Could not open a connection to your authentication agent,则先执行如下命令即可:

  ssh-agent bash


更多关于ssh-agent的细节,可以用 man ssh-agent 来查看

 

 * 提交代码

cd xxx (切换到工作目录)

git add . (注意后面的是一个点)(20150323:注意可以加-A参数,git add -A .表示本地删除的内容也同步到远程,使得远程的文件也被删除)

git commit -m 'adding xxx' (后面是日志内容)

git push origin master (提交到origin节点的master分支,官方的做法是git push -r origin master)

 

 (20150323)

京东云的git教程(在创建应用时会显示类似的链接,针对京东云的git代码库,部分也适用于github)

http://jae.jd.com/help/create_app.html?targ=259

见下面的faq

http://learn.zone.jd.com/cmsindex/appdetail.htm?id=97002

 

 

 

 

你可能感兴趣的:(android)