Android SDK Manager で Fetch エラー、まさか cache が原因だったとは。。。

PhoneGap を試すなら Android の実機でも試せるようにしたい。ちなみに PhoneGap 2.4.0 の場合 r21.0.0.rc9 以降じゃないと動かないらしい。


前に入れた ADT は r20.0.1 だし、それじゃバージョンアップと思ったら Failed to fetch なるエラーが出て Android SDK Tools を更新できない。ええーーΣ(゚Д゚)

Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml.xml, reason: File not found
...
Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-7.xml, reason: File not found


パスが変わったのかなと思ったけど addons_list-2.xmlrepository-7.xml はネット上にある。同じネットワークにつながってる別 Mac だと Fetch に成功する。試しに Android Developers から最新の android-sdk-r21.1-maxosx.zip を取得して、tools/android を実行してみたけど、やっぱり Fetch できないエラーが出る。どー考えても自分の Mac の環境問題。原因なんだろ?:-(

とりあえず「Failed to fetch ... repository.xml」で検索すると、いくつも対処方法が見つかる。結構、Failed to Fetch はあるみたい。手当たり次第に試してみた。結果はこんな感じ。

1. 設定で Force https:// を適用する

ほとんどのケースはこれ。理由は良くわからないけど https:// だとコケて http:// だと成功するらしい。メニュー [Android SDK Manager > 環境設定]を開いて、Force://https ... にチェックを入れて再起動。→ 失敗。あれ? (T^T)

2. androidtools.cfg にプロパティを定義する

1.の操作をすると ~/.android/androidtools.cfg が生成されて、sdkman.force.http=true として保存される。Talk Android に "(just one line)" とあったので、この1行だけ残して Android SDK Manager を再起動。→ 失敗。1.がダメなんだから動く方が変だよね。 ^^;)>

Make a androidtool.cfg file in ~/.android/ directory, with the following content:
sdkman.force.http=true
(just one line).

Failed to fetch URL https://dl-ssl.google.com/android/repository/repository.xml

3. Android SDK の各バージョンを手動でインストールする

fukushimaのソフト屋さんDo Design Space さん曰く、ダウンロードできない addons_list.xml や repository.xml に書かれてる内容を読み取って android-sdk-mac/platforms に展開する方法があるらしい。試しに android-sdk-macosx_r20/platforms/* を android-sdk-macosx_r21/platforms 以下にコピーして Android SDK Manager を再起動したら認識された。最終手段はこれだな、と思いつつ保留 ^^;)

4. ADT を zip でインストールする

Android DevelopersTroubleshooting に zip ダウンロードした ADT をインストールする手順が紹介してあった。r20→r21 にアップデートできるかなーと思い、Eclipse メニュー [Help > Install New Software] から実行してみたけど r20 のままだった。これも失敗。そもそもインストールした ADT.zip はどこ行った?(T^T)

  1. Download the ADT Plugin zip file (do not unpack it):
  2. Start Eclipse, then select Help > Install New Software.
  3. Click Add, in the top-right corner.
  4. In the Add Repository dialog, click Archive.
  5. Select the downloaded ADT-21.1.0.zip file and click OK.
  6. Enter "ADT Plugin" for the name and click OK.
  7. In the Available Software dialog, select the checkbox next to Developer Tools and click Next.
  8. In the next window, you'll see a list of the tools to be downloaded. Click Next.
  9. Read and accept the license agreements, then click Finish. If you get a security warning saying that the authenticity or validity of the software can't be established, click OK.
  10. When the installation completes, restart Eclipse.

5. cache/* のオーナー権限を変更する(成功)

~/.andorid/androidtools.cfg を見たときに cache/ があるのを思い出し、中を見てみたら sdkbin-xxx-repository_xml とかどっかで見たような名前のファイルがたくさんある。addons_list.xml や repository.xml は ~/.android/cache に一度保存されるんだね。まさか、と思って ls -l したらオーナーが root になってる。chown でオーナー変更して、Android SDK Manager を再起動したら、、、成功!Σ( ̄▽ ̄) キターーーー!

そーいや、はじめて ADT をインストールしたときに参考にしたサイトでは Android SDK Manager を root で実行しましょ、となってたような記憶が、、、。しばらくしてから android-sdk-macosx 以下はオーナー変更してたけど、まさか ~/.android に悪影響が出てるとは思ってなかった。解決できて良かったよ。 :-)

動作環境