はじめに
Android Studio 3.0 がリリースされました。
ということで、Android Studioを2.3から3.0に移行しました。
手順
1. Android Studioのアップデート
Android Studio -> Check for Updates...
からアップデート
2. Gradleのアップデート
Gradleを最新の 4.1 にアップデート
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
3. Android Plugin for Gradleのアップデート
Googleから提供されたmavenリポジトリを使うようにもする
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
allprojects {
repositories {
google()
}
}
4. SDK Build Toolsのアップデートのアップデート
android {
buildToolsVersion '26.0.2'
}
5. Flavor Dimensionsの設定
Android Studio 3.0 から、すべての Flavor に対して、Flavor Dimensions の設定が必須
android {
flavorDimensions "source"
productFlavors {
free {
dimension "source"
}
}
}
Flavor Dimensionsを設定していなかったら、以下のようなエラーになる
Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
6. Dependencyの設定
Android Studio 3.0 から、compile
は非推奨で、その代わりにimplementation
かapi
を使うことが推奨されている
implementation
とapi
の違いはここに詳しく書いているhttps://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html?utm_source=android-studio#new_configurations
また、provided
はcompileOnly
に、apk
はruntimeOnly
を使うことも推奨されている
// before
dependencies {
compile 'com.xxx.yyy:zzz:1.0.0'
freeCompile 'com.xxx.zzz:yyy:1.0.0'
}
// after
dependencies {
implementation 'com.xxx.yyy:zzz:1.0.0'
freeImplementation 'com.xxx.zzz:yyy:1.0.0'
}
7. その他行ったこと
Retrolambda
ビルドしたときに以下のような警告
Warning:One of the plugins you are using supports Java 8 language features. To try the support built into the Android plugin, remove the following from your build.gradle:
apply plugin: 'me.tatarka.retrolambda'
To learn more, go to https://d.android.com/r/tools/java-8-support-message.html
Android Studio 3.0から、Java8記法がサポートされて、Retrolambdaが不要になったので、RetrolambdaをDependencyから削除
Error:Error converting bytecode to dex
ビルドしたときに以下のようなエラー
Information:Gradle tasks [:app:assembleDebug]
Error:Error converting bytecode to dex:
プロジェクトをクリーンしたら直りました
FATAL EXCEPTION: android.view.InflateException: Binary XML file line #0:
特定の画面に遷移したときにアプリが落ちて、以下のようなエラー
FATAL EXCEPTION: android.view.InflateException: Binary XML file line #0:
Android Studio 3.0 から、Android Asset Packaging Tool 2.0 (AAPT2) を使ったリソース処理がデフォルト動作となったらしい
これを無効にしたいので、以下の追記をした
android.enableAapt2=false
APKの出力先が変わった
Flavor Dimensionsの設定をしたことで、APKの出力先が変わり、CI環境でエラーとなった
APKの出力先が
/app/build/outputs/apk/[flavor]/[buildType]/app-[flavor]-[buildType].apk
に変わっていました
追記
Android Studioを3.1に上げた記事も書きました。