zukkeyの技術奮闘記

”当たり前”が誰かのためになる、はず

Groupieことはじめ #1 導入まで

はじめに

今回は、GroupieというAndroidの開発で複雑なrecyclerviewのちょっと面倒なところをよしなにやってくれるライブラリの導入方法について書いていきます。

 

ライブラリはこちら

github.com

 

実際にプロジェクトの作成からビルドするまでに必要なことを紹介していきます。

 

プロジェクトを作成しよう

最初の第一歩

AndroidStudioでFile > New > New Projectから新しくプロジェクトを作成しましょう!

f:id:rozkey59:20180308231831p:plain

アプリケーションの名前は適当につけて先に進んでください

 

次の画面

最低限サポートするバージョンの選択です。

特に指定したくなければ次に進めましょう。

f:id:rozkey59:20180308231947p:plain

今回は5系からサポートします。

 

defaultの画面選択

最初に作成されるActivityの選択画面です。

どれでもいいんですが、今回はEmptyActivityを選びました。

f:id:rozkey59:20180308232107p:plain

 

最初のActivity

ポケモンで最初のパートナーを決めるかの如く、一番最初に表示される画面の名前を決めます。

特になければFinishを選択しましょう!

f:id:rozkey59:20180308232319p:plain

 

Groupieを導入する

Groupieを導入するために、まず初めにgradleを設定する必要があります。

公式のREADMEには下記のように書かれています。

f:id:rozkey59:20180308232435p:plain

普通の場合は、真ん中2段目をgradleに書き足します。

もし、DataBindingを使用したいのであれば3段目をgradleに追加してください。

 

f:id:rozkey59:20180308232749p:plain

赤枠のところのようにapp.gradleに追加してください

 

公式のissueにもありましたが下記の部分も追加する必要があります。

f:id:rozkey59:20180308232906p:plain

androidExtensionsがないとうまくいかないようです。

下記の赤枠のように追加してください。

f:id:rozkey59:20180308233021p:plain

 

次に、もしDataBindingを追加したい場合はさっきの3段目を追加したうえにDataBindingを有効にする必要があります。

公式では以下のように書かれています。

f:id:rozkey59:20180308233144p:plain

 

実際に書くと以下のようになります。

f:id:rozkey59:20180308233233p:plain

これでDataBindingにも対応することができました!

 

ビルドしてみる

この状態でビルドしてみると以下のようなエラーを吐きます。(2018年3月現在)

f:id:rozkey59:20180308233345p:plain

 

こまごまして見えないと思うので、何が表示されているかというと

  E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.zukkey.groupiesampleofmaster, PID: 31992
java.lang.NoSuchMethodError: No static method getFont(Landroid/content/Context;ILandroid/util/TypedValue;ILandroid/widget/TextView;)Landroid/graphics/Typeface; in class Landroid/support/v4/content/res/ResourcesCompat; or its super classes (declaration of 'android.support.v4.content.res.ResourcesCompat' appears in /data/app/com.example.zukkey.groupiesampleofmaster-9cbf26XsD17Hza7z4-aeeQ==/split_lib_dependencies_apk.apk)
at android.support.v7.widget.TintTypedArray.getFont(TintTypedArray.java:119)
at android.support.v7.widget.AppCompatTextHelper.updateTypefaceAndStyle(AppCompatTextHelper.java:208)

 getFontっていうメソッドがねぇんだよ!って怒られて何のことか最初は良く分かりませんでした。

ググってたら、解決方法が見つかったのでこのエラーが出た場合は以下のようにしてください。

解決方法その1

compileSDKとtargetSDKバージョンを27に上げてください

f:id:rozkey59:20180308233707p:plain

赤枠の部分です。

 

解決法その2

buildToolsVersionを27.0.2に上げてください

f:id:rozkey59:20180308233844p:plain

 

解決法その3

com.android.support:appcompat-v7

com.android.support:design

をどちらも27.0.2を下記のように指定してください

f:id:rozkey59:20180308233959p:plain

 

ここまできたら

最後にビルドをしてみましょう!

f:id:rozkey59:20180308234208p:plain

ビルドしたときに無事にアプリがクラッシュせずに起動したらGroupieの導入が無事完了です!

何故かはぼくも良く分かっていないんですが、targetSDKを上げたことでうまくいきました!

もし同じようにビルドできなくて困っている人がいて役に立てたら幸いです。

 

さいごに

今回はGroupieの導入までについて書きました!

次回はすでにサンプルを作成したりしているので実際にサンプルを作る過程を紹介しながらGroupieの基本的な使い方について書いていきたいと思います。

最後まで見ていただきありがとうございました!

この記事が良いと思ったらはてブとシェアをよろしくお願いします。