Bescottee苦しいときは伸びてるとき、楽なときは伸びていないとき

2 Picasssoサンプルアプリのビルドエラー解決方法

admin to KnowHow, development  

Picasso

Picassoは言わずと知れた Android アプリ向けの画像のダウンロード、キャッシングを簡単に利用できるようになるライブラリです。カード決済のスタートアップのSquireという会社のJakeWhartonさんが開発し、OSSとしてhttps://github.com/square/picassoに公開されているものです。

ひさしぶりに利用してみようとしたところ、サンプルアプリを動かす時にいくつかエラーが発生したのでその対処方法をメモしておきます。

サンプルアプリのインポートでエラー発生

github から clone して、eclipse にインポートします。サンプルアプリにライブラリが入っていないため、インポート前にpicasso-?.?.?.jarのダウンロードからダウンロードして libs フォルダにコピーしておきましょう。

project.properties がないため、インポート時に各環境でダウンロードされているSDKから対応するSDK Versionに該当するAndroid SDK が選択されます。私の環境では、以下のように SDK Version : 10(GB環境)が選択されて、ビルドエラーが発生しました。

エラーの発生原因は、android:fontFamily という値が Android SDK Version 10 では提供されていないというものです。
これはAndroid SDK version 16以降で提供されているものだからです。

http://developer.android.com/reference/android/R.attr.html#fontFamily

というわけで、プロジェクトを右クリックして、Properties から Android を選択し、API Level: 16 なもの(たとえば、Android 4.1.2 など)を選びましょう。
エラーが消えない場合は、Project を Clean しましょう。android:fontFamily のエラーは解決されます。

またエラー発生

これで解決と思っておりましたが、次は別のところでエラーが発生しました。

widgetCategory というアトリビュートがないということで再度調べてみると、これは以下のように API Level 17から提供されているものでした。
というわけで、また Properties -> Android から API Level 17(Android 4.2.2 など)に変更します。

またまたエラー発生

これで解決と思っておりましたが、次は別のところでエラーが発生しました。support library v4がないということで、ADTのGUIメニューから以下のようにインストールします。

またまたエラー発生

これが最後と信じながら、以下のパッケージ名に関するエラーを解決します。なぜか java ソースコードの配置が package name と異なるところに import されてしまっています。パッケージ名のフォルダの名前変更から main.java を削除します。

まとめ

というわけで、Picassoのサンプルアプリを利用するには以下の対応をしましょう。

  • picasso-?.?.?.jar を libs にコピー(Eclipseの場合のみ。AndroidStdioの方は gradle dependencies compile でもっと簡単でしょう)
  • Support library v4 のインストール
  • Android SDK の API Level を 17以上にする
  • javaソースのパッケージ名フォルダの名前変更(環境によっては必要ないかもしれません)

参考情報:Volley

Picassoと同じようなライブラリに Google が出している Volley もとても便利です。こちらは使い方が「Effective Android
」の「第22章 Volleyでネットワークプログラミングを学ぶ」に紹介されているので興味のある方はご覧ください。

コメントをどうぞ