1. ことのはじまり
先日 Google Play から「2018年11月1日までに公開しているすべてのアプリの compileSdkVersion を API 26以上にしてちょうだい」とのメールが。詳しくは今後の Google Play でのアプリのセキュリティおよびパフォーマンスの改善についてというGoogle Developersのブログ記事を参照。
Oh、これ、対応しないと Ban されるやつだわ....。
ということで、GitHubにあげているソースをcloneして改修に入ることに。
2. 最新のAndroid Studioで読めるようにするには
「読めるようにするには」というよりもむしろ、「Gradleビルドが正常終了するようにするには」というほうが正しい。
いまのAndroidはgradleプロジェクトだけど、 build.gradle の設定はざっくりこんな感じ。
minSdkVersion |
15 |
compileSdkVersion |
19 |
targetSdkVersion |
19 |
Gradle Wrapper |
1.10 |
Android Gradle plugin |
0.9 |
buildToolsVersion |
19.0.3 |
注目すべきは Android Gradle plugin のバージョンで、どうやらこのアプリ、Android Studio 1.0がリリースされる前から開発していたようだw
2-1. Gradle Wrapper をアップグレードする
ここから先はASを使わず、エディタとコンソールで対応する。
Android の Gradle プロジェクトは、そのプラグインと Gradle そのもののバージョンに縛りがあり、これは公式で公開されている。
Android Studio 3.x には Gradle 4.4がすでにバンドルされているので、4.4以上にするのだが、たまたまシステムに Gradle 4.6 をセットアップしていたのでこっちの wrapper
タスクを利用することにした。
また、 Gradle を 4.6 にするので、 Android Gradle plugin は 3.0.0 以降にする必要があるのだが、公式のAndroid Plugin for Gradle 3.0.0 への移行にあるとおり Google の Maven リポジトリを使う必要がある。
なので、ルートの build.gradle
中の buildscript
に Google の Maven リポジトリを追加して Gradle プラグイン 3.1.x を使う設定を書く。
buildscript {
repositories {
google() // 追加、Google Maven Repository を使う設定
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
}
}
また、appcompat-v7
なども同様に Google Maven リポジトリからの取得になるので、dependencies
ブロックにも設定を入れる。
Maven リポジトリの参照先をモジュールごとに変える理由はないので、ルートの build.gradle
に allprojects
ブロックを定義する。
allprojects {
repositories {
google()
jcenter()
mavenCentral() // jcenterがあれば普通は大丈夫だが、状況に応じて入れる
}
}
ここまでできたら wrapper
タスクを実行する。
$ gradle wrapper
正常終了したら、 Gradle Wrapper のバージョンは4.6になっているはず。
2-2. Android アプリモジュールの調整
今度は app/build.gradle
をいじる。
buildToolsVersion
を 27.0.3 以降にすればいいのだが、メジャーバージョンが targetSdkVersion
の値と一致していないと警告の対象となるので、 targetSdkVersion
は自然と同じ値になる。
また、これに引きずられて compileSdkVersion
と appcompat-v7
のバージョンも27以降にする必要がある。
今回は API 28 にするので、以下のとおりに変更。
android {
compileSdkVersion 28
buildToolsVersion '28.0.2'
defaultConfig {
targetSdkVersion 28
}
}
dependencies {
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
}
また、プラグインの仕様変更で、最初の行に書く apply plugin
も書き換える必要がある。
apply plugin: 'com.android.application'
この状態で、 assembleDebug
タスクが正常終了すれば、ASにインポートしてもビルドが通るはずである。
最近のコメント