先日からライブラリの使い方を紹介した記事を投稿するようにしていますが、目下の悩みとして、
既に公開した記事は時と共に陳腐化していき、記事としての鮮度が落ちてしまうことでした。
ライブラリはバージョンアップしていきますので、最新版では紹介したメソッドがdeprecatedとなって使えなくなることもしばしば起こり得ることです。
ここを解決できそうな方法を見つけたので、考えを纏めておきたいと思います。
ライブラリの最新化を知るには?
そもそもライブラリに更新が入ったかどうかを知る手段を用意できれば問題解決です。
以下のプラグインを使うと、Androidのプロジェクトで使われているライブラリの更新状況を確認することができます。
これを使って記事とライブラリをリンクするように管理すれば、最新バージョンに追随できるのでは?
方針は立ったので、実際に実践あるのみです。
Gradle Versions Pluginの使い方
Gradle Versions Plugin を使うには、まずはプラグインをプロジェクトに取り込む必要があります。
まずはbuild.gradleに以下のように定義します。
buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.github.ben-manes:gradle-versions-plugin:0.13.0' classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1' } }
そして、app/build.gradleに以下を追記します。
apply plugin: 'com.github.ben-manes.versions'
これで準備はできました。
任意のライブラリをapp/build.gradleのdependenciesに書いて、
./gradlew dependencyUpdates
と実行すればライブラリの更新状況がチェックできます。
実際に試してみる
では、実際にこれまでの記事で取り上げていたライブラリで試してみましょう。
以下にチェック用のプロジェクトを公開しています。
上記のプロジェクトでチェックを実行すると、以下のように出力されました。
------------------------------------------------------------ :app Project Dependency Updates (report to plain text file) ------------------------------------------------------------ The following dependencies are using the latest milestone version: - com.github.hotchemi:android-rate:1.0.1 - com.android.support:appcompat-v7:25.1.0 - com.jakewharton.hugo:hugo-annotations:1.2.1 - com.jakewharton.hugo:hugo-runtime:1.2.1 - junit:junit:4.12 The following dependencies have later milestone versions: - org.aspectj:aspectjrt [1.8.5 -> 1.8.10] - com.jakewharton:butterknife [7.0.1 -> 8.5.1] - com.google.zxing:core [3.2.1 -> 3.3.0] - com.android.support.test.espresso:espresso-core [2.2.2 -> 2.3-alpha] - com.github.johnpersano:supertoasts [1.3.4 -> 2.0] - com.journeyapps:zxing-android-embedded [3.2.0 -> 3.4.0] Generated report file build/dependencyUpdates/report.txt BUILD SUCCESSFUL Total time: 19.07 secs
“The following dependencies have later milestone versions:”以下に
あるライブラリのうち、depenenciesに記載したものが更新が必要になりそうです。
dependenciesは以下のように、ライブラリと記事を紐付けてありますので、記事とサンプルコードの方も合わせて更新していけばよさそうです。
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.1.0' testCompile 'junit:junit:4.12' // https://buildbox.net/2017/01/android-rate/ compile "com.github.hotchemi:android-rate:${android_rate_version}" // https://buildbox.net/2016/04/%E3%83%90%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%80zxing%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E8%A9%A6%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F/ compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar' compile 'com.google.zxing:core:3.2.1' // https://buildbox.net/2016/04/toast%E3%82%92%E5%BC%B7%E5%8C%96%E3%81%97%E3%81%9Fsupertoast%E3%82%92%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%9F/ compile 'com.github.johnpersano:supertoasts:1.3.4@aar' // https://buildbox.net/2016/04/butter-knife%E3%81%AE%E4%BD%BF%E3%81%84%E3%81%8B%E3%81%9F/ compile 'com.jakewharton:butterknife:7.0.1' }
うまくいくかどうか、これから実践です。
しばし試してみて、結果を報告できればと思います。
私なりに試すやり方ですが、よかったらご参考にしてください。