Android SDKのソースコードをrepoコマンドでダウンロードする
Android SDKのソースコードが欲しくなったのでダウンロードしました。以前はブラウザからダウンロードする方法があったのに、なんかrepo
コマンドを使ってリポジトリからチェックアウトしないと、入手する方法がなくなっているようです。これが結構ややこしいので、後で忘れたときの為にメモっておきます。
repoコマンドの準備
$ curl -LO https://dl-ssl.google.com/dl/googlesource/git-repo/repo $ cd /usr/local $ sudo mkdir repo $ cd repo $ sudo mv ~/repo . $ sudo chmod a+x repo $ ln -s ../repo/repo ../bin/repo
ソースコードの取得
$ cd ~/Dev $ mkdir Android_source $ cd Android_source $ repo init -u https://android.googlesource.com/platform/manifest warning: gpg (GnuPG) is not available. warning: Installing it is strongly encouraged. 省略 Your Name [myname]: Your Email [myname@localhost]: Your identity is: myname <myname@localhost> is this correct [y/n]? y repo initialized in /Users/myname/Dev/Android_source
どういう工程か良く分かりませんが、まずここまでやります。
ブランチを指定してないので、repo init -u https://android.googlesource.com/platform/manifest -b master
の様にmasterを指定した扱いになります。
この例の場合、Android_sourceがワーキングディレクトリとなります。
repo
を使うのは、恐らくAndroid SDK自体の開発者となるからなのか、名前とメールアドレスの入力が必要です。
ブランチ名を調べる
$ ls -1 .repo/manifests.git/logs/refs/remotes/origin/ android-1.6_r1 android-1.6_r1.1 android-1.6_r1.2 android-1.6_r1.3 android-1.6_r1.4 android-1.6_r1.5 android-1.6_r2 android-2.0.1_r1 android-2.0_r1 android-2.1_r1 android-2.1_r2 android-2.1_r2.1p android-2.1_r2.1p2 android-2.1_r2.1s android-2.2.1_r1 android-2.2.1_r2 android-2.2.2_r1 android-2.2.3_r1 android-2.2.3_r2 android-2.2_r1 android-2.2_r1.1 android-2.2_r1.2 android-2.2_r1.3 android-2.3.1_r1 android-2.3.2_r1 android-2.3.3_r1 android-2.3.3_r1.1 android-2.3.4_r0.9 android-2.3.4_r1 android-2.3.5_r1 android-2.3.6_r0.9 android-2.3.6_r1 android-2.3.7_r1 android-2.3_r1 android-4.0.1_r1 froyo gingerbread gingerbread-release ics-mr0 master
initまでしてあれば、上記ディレクトリを見てブランチ名が調べられます。
$ repo init -b froyo
もし、masterではなく例えばfroyoのソースコードが欲しい場合は、ブランチを切り替えます。
実際にダウンロードする
$ repo sync
initが終わったらsyncする事で実際にワーキングディレクトリにソースコードが入ってくるわけですが、これがかなり時間かかります。ちゃんと計ってませんが1時間くらいかかりました。
eclipseに登録する部分
$ cd /path/to/AndroidSDK/platforms/android-10 $ cp /Users/myname/Dev/Android_source/frameworks/base/core/java sources
Android SDKのソースコードが欲しかったのは、eclipseからSDK部分のメソッドやクラスの宣言部分を、すばやく開けるようにしたいからです。調べてみたところ、frameworks/base/core/java
がそれに必要な部分らしいので、上記のようにAndroid SDKの方にコピーしました。
なお、この例だとandroid-10にコピーしてるけど、取ってきたソースコードのバージョンに合わせて変えないとです。
補足
ブランチの切り替え
$ repo init -u https://android.googlesource.com/platform/manifest -b froyo $ repo sync
これは、最初からブランチを指定する場合。
$ repo init -b froyo
$ repo sync
既にrepo sync
して取得済みのを別ブランチに切り替える場合は、ワーキングディレクトリで上記の手順になります。repo sync
しなおす必要があるので、それなりの時間がかかると思います。
Android SDKのソースコードは、HEADよりはFroyoやGingerbreadのリリース時点のが欲しいわけですが、このブランチを指定するのがなかなか分かりませんでした。Gitのようにrepo branch
でどうにかすれば、ブランチの一覧や切り替えが出来るのかなと思ったけど、どうもこれは用途が違うっぽい。このブランチ切り替えの方法を見つけるのに、結構時間かかりました。
リポジトリについて
前回のブログ記事で今年(2011年)8月にダウンロードしたソースからシステムをBuildしましたが、今回、久々に最新のソースを利用しようとしたところ、ソースツリーのURLが変更になっていました。(ソースコードのリポジトリがkernel.orgからgooglesource.comに移されたようです)
・新(11/5/2011): https://android.googlesource.com/
Android: ソースツリーのURLが変更された | ナレッジデザイン大竹のホームページ (by drupal)
・旧(8/13/2011): git://android.git.kernel.org/
多分kernel.orgがクラックされた影響なんだろうけど、リポジトリが変わってました。kernel.orgだった時は、URLにクエリーストリングとかパスとかでブランチを指定すると、そのブランチのソースコードが圧縮ファイルでダウンロードできてました。新しいリポジトリでもダウンロード出来れば楽だったんだけど、調べても全然情報が見つかりません。仕方なくrepo
コマンドを使いました。
しかし、eclipseからAndroid SDKのソースコードを見れるようにしたいだけなのに、めんどくさすぎ。
ブランチ名について
前述のブランチ名を調べた際、gingerbreadとgingerbread-releaseがありました。
これらのブランチの用途は明記されていませんが、おそらくは
froyo = 開発ブランチ
froyo-release = リリースブランチのようです。今日の時点ではfroyo-releaseブランチの先頭にandroid-2.2_r1.1のタグが打たれています。
KMC Staff Blog:Android2.2(Froyo)のダウンロードとビルド
恐らくはと書かれた情報ですが、こういう違いになるらしいです。
repoコマンドについて
epo is a tool that makes it easier to work with Git in the context of Android. For more information about Repo, see Version Control.
Downloading the Source | Android Open Source Project
Android SDKはプロジェクト毎に分割されたGitリポジトリになっているらしく、どうもrepo
コマンドはAndroid SDK専用のコマンドみたい。Gitの関連コマンドなのに、Gitと同じ感覚では使えないし、ここでしか使わないのに分かりにくいので、正直あまり深くは調べてません。
- 覚え書き: Repo と Git の使い方 (Using Repo and Git)
- Repo command reference | Android Open Source Project
- repo init の使い方覚書
一応、参考にしたrepo
コマンドについてのページ。
環境
Mac | Mac OS X 10.5.8(Leopard) |
repo | 1.7.7.6 |
$ repo --version repo version v1.7.7.6 (from https://android.googlesource.com/tools/repo) git version 1.7.3.5 Python 2.5.1 (r251:54863, May 5 2011, 18:37:34) [GCC 4.0.1 (Apple Inc. build 5465)]
書いた日
下書き発掘エントリー。最初に書き始めたのは2011-11-22。