Mac-Eclipse環境でVolleyがインポートできなくて困った-その1
20150618修正:記事全面改修
20150617追記:git submodule addについて追記
20150613修正:javabuildpathの追加位置を修正
20150612追記:解決策を追加vividcode.hatenablog.com
vividcode.hatenablog.com
無料テキストの突き放しっぷりに腹立ってきたw
この辺のサイトを読んでやっとわかってきたんだけど、Volleyのインストール理由・成否は、ResponseとかRequestQueueのクラスを記述して出てくるエラーに対して、"→import hogehoge"という解決方法を得ることだ。
Volleyをgitで取得まではいいのだが、その後、プロジェクト化してライブラリ化してAddしても、antでビルドしてjarファイルをコピペしても、Responseクラスのインポートが出ないんだよぉおぉぉぉおおおおおおおおお。動けえええええええええ!
プロジェクトのSource追加で解決
解決できた。ネチネチとあちこちのページを見てみたり、Eclipseを無駄に再起動したりcleanしたりしてみたけど、Mac,Eclipseという組み合わせだと、volley使えないんじゃないか、インストールでどっか間違いがあったんじゃないかと不安になるくらいハマった。
結論から言うと、プロジェクトのプロパティにあるJavaBuildPathでvolleyのソースを追加するという作業が必要だった。
大きく2パターン
外部クラスを利用するにあたって、大きく分けてこの2パターンがあるみたい。techinstituteの無料テキストで示しているのは前者の外部プロジェクト作成型なので、そちらから手順を置いてみる。後者は別記事に分けます。
・volleyを利用したいプロジェクトとは別にvolleyプロジェクトを作ってそれを参照する(外部プロジェクト作成型)
・volleyを利用したいプロジェクトの内部にvolleyフォルダを作成(volleyフォルダ内包型)
→以下の別記事に分けた
Mac-Eclipse環境でVolleyがインポートできなくて困った-その2 - せでぃのブログ
外部プロジェクト作成型の手順
1.まずはgit clone
CUIでやっても問題ないが、それはvolleyフォルダ内包型でやるので、ここではEclipseの操作を乗せる。やることは無料テキストにある内容なのでさらっと飛ばしてもOK。
CUIでやるなら、1つだけ注意がある。cloneの位置だ。GUIのデフォルト位置と合わせるならこんな操作になる。
$ pwd /Users/ユーザ名/ $ mkdir git $ cd git $ pwd /Users/ユーザ名/git/ $ git clone https://android.googlesource.com/platform/frameworks/volley
Eclipse、GUIによるgit cloneはこんな感じで進める。
Clone a Git Repositoryを押す。
volleyのURL↓を貼る。
2.volleyプロジェクトをインポート
javaメイン画面に戻り、File→Importを選択。
Android→existing android code into workspaceを選択。
プロジェクトの位置はgit cloneしたところの、gitディレクトリを選んでOK。
New Project Nameに「Volley」と入力して、忘れずにリターン。Copy Project into Workspaceにチェックを入れる。
これでWorkspaceにプロジェクトが出てくるはず。
3.Volleyプロジェクトにvolleyのsource追加
Volleyプロジェクトのプロパティを開き、JavaBuildPathを選択。sourceタブを開く。Add Folderボタンを押す。
javaフォルダにチェックを入れる。
こんな感じでOK。
4.isLibraryにチェック
3.に引き続きVolleyプロジェクトのプロパティで、今度はAndroidの項目にてisLibraryにチェックを入れる。
5.volleyクラスを利用するプロジェクトでLibraryをaddするか、jarファイルをコピペする
ここでやり方が2つある。1つは無料テキストの通り、volleyクラスを利用するプロジェクト(Syllabus)でaddする方法。プロパティ→Androidで以下の画面が出る。
もう1つは、Volleyプロジェクトのbin/volley.jarファイルを
volleyクラスを利用するプロジェクト(Syllabus)のlibsフォルダにペーストする方法。
どちらか一方だけで足りる。