android.jarのソースをEclipseに添付する(前編)

Androidアプリの開発をしていて、android.jarのソースをみる必要が出てきました。
チョロっと↓みてみると、いかにもLinuxとかMacユーザー向けじゃないですか、と。
Downloading the Source Tree(http://source.android.com/source/downloading.html)
 
ググったら↓のブログを発見したので、これに沿ってやってみます。
WindowsユーザがAndroid標準ライブラリをEclipseで参照できるようになるまで | 拝啓、シーシュポス
 
curlコマンド叩こうと思ったらありゃしませんがな、っていう。

$ curl
-bash: curl: command not found

 
Cygwinに追加でパッケージをインストールするのにアタフタしましたが、
素でインストールする時に使ったsetup.exeを使います。自分はProgram Filesの中に入ってました。

 
たぶんコレかなってのを選んで次へ次へ。

 
インストールが終わった後に叩いてみたら良さげです。

$ curl
curl: try 'curl --help' or 'curl --manual' for more information

 
次に、上記のcurlコマンドを使ってrepoコマンドというのをインストールします。

$ curl -k https://android.git.kernel.org/repo > /bin/repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   245  100   245    0     0    805      0 --:--:-- --:--:-- --:--:--  1655

よーし終わったぜとか思いつつ見てみたら、、オイオイ的な、、、orz

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://android.googlesource.com/repo">here</a>.</p>
</body></html>

 
メッセージに従って https://android.googlesource.com/repo にしてみると、、

$ curl http://android.googlesource.com/repo > /bin/repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   141    0   141    0     0    142      0 --:--:-- --:--:-- --:--:--  1270

てめぇ、このやろう的な、、

<HTML>
<HEAD>
<TITLE>Not Found</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Not Found</H1>
<H2>Error 404</H2>
</BODY>
</HTML>

 
Cygwin | あんどろサイト Androidアプリ開発情報をみると、
URLが http://android.git.kernel.org/repo って書いてあるのでそこを指定して叩いてみましたが、
これまた http://android.googlesource.com/repo だよって言われました。
 
気を取り直して、もう一度http://source.android.com/source/downloading.htmlをチェックしたら、

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

って書いてあったので、それで叩きます。
今度はそこそこなサイズがダウンロードできた模様です。

$ curl -k 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 19731  100 19731    0     0  45463      0 --:--:-- --:--:-- --:--:-- 53762

viewで開いてみると、、、良さげです。

#!/bin/sh

## repo default configuration
##
REPO_URL='https://android.googlesource.com/tools/repo'
REPO_REV='stable'

# Copyright (C) 2008 Google Inc.
... 続く

 
ということで、repoコマンド使って環境作っていきます。

$ mkdir android_source
$ cd android_source/
$ repo init -u https://android.googlesource.com/platform/manifest
-bash: /usr/bin/repo: Permission denied
実行権限無いって怒られたので
$ chmod 755 /bin/repo
からの、、

]$ repo init -u https://android.googlesource.com/platform/manifest
      0 [main] python 7068 C:cygwinbinpython.exe: *** fatal error - unable to remap C:cygwinbincygreadline7.dll to same address as parent: 0x360000 != 0x530000
Stack trace:
Frame     Function  Args
0028A6A8  6102796B  (0028A6A8, 00000000, 00000000, 00000000)
0028A998  6102796B  (6117EC60, 00008000, 00000000, 61180977)
0028B9C8  61004F1B  (611A7FAC, 6124AF94, 00360000, 00530000)
End of stack trace
      0 [main] python 6880 fork: child 7068 - died waiting for dll loading, errno 11
...続く

うわ、、マジだりぃ。。。
ググっていくとrebaseってのをやってやる必要がありそうです。
 
↓の要領に従って頑張りました。。
Cygwinで “unable to remap *.dll” が出るときは rebaseall らしい | XXXannex
なかなかrebaseがうまくいかなくて、/bin/rebaseallのソースをコメントアウトして

grep -E -q -i -v '/d?ash(.exe)?$' /proc/[0-9]*/exename
#if [ $? -eq 0 -a -z "$RebaseDebug" ]
#then
#    echo "$ProgramName: only ash or dash processes are allowed during rebasing"
#    echo "    Exit all Cygwin processes and stop all Cygwin services."
#    echo "    Execute ash (or dash) from Start/Run... or a cmd or command window."
#    echo "    Execute '/bin/rebaseall' from ash (or dash)."
#    exit 2
#fi

叩いたらうまくいかなかったので、Windowsマシンを再起動してから、コマンドプロンプトで(not cygwinコンソール)

C:cygwinbin>ash rebaseall -v
~略~
/usr/lib/dde1.2/tcldde12.dll: new base = 68e00000, new size = 20000
/usr/lib/reg1.1/tclreg11.dll: new base = 68de0000, new size = 20000
/usr/bin/cygz.dll: new base = 68db0000, new size = 30000

 
ようやく本題に戻ってrepoでinitっと…
って、ちょっ…orz

$ repo init -u https://android.googlesource.com/platform/manifest
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.

Get https://android.googlesource.com/tools/repo
error: SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed while accessing https://android.googlesource.com/tools/repo/info/refs

fatal: HTTP request failed

ググってたら↓しちゃえばイイって事だったので、、

$ git config --global http.sslVerify false

んで、もっかい叩いたら、、ようやく、、

$ repo init -u https://android.googlesource.com/platform/manifest
warning: gpg (GnuPG) is not available.
warning: Installing it is strongly encouraged.

Get https://android.googlesource.com/tools/repo
remote: Counting objects: 1414, done
remote: Finding sources: 100% (78/78)
remote: Total 1414 (delta 917), reused 1414 (delta 917)
Receiving objects: 100% (1414/1414), 429.88 KiB | 600 KiB/s, done.
Resolving deltas: 100% (917/917), done.
From https://android.googlesource.com/tools/repo
 * [new branch]      maint      -> origin/maint
 * [new branch]      master     -> origin/master
~略~
repo initialized in /hogehoge/

 
んで、ソースコードの取得です。
(死ぬほど取れてきます。。。htcだsamsungだとかbluetoothだとか見ないであろう膨大な量のコードが。。。)

$ repo sync
From /home/Az/android_source/.repo/projects/bootable/diskinstaller.git/clone.bundle
 * [new branch]      master     -> aosp/master
 * [new branch]      gingerbread -> aosp/gingerbread
Downloading bionic:  50% (1MB/2MB)  From /home/Az/android_source/.repo/projects/bootable/bootloader/legacy.git/clone.bundle
 * [new branch]      master     -> aosp/master
 * [new branch]      gingerbread -> aosp/gingerbread
remote: Counting objects: 32, done
remote: Finding sources: 100% (32/32)
remote: Total 32 (delta 0), reused 32 (delta 0)
Unpacking objects: 100% (32/32), done.
From https://android.googlesource.com/platform/bootable/diskinstaller
 * [new branch]      donut-release -> aosp/donut-release
~略~

時間掛かり過ぎるのでやめました(キリッ)
 
↓にしてバージョンを固定にしてinitして、

repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.3_r1

↓4多重で同期、

repo sync -j4

みたいな事になるらしいので、コレ仕掛けて今日は帰ります。
 
明日Eclipseからソース見れるといいな。。。

プロダクティブ・プログラマ -プログラマのための生産性向上術
Neal Ford
オライリージャパン
売り上げランキング: 248079

コメント

  1. […] « android.jarのソースをEclipseに添付する(前編) […]

タイトルとURLをコピーしました