用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) 废弃分支上的修改。由于代码不会去提交,所以对代码作出的修改可以安全地丢弃,例如不小心删除了某个文件(但新增的文件不会被删除)
写道 $ lsbase-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 git@github.com: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 git@github.com(测试,只要显示authenticated就表示成功,不要理会shell access警告)
Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.
$ git clone git@github.com: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 来查看
* 提交代码
(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工程创建的jar包使用proguard进行混淆
- Android(安卓)进阶——Framework 核心四大组件之跨进程共享组件C
- Android(安卓)双开沙箱 VirtualApp 源码分析(四)启动插件 Service
- Android(安卓)通过配置 productFlavors 实现多版本差异化打包
- Android中对/data/data//files下文件的读写操作
- android SDK的常用命令工具和资源
- 三.如何创建窗口模式的Activity
- Handler:使用方式
- 查看 android 现在有什么分支