[Android]ライブラリーとGradleが古いバージョンを使っていると気づく技術

いろいろ直したいところあるけど、まずはbuid.gradleから着手。しかし、ライブラリーなどのバージョンが古い。なぜ?バージョンが古いと気づいたり直し方がわからないからか!!!まず最初の一歩気づく技術を伝授。
2018.07.24

はじめに

このシリーズを初めての方はこちらです。

「最近Androidを始めた同僚のソースをモダン化計画 」シリーズ開始 | Developers.IO

リリースを目指して作っているので、公開してまずいところは、一部改変しています。

どこから手を付ける?

サンプルは、簡単なフォームが表示され、入力して、登録ボタンを押して処理される。やりたい事がなんとなくわかる程度ものでした。

処理はすべてActivityに記述ありました。

ぶっちゃけ趣味のアプリですし、このままでもやりたいことは実現できました。そこで、まずはどうしたいヒヤリングしました。

  • Droid Kaigiみたいなイケイケな設計がしたい。
  • Androidのプロダクトでどんな設計になっているか知りたい。
  • どういうソースコードになってるか知りたい。
  • Kotlinもいっぱい触りたい。

つまり、ガンガンいこうぜ!ってことね!

やることはたくさんあるぞ。さてどこから手を付けるか。まずは地味だけどbuild.gradleから手を付けることにした。

理由は以下の通り

やっぱり、ソースいじる前の、基礎工事って大事ですよね。

現状をみてみる

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

プラグインをいれて、確認する方法もあります。

まとめ

古いバージョンを使っていると気づく技術を学びました。次回は具体的にどうバージョンを指定すべきか考えます。