[Android]ライブラリーとGradleが古いバージョンを使っていると気づく技術
はじめに
このシリーズを初めての方はこちらです。
「最近Androidを始めた同僚のソースをモダン化計画 」シリーズ開始 | Developers.IO
リリースを目指して作っているので、公開してまずいところは、一部改変しています。
どこから手を付ける?
サンプルは、簡単なフォームが表示され、入力して、登録ボタンを押して処理される。やりたい事がなんとなくわかる程度ものでした。
処理はすべてActivityに記述ありました。
ぶっちゃけ趣味のアプリですし、このままでもやりたいことは実現できました。そこで、まずはどうしたいヒヤリングしました。
- Droid Kaigiみたいなイケイケな設計がしたい。
- Androidのプロダクトでどんな設計になっているか知りたい。
- どういうソースコードになってるか知りたい。
- Kotlinもいっぱい触りたい。
つまり、ガンガンいこうぜ!ってことね!
やることはたくさんあるぞ。さてどこから手を付けるか。まずは地味だけどbuild.gradleから手を付けることにした。
理由は以下の通り
- ここを放置してなんか問題があったとき、後半に気づけば気づくほどめんどくさいことになる。戒め。
- リリース後にバージョンをあげるのが怖くなるので、開発中はとにかく最新版に保ち、リリースまで罠を踏みまくって安定させたい。
- 最新の Android API レベルの指定が義務づけられているので、1つ目と同じ理由で気づいたらどんどんあげる。
やっぱり、ソースいじる前の、基礎工事って大事ですよね。
現状をみてみる
build.gradle
buildscript { ext.kotlin_version = '1.2.41' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
app/build.gradle
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 26 defaultConfig { applicationId "hogehogehoge" minSdkVersion 21 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" implementation 'com.android.support:appcompat-v7:26.0.+' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' implementation 'com.android.support:recyclerview-v7:26.0.+' implementation 'com.jakewharton.timber:timber:4.6.0' }
レビュー
所感。半年〜1年前にAndroid Studioでプロジェクトを作ったあとから、変更していないのかな。
Gradleのバージョンが古い
2018/7/25現在では、Android Studio 3.1.3がStable。
classpath 'com.android.tools.build:gradle:3.1.2'
が3.1.3にしないと毎回開くたびUpdateしろよダイアログもうるさいし、開発中なのでどんどん上げていこう。
Kotlinのバージョンが古い
2018/7/25現在では、1.2.51が最新。なるべく最新に...以下同文
APIレベル26(M)で古め
2018年8月の義務がAPI26(M)だから、クリアしてるけど開発中だったら27(N)か28(O)まで上げておきたい。とはいえ26から27、28にあげると@Nullable,@NotNullアノテーションがつくようになったので、既存ソースのNullの扱いを変更する必要がありそう、めんどそうだ。いったん保留。
各種ライブラリーのバージョンが古い
全部少しずつ古い。なるべく最新に...以下同文
どうして古い?
PRで直して送るのは簡単だが...どうして古くなる?PR送った後、Slackでのやり取りでわかりました。
こういうのエディタで修正するのです?AndroidStadioにそういう機能あるのです?
古くなっていることに気づいたり、どうやってバージョンを調べるのか、どうやって設定するのかわからないのである
なるほどね。そこでつまずくのか。Android Studioのやさしい機能がたくさんあるんですよ。オクサン。
Gradleの古いバージョンに気づく技術
Android Studioを開いたらこのダイアログが表示されたら、古いバージョンのGradleを使っています。Update押しちゃえばOKです!
ライブラリー類の古いバージョンに気づく技術
すごく簡単でAndroid Studioで開くと、非推奨なものをつかったり、古いバージョンのものを使っている警告色?、ヒント色が付きます。まずはこれを確認にしよう。
(スクリーンショットはダークテーマ)
Android Studioさんは、背景がついているところがもやっているのね。その色がついているところにマウスカーソルを載せてみると、その理由が表示されます。
ふむふむ3.1.3が使えるよっとな。
よし!3.1.3ってキーボードで打ち込むぞー!っと思った方、さらに便利な機能あるんですよ。その行を選んで、Alt + Enter または Option Enterを押す。
すると、「Change to 3.1.3」 っとおすすめの変更が表示されます。選びます。すると変わります!そして警告色もなくなります。
大抵の問題はこれで解決できます。
その他古いバージョンに気づく技術-1
Android Studioの標準機能を使って確認もできます。
その他古いバージョンに気づく技術-2
プラグインをいれて、確認する方法もあります。
まとめ
古いバージョンを使っていると気づく技術を学びました。次回は具体的にどうバージョンを指定すべきか考えます。