googleが配布しているrepoコマンドを以下のように実行すると、
repo init -u git://android.git.kernel.org/platform/manifest.git
※初回のみ
repo sync
gitを使用してAndroidのソースコード一式入手することができるわけですが、デフォルトではダウンロードされないリポジトリが存在します。
具体的には、QualcommとHTC関連のリポジトリがデフォルトでダウンロードされないようです。
なぜデフォルトではダウンロードされないのかは不明です。(機種依存性が強くビルドしてエミュレータ上で動作させるのには不要だからでしょうか?)
京都マイコンの辻さんのつい最近のプレゼン資料でもそのように報告されています。
ソースコードから読み解く Androidの実像
http://coin.nikkeibp.co.jp/coin/ncc/semi/0812/Android_20081211_Tsuji.pdf
HTC G1のソース?(デフォルトではダウンロードされないがリポジトリに存
在する。けっこう頻繁に更新。)
– kernel/msm.git
– platform/hardware/msm7k.git
– platform/vender/htc/dream.git
他にもデフォルトでダウンロードされないリポジトリが増えてきている?ような気もするのですが、ひとまずは、以下のようにgitコマンドを直接実行することにより、手動でソースコードをダウンロードすることができます。
git clone git://android.git.kernel.org/kernel/msm.git
git clone git://android.git.kernel.org/platform/hardware/msm7k.git
git clone git://android.git.kernel.org/platform/vendor/htc/dream.git
で、実際に実行してみたところ、上記のmsm.gitをcloneするのに異常に時間がかかりました。サイズ的には574MB弱です。
追記:2009/02/16 19:40
repo init -u git://android.git.kernel.org/platform/manifest.git
リポジトリを初期化すると、.repo/manifest.xmlが作成されて、repoコマンドはこのファイルを元に、複数のgitリポジトリを管理します。
このmanifest.xmlに書かれていないプロジェクトはrepoコマンドを実行しても同期されません。
そこで、「repo manifest.xml」でググると、clmemo@akaさんの情報を見つけました。
http://at-aka.blogspot.com/search/label/repo
repoのmanifest.xmlの文法などが解説されていてとても参考になります。
gitは、clone(初回)→pull(二回目以降)→branch(ブランチしたければ)という風に使うらしいです。
なので、manifest.xmlに追記する方法もあると思いますが、Androidのmanifest.xmlの対象外のリポジトリは、
○初回(gitでcloneする)
git clone git://android.git.kernel.org/kernel/msm.git
git clone git://android.git.kernel.org/platform/hardware/msm7k.git
git clone git://android.git.kernel.org/platform/vendor/qcom/surf.git
git clone git://android.git.kernel.org/platform/vendor/htc/dream.git
○二回目以降(gitでpullする)
git pull git://android.git.kernel.org/kernel/msm.git
git pull git://android.git.kernel.org/platform/hardware/msm7k.git
git pull git://android.git.kernel.org/platform/vendor/qcom/surf.git
git pull git://android.git.kernel.org/platform/vendor/htc/dream.git
で何とかなりそうです。
追記:2009/02/21 2009/02/21
Android on x86(Eee PC) ベースポーティング手順書
こちらの2.2 Androidのソース取得に、repoコマンドに追加のリポジトリをしているする方法が載っていました。
.repo/local_manifest.xmlに以下を記述します。
<manifest>
<!– project path=”kernel/msm” name=”kernel-other/msm” / –>
<project path=”hardware/msm7k” name=”platform/hardware/msm7k” />
<!– project path=”venrodr/htc/dream” name=”platform/vender/htc/dream” / –>
<project path=”vendor/asus/eee_701″ name=”platform/vendor/asus/eee_701″ />
</manifest>
<project/>タグ内に記述する属性の意味は以下の通りです。
path=プロジェクトのローカルパス
name=プロジェクト名
(android.git.kernel.org Gitで確認できるProject名のことです)
repoコマンドを実行すると、以下のプロジェクトを取得中にrepoコマンドがハングアップしてしまうようなので今はコメントアウトしています。
kernel/msm
venrodr/htc/dream
android.git.kernel.org Gitで管理されているリポジトリをすべてrepoコマンドに対応しているわけではなさそうなので、その時は、git cloneで個別取得すればOKです。
ピンバック:Androidのソースコードをダウンロードする(1) « 突然消失するかもしれないブログ