ここではWindows環境で作業することを前提として解説します。
次の手順で行います。
デフォルトのパッケージに加え、gitとcurlをインストールする必要があります。インストールの方法はCygwinのインストールで解説しています。
ここからはCygwinで作業を行います。
Cygwinのホーム ディレクトリに /binディレクトリを作成します。
$ mkdir ~/bin
そしてそのディレクトリにパスを設定します。
$ PATH=~/bin:$PATH
curlコマンドで、Repoスクリプトをダウンロードします。
※URLが変更されたようで、次が正しいです。$ curl http://android.git.kernel.org/repo > ~/bin/repo
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
成功すると、
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 17451 100 17451 0 0 1235 0 0:00:14 0:00:14 --:--:-- 4328
のように表示されます。Repoのアクセス権に、すべてのユーザーに対する実行権を与えます。
$ chmod a+x ~/bin/repo
作業用のディレクトリを作成します。ここではandroid-sourceとしています。
$ mkdir ~/android-source
そのディレクトリをカレントディレクトリとします。
$ cd ~/android-source
Repoの初期化を行います。リビジョンを指定しない場合は最新のソースコードが取得されます。
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo init -u https://android.googlesource.com/platform/manifest
成功すると次のように表示されます。
gpg: WARNING: using insecure memory! gpg: please see http://www.gnupg.org/faq.html for more information gpg: keyring `/home/UserName/.repoconfig/gnupg/secring.gpg' created gpg: keyring `/home/UserName/.repoconfig/gnupg/pubring.gpg' created gpg: /home/UserName/.repoconfig/gnupg/trustdb.gpg: trustdb created gpg: key 920F5C65: public key "Repo Maintainer <repo@android.kernel.org>" import ed gpg: Total number processed: 1 gpg: imported: 1 Getting repo ... from git://android.git.kernel.org/tools/repo.git remote: Counting objects: 1293, done. remote: Compressing objects: 100% (564/564), done. remote: Total 1293 (delta 831), reused 1134 (delta 706) Receiving objects: 100% (1293/1293), 355.00 KiB | 149 KiB/s, done. Resolving deltas: 100% (831/831), done. From git://android.git.kernel.org/tools/repo * [new branch] maint -> origin/maint * [new branch] master -> origin/master * [new branch] stable -> origin/stable * [new tag] v1.7.4.3 -> v1.7.4.3 From git://android.git.kernel.org/tools/repo * [new tag] v1.0 -> v1.0 * [new tag] v1.0.1 -> v1.0.1 * [new tag] v1.0.2 -> v1.0.2 * [new tag] v1.0.3 -> v1.0.3 * [new tag] v1.0.4 -> v1.0.4 * [new tag] v1.0.5 -> v1.0.5 * [new tag] v1.0.6 -> v1.0.6 * [new tag] v1.0.7 -> v1.0.7 * [new tag] v1.0.8 -> v1.0.8 * [new tag] v1.0.9 -> v1.0.9 * [new tag] v1.1 -> v1.1 * [new tag] v1.2 -> v1.2 * [new tag] v1.3 -> v1.3 * [new tag] v1.3.1 -> v1.3.1 * [new tag] v1.3.2 -> v1.3.2 * [new tag] v1.4 -> v1.4 * [new tag] v1.4.1 -> v1.4.1 * [new tag] v1.4.2 -> v1.4.2 * [new tag] v1.4.3 -> v1.4.3 * [new tag] v1.4.4 -> v1.4.4 * [new tag] v1.5 -> v1.5 * [new tag] v1.5.1 -> v1.5.1 * [new tag] v1.6 -> v1.6 * [new tag] v1.6.1 -> v1.6.1 * [new tag] v1.6.10 -> v1.6.10 * [new tag] v1.6.10.1 -> v1.6.10.1 * [new tag] v1.6.10.2 -> v1.6.10.2 * [new tag] v1.6.2 -> v1.6.2 * [new tag] v1.6.3 -> v1.6.3 * [new tag] v1.6.4 -> v1.6.4 * [new tag] v1.6.5 -> v1.6.5 * [new tag] v1.6.6 -> v1.6.6 * [new tag] v1.6.7 -> v1.6.7 * [new tag] v1.6.7.1 -> v1.6.7.1 * [new tag] v1.6.7.2 -> v1.6.7.2 * [new tag] v1.6.7.3 -> v1.6.7.3 * [new tag] v1.6.7.4 -> v1.6.7.4 * [new tag] v1.6.7.5 -> v1.6.7.5 * [new tag] v1.6.8 -> v1.6.8 * [new tag] v1.6.8.1 -> v1.6.8.1 * [new tag] v1.6.8.10 -> v1.6.8.10 * [new tag] v1.6.8.11 -> v1.6.8.11 * [new tag] v1.6.8.2 -> v1.6.8.2 * [new tag] v1.6.8.3 -> v1.6.8.3 * [new tag] v1.6.8.4 -> v1.6.8.4 * [new tag] v1.6.8.5 -> v1.6.8.5 * [new tag] v1.6.8.6 -> v1.6.8.6 * [new tag] v1.6.8.7 -> v1.6.8.7 * [new tag] v1.6.8.8 -> v1.6.8.8 * [new tag] v1.6.8.9 -> v1.6.8.9 * [new tag] v1.6.9 -> v1.6.9 * [new tag] v1.6.9.1 -> v1.6.9.1 * [new tag] v1.6.9.2 -> v1.6.9.2 * [new tag] v1.6.9.3 -> v1.6.9.3 * [new tag] v1.6.9.4 -> v1.6.9.4 * [new tag] v1.6.9.5 -> v1.6.9.5 * [new tag] v1.6.9.6 -> v1.6.9.6 * [new tag] v1.6.9.7 -> v1.6.9.7 * [new tag] v1.6.9.8 -> v1.6.9.8 * [new tag] v1.7 -> v1.7 * [new tag] v1.7.1 -> v1.7.1 * [new tag] v1.7.2 -> v1.7.2 * [new tag] v1.7.3 -> v1.7.3 * [new tag] v1.7.3.1 -> v1.7.3.1 * [new tag] v1.7.4 -> v1.7.4 * [new tag] v1.7.4.1 -> v1.7.4.1 * [new tag] v1.7.4.2 -> v1.7.4.2 Getting manifest ... from git://android.git.kernel.org/platform/manifest.git remote: Counting objects: 794, done. remote: Compressing objects: 100% (319/319), done. Receiving objectsremote: Total 794 (delta 329), reused 786 (delta 323): % (414 Receiving objects: 100% (794/794), 215.77 KiB | 134 KiB/s, done. Resolving deltas: 100% (329/329), done. From git://android.git.kernel.org/platform/manifest * [new branch] android-1.5 -> origin/android-1.5 * [new branch] android-1.5r2 -> origin/android-1.5r2 * [new branch] android-1.5r3 -> origin/android-1.5r3 * [new branch] android-1.5r4 -> origin/android-1.5r4 * [new branch] android-1.6_r1 -> origin/android-1.6_r1 * [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1 * [new branch] android-1.6_r1.2 -> origin/android-1.6_r1.2 * [new branch] android-1.6_r1.3 -> origin/android-1.6_r1.3 * [new branch] android-1.6_r1.4 -> origin/android-1.6_r1.4 * [new branch] android-1.6_r1.5 -> origin/android-1.6_r1.5 * [new branch] android-1.6_r2 -> origin/android-1.6_r2 * [new branch] android-2.0.1_r1 -> origin/android-2.0.1_r1 * [new branch] android-2.0_r1 -> origin/android-2.0_r1 * [new branch] android-2.1_r1 -> origin/android-2.1_r1 * [new branch] android-2.1_r2 -> origin/android-2.1_r2 * [new branch] android-2.1_r2.1p -> origin/android-2.1_r2.1p * [new branch] android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2 * [new branch] android-2.1_r2.1s -> origin/android-2.1_r2.1s * [new branch] android-2.2.1_r1 -> origin/android-2.2.1_r1 * [new branch] android-2.2.1_r2 -> origin/android-2.2.1_r2 * [new branch] android-2.2.2_r1 -> origin/android-2.2.2_r1 * [new branch] android-2.2_r1 -> origin/android-2.2_r1 * [new branch] android-2.2_r1.1 -> origin/android-2.2_r1.1 * [new branch] android-2.2_r1.2 -> origin/android-2.2_r1.2 * [new branch] android-2.2_r1.3 -> origin/android-2.2_r1.3 * [new branch] android-2.3.1_r1 -> origin/android-2.3.1_r1 * [new branch] android-2.3.2_r1 -> origin/android-2.3.2_r1 * [new branch] android-2.3.3_r1 -> origin/android-2.3.3_r1 * [new branch] android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1 * [new branch] android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9 * [new branch] android-2.3.4_r1 -> origin/android-2.3.4_r1 * [new branch] android-2.3_r1 -> origin/android-2.3_r1 * [new branch] android-adt-0.9.8 -> origin/android-adt-0.9.8 * [new branch] android-adt-0.9.9 -> origin/android-adt-0.9.9 * [new branch] android-cts-2.1_r2 -> origin/android-cts-2.1_r2 * [new branch] android-cts-2.1_r3 -> origin/android-cts-2.1_r3 * [new branch] android-cts-2.1_r4 -> origin/android-cts-2.1_r4 * [new branch] android-cts-2.1_r5 -> origin/android-cts-2.1_r5 * [new branch] android-cts-2.2_r1 -> origin/android-cts-2.2_r1 * [new branch] android-cts-2.2_r2 -> origin/android-cts-2.2_r2 * [new branch] android-cts-2.2_r3 -> origin/android-cts-2.2_r3 * [new branch] android-cts-2.2_r4 -> origin/android-cts-2.2_r4 * [new branch] android-cts-2.2_r5 -> origin/android-cts-2.2_r5 * [new branch] android-cts-2.3_r1 -> origin/android-cts-2.3_r1 * [new branch] android-cts-2.3_r2 -> origin/android-cts-2.3_r2 * [new branch] android-cts-2.3_r3 -> origin/android-cts-2.3_r3 * [new branch] android-sdk-1.5-pre -> origin/android-sdk-1.5-pre * [new branch] android-sdk-1.5_r1 -> origin/android-sdk-1.5_r1 * [new branch] android-sdk-1.5_r3 -> origin/android-sdk-1.5_r3 * [new branch] android-sdk-1.6-docs_r1 -> origin/android-sdk-1.6-docs_r1 * [new branch] android-sdk-1.6_r1 -> origin/android-sdk-1.6_r1 * [new branch] android-sdk-1.6_r2 -> origin/android-sdk-1.6_r2 * [new branch] android-sdk-2.0.1-docs_r1 -> origin/android-sdk-2.0.1-docs_ r1 * [new branch] android-sdk-2.0.1_r1 -> origin/android-sdk-2.0.1_r1 * [new branch] android-sdk-2.0_r1 -> origin/android-sdk-2.0_r1 * [new branch] android-sdk-2.1_r1 -> origin/android-sdk-2.1_r1 * [new branch] android-sdk-2.2_r1 -> origin/android-sdk-2.2_r1 * [new branch] android-sdk-2.2_r2 -> origin/android-sdk-2.2_r2 * [new branch] android-sdk-2.3.4_r1 -> origin/android-sdk-2.3.4_r1 * [new branch] android-sdk-tools_r2 -> origin/android-sdk-tools_r2 * [new branch] android-sdk-tools_r3 -> origin/android-sdk-tools_r3 * [new branch] android-sdk-tools_r4 -> origin/android-sdk-tools_r4 * [new branch] android-sdk-tools_r5 -> origin/android-sdk-tools_r5 * [new branch] android-sdk-tools_r6 -> origin/android-sdk-tools_r6 * [new branch] android-sdk-tools_r7 -> origin/android-sdk-tools_r7 * [new branch] cdma-import -> origin/cdma-import * [new branch] cupcake -> origin/cupcake * [new branch] cupcake-release -> origin/cupcake-release * [new branch] donut -> origin/donut * [new branch] donut-plus-aosp -> origin/donut-plus-aosp * [new branch] eclair -> origin/eclair * [new branch] froyo -> origin/froyo * [new branch] froyo-plus-aosp -> origin/froyo-plus-aosp * [new branch] gingerbread -> origin/gingerbread * [new branch] master -> origin/master * [new branch] release-1.0 -> origin/release-1.0 * [new branch] tools-adt_r11 -> origin/tools-adt_r11 * [new branch] tools_r10 -> origin/tools_r10 * [new branch] tools_r11 -> origin/tools_r11 * [new branch] tools_r7 -> origin/tools_r7 * [new branch] tools_r8 -> origin/tools_r8 * [new branch] tools_r9 -> origin/tools_r9 * [new tag] android-1.5 -> android-1.5 * [new tag] android-1.5r2 -> android-1.5r2 * [new tag] android-1.5r3 -> android-1.5r3 * [new tag] android-1.5r4 -> android-1.5r4 * [new tag] android-1.6_r1 -> android-1.6_r1 * [new tag] android-1.6_r1.1 -> android-1.6_r1.1 * [new tag] android-1.6_r1.2 -> android-1.6_r1.2 * [new tag] android-1.6_r1.3 -> android-1.6_r1.3 * [new tag] android-1.6_r1.4 -> android-1.6_r1.4 * [new tag] android-1.6_r1.5 -> android-1.6_r1.5 * [new tag] android-1.6_r2 -> android-1.6_r2 * [new tag] android-2.0.1_r1 -> android-2.0.1_r1 * [new tag] android-2.0_r1 -> android-2.0_r1 * [new tag] android-2.1_r1 -> android-2.1_r1 * [new tag] android-2.1_r2 -> android-2.1_r2 * [new tag] android-2.1_r2.1p -> android-2.1_r2.1p * [new tag] android-2.1_r2.1p2 -> android-2.1_r2.1p2 * [new tag] android-2.1_r2.1s -> android-2.1_r2.1s * [new tag] android-2.2.1_r1 -> android-2.2.1_r1 * [new tag] android-2.2.1_r2 -> android-2.2.1_r2 * [new tag] android-2.2.2_r1 -> android-2.2.2_r1 * [new tag] android-2.2_r1 -> android-2.2_r1 * [new tag] android-2.2_r1.1 -> android-2.2_r1.1 * [new tag] android-2.2_r1.2 -> android-2.2_r1.2 * [new tag] android-2.2_r1.3 -> android-2.2_r1.3 * [new tag] android-2.3.1_r1 -> android-2.3.1_r1 * [new tag] android-2.3.2_r1 -> android-2.3.2_r1 * [new tag] android-2.3.3_r1.1 -> android-2.3.3_r1.1 * [new tag] android-2.3.3_r1a -> android-2.3.3_r1a * [new tag] android-2.3.4_r0.9 -> android-2.3.4_r0.9 * [new tag] android-2.3.4_r1 -> android-2.3.4_r1 * [new tag] android-2.3_r1 -> android-2.3_r1 * [new tag] android-adt-0.9.8 -> android-adt-0.9.8 * [new tag] android-adt-0.9.9 -> android-adt-0.9.9 * [new tag] android-cts-2.1_r2 -> android-cts-2.1_r2 * [new tag] android-cts-2.1_r3 -> android-cts-2.1_r3 * [new tag] android-cts-2.1_r4 -> android-cts-2.1_r4 * [new tag] android-cts-2.1_r5 -> android-cts-2.1_r5 * [new tag] android-cts-2.2_r1 -> android-cts-2.2_r1 * [new tag] android-cts-2.2_r2 -> android-cts-2.2_r2 * [new tag] android-cts-2.2_r3 -> android-cts-2.2_r3 * [new tag] android-cts-2.2_r4 -> android-cts-2.2_r4 * [new tag] android-cts-2.2_r5 -> android-cts-2.2_r5 * [new tag] android-cts-2.3_r1 -> android-cts-2.3_r1 * [new tag] android-cts-2.3_r2 -> android-cts-2.3_r2 * [new tag] android-cts-2.3_r3 -> android-cts-2.3_r3 * [new tag] android-sdk-1.5-pre -> android-sdk-1.5-pre * [new tag] android-sdk-1.5_r1 -> android-sdk-1.5_r1 * [new tag] android-sdk-1.5_r3 -> android-sdk-1.5_r3 * [new tag] android-sdk-1.6-docs_r1 -> android-sdk-1.6-docs_r1 * [new tag] android-sdk-1.6_r1 -> android-sdk-1.6_r1 * [new tag] android-sdk-1.6_r2 -> android-sdk-1.6_r2 * [new tag] android-sdk-2.0.1-docs_r1 -> android-sdk-2.0.1-docs_r1 * [new tag] android-sdk-2.0.1_r1 -> android-sdk-2.0.1_r1 * [new tag] android-sdk-2.0_r1 -> android-sdk-2.0_r1 * [new tag] android-sdk-2.1_r1 -> android-sdk-2.1_r1 * [new tag] android-sdk-2.2_r1 -> android-sdk-2.2_r1 * [new tag] android-sdk-2.2_r2 -> android-sdk-2.2_r2 * [new tag] android-sdk-2.3.4_r1 -> android-sdk-2.3.4_r1 * [new tag] android-sdk-tools_r2 -> android-sdk-tools_r2 * [new tag] android-sdk-tools_r3 -> android-sdk-tools_r3 * [new tag] android-sdk-tools_r4 -> android-sdk-tools_r4 * [new tag] android-sdk-tools_r5 -> android-sdk-tools_r5 * [new tag] android-sdk-tools_r6 -> android-sdk-tools_r6 * [new tag] android-sdk-tools_r7 -> android-sdk-tools_r7 From git://android.git.kernel.org/platform/manifest * [new tag] android-1.0 -> android-1.0 * [new tag] android-2.3.3_r1 -> android-2.3.3_r1
名前とメールアドレスの入力を求められます。
Your Name [ ]: Your Email [ ]:
さらに入力内容の確認を求められます。
Your identity is: is this correct [y/n]?
カラー表示を有効にするかどうかを問われます。
Testing colorized output (for 'repo diff', 'repo status'): black red green yellow blue magenta cyan white bold dim ul reverse Enable color display in this user account (y/n)?
初期化が完了すると、
repo initialized in /home/UserName/android-source
のように表示されます。初期化に成功したならば、次はソースコードをダウンロードします。
Repoの初期化時に、
C:\cygwin\bin\python.exe: *** fatal error - unable to remap \\?\C:\cygwin\lib\python2.6\lib-dynload\select.dll to same address as parent: 0x380000 != 0x3F0000
のようなエラーが表示され、初期化に失敗することがあります。
このような場合には、まずCygwinとそれに関連するプロセスを終了させます。なお関連するプロセスはProcess ExplorerでプロセスのPathを確認することで判別できます。
次にコマンドプロンプトを起動してから、ashを実行します。
c:\cygwin\bin>ash.exe
そしてrebaseallを実行することで問題を解決できます。
$ /bin/rebaseallCygwinで "unable to remap *.dll" が出るときは rebaseall らしい - XXXannex
特定のリビジョンのソースコードを入手するには、initの -bオプションでリビジョン番号を指定します。
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
取得できるリビジョン番号は、android.git.kernel.org Gitにあります。
$ git clone https://android.googlesource.com/platform/manifest
で、リポジトリからローカルにファイルをコピーして
$ cd manifest
$ git tag
とすることで一覧を取得できます。それは、たとえば次のような内容です。
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_r1_ android-1.6_r2_ android-2.0.1_r1_ android-2.0_r1_ android-2.1_r1_ android-2.1_r2.1p2_ android-2.1_r2.1p_ android-2.1_r2.1s_ android-2.1_r2_ 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.1_ android-2.2_r1.2_ android-2.2_r1.3_ android-2.2_r1_ android-2.3.1_r1_ android-2.3.2_r1_ android-2.3.3_r1.1_ android-2.3.3_r1_ 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 android-4.0.1_r1.2 android-4.0.3_r1
Repoのsyncコマンドで、先ほど作成した作業ディレクトリにソースコードをダウンロードします。これには相当な時間がかかり、私の環境では3時間ほどでした。
$ repo sync
ダウンロードが完了すると、
Syncing work tree: 100% (183/183), done.
のように表示されます。ダウンロードされたファイル数は208,541で、サイズは9.47GBほどでした。 (2011/12現在)