2012/01/16

Google APIs の Javadoc が表示されなくなった

2012/01/19 追記
ごめんなさい。以下に書いてある方法は使えませんでした
この方法を実行した後に実機で動作させようとすると、以下のようなエラーが発生してしまいます。
java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
動確しないで、不確かな情報を載せてしまい申し訳ありません。
言い訳なんですが、ちょうど動作が不安定になるような大きな変更を入れてる最中にJavadocが表示されなくなった事に気づき、結構書き換えてる時だからJavadocが無いと余計不便で調べてみたのです。
で、変更してみたけど、もともとうまく動かないプロジェクトでやってたから動確せず。で別件に手をとられ放置…という流れでした。
そういうのブログに書くなよって話ですよね。いや、お恥ずかしい…




Google APIs [Android 4.0.3] を使うと、Javadoc (インテリセンスっぽいやつ)が表示されず、
Note: This element has no attached source and the Javadoc could not be found in the attached Javadoc.

というようなエラーが表示されてしまいます。

おかしいと思って、ライブラリを右クリック → プロパティ


Javadoc Location をチェックしてみると

file:/C:/Program Files (x86)/Android/android-sdk/add-ons/addon-google_apis-google_inc_-15/docs/reference
というディレクトリを参照しています。
調べてみると、そのようなディレクトリは存在せず、本当に参照しなければいけないディレクトリは
file:/C:/Program Files (x86)/Android/android-sdk/add-ons/addon-google_apis-google_inc_-15/docs/maps_apis
でした。
他のバージョンでは reference で合っているので、version15 でディレクトリ構成を変えたのに、Javadocは対応し忘れたということでしょう。

さて、理由はわかったので、ここを書き換えてやればオッケーじゃんと思い、書き換えてOKを押してみました。
しかし!状況は変わらず。
んー、おかしいなぁ。と思って、もう一度開いてみたら、書き換わっておらず、デフォルトに戻っていました。

その後、いろんなファイルのパーミッションをいじったり、書き換えるべきファイルの場所を探してみたりといろいろ努力をしてみましたが、結局、書き換える方法を見つけることは出来ず…orz

で、こりゃ無理かなと思った時に、ふと、「Google APIs [Android 4.0.3] より優先度の高いライブラリがあったらどうなるだろう?」と思いつきました。
で、この方法がビンゴ。
この場合は .project ファイルに設定が書かれるため、正しい Javadoc の場所を指定することができました。

具体的な方法は以下のようになります。


プロジェクトを右クリック → Build Path → Configure Build Path
Libraries タブを選択 → Add External JARs...

C:\Program Files (x86)\Android\android-sdk\add-ons\addon-google_apis-google_inc_-15\libs\maps.jar
を選択します。

これは、既に Google APIs [Android 4.0.3] で選択されているライブラリですが、上書きのために追加するわけです。

追加されたら、左の三角をクリックして展開します。
JavadocLocation をダブルクリック
ここに、正しい Javadoc のディレクトリを指定します。
file:/C:/Program Files (x86)/Android/android-sdk/add-ons/addon-google_apis-google_inc_-15/docs/maps_apis
指定して OK を押したら、Order and Export タブをクリックします。
たぶん、maps.jar が一番下に並んでいると思います。
これを選択して UP ボタンを使って Google APIs [Android 4.0.3] より上に持っていきます。

これにより、今回追加されたライブラリの方が優先度が上がるため、Javadoc が見られるようになるというわけです。

この方法、「Javadoc はあるのに、参照先が間違っている」という場合全般に使えると思います。
ただ、本来はライブラリの中で参照してる場所をちゃんと書き換えてあげるのが筋だと思うので、この方法がベストだとは思えません。
もし、もっと良い方法をご存知の方がいらっしゃいましたら、是非お教えください。


0 件のコメント: