Android Studioの移行2.3.3 → 3.1.4

##はじめに
久しぶりにAndroid Studioを起動したらバージョンが上がってたので、移行。
あとついでに日本語化も。
環境：macOS Sierra (10.12.6)
## Android Studioのアップデート
`AndroidStudio > Check for Update > Update and Restart`
<img width="1280" alt="ASVUP_01.png" src="https://qiita-image-store.s3.amazonaws.com/0/187787/e8b2f531-444c-9279-1bd1-ac47530b377e.png">

`Complete Installation`では`Import Studio setting from: Previous version`を選択して、設定情報を引き継ぎ。
<img width="643" alt="ASVUP_02.png" src="https://qiita-image-store.s3.amazonaws.com/0/187787/5dfe1df4-4679-5c2c-622b-bbe7ee8867ad.png">

無事アップデート完了。
<img width="674" alt="ASVUP_03.png" src="https://qiita-image-store.s3.amazonaws.com/0/187787/5135c434-b0cb-644f-5d46-f47f06174458.png">

## 日本語化
Pleiadesを使う。Eclipseだけかと思ったけど、Jetbrains製IDEならなんでもいけるみたい。以下サイトを参考にしました。
[Android Studio3.1を日本語化する](https://hiromart.com/blog/androidstudiojapanese/)
「ファイルの階層移動」は不要でした。macだから？
![ASVUP_04.png](https://qiita-image-store.s3.amazonaws.com/0/187787/c7f425de-10b2-b6f9-03a9-85c5b9958ae7.png)

##　Gradleラッパーの設定
ローカルのGradleを使う設定から、Gradleラッパーを使うように設定変更。
<img width="1137" alt="ASVUP_05.png" src="https://qiita-image-store.s3.amazonaws.com/0/187787/bd6ddb0b-156f-a646-5ec9-03fc3eec856a.png">

## Gradleラッパーのアップデート
[ここ](https://services.gradle.org/distributions/)を見ると、最新版は4.10みたいなので、gradle-wrapper.propertiesを修正。

```gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-all.zip
```
プロジェクトの同期を実行すると、自動的にGradleのダウンロードが始まる。
完了後、バージョン確認。

```
% ./gradlew --version                                             (git)-[master]

Welcome to Gradle 4.10!

Here are the highlights of this release:
 - Incremental Java compilation by default
 - Periodic Gradle caches cleanup
 - Gradle Kotlin DSL 1.0-RC3
 - Nested included builds
 - SNAPSHOT plugin versions in the `plugins {}` block

For more details see https://docs.gradle.org/4.10/release-notes.html


------------------------------------------------------------
Gradle 4.10
------------------------------------------------------------

Build time:   2018-08-27 18:35:06 UTC
Revision:     ee3751ed9f2034effc1f0072c2b2ee74b5dce67d

Kotlin DSL:   1.0-rc-3
Kotlin:       1.2.60
Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_131 (Oracle Corporation 25.131-b11)
OS:           Mac OS X 10.12.6 x86_64
```

## Android Gradle Pluginのアップデート
build.gradleを修正する。
jcenterだと取得できないプラグインがあるみたいなので、googleリポジトリの追加もやる。
[3.0.0-alpha以降のAndroidプラグインはGoogleのmavenリポジトリで取得する必要がある](https://qiita.com/yamacraft/items/54ffee2c0aa2d1f41b75)

```build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google() // 追加
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4' // 3.1.4に変更

        // 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
}
```

## SDKツールのアップデート
`ツール > SDKマネージャー > 外観 & 振る舞い > システム設定 > Android SDK > SDKツールタブ`で以下を選択してアップデート。

- Android SDK Build-Tools
- Android SDK Platform-Tools
- Android SDK Tools
- Intel x86 EmulatorAccelerator (任意)
- Android Support Repository
- Google Repository

<img width="1137" alt="ASVUP_06.png" src="https://qiita-image-store.s3.amazonaws.com/0/187787/6ab2621c-f44a-5178-f321-4fc402c95465.png">

自分で日本語化しておいてあれだけど、「外観 & 振る舞い」ってダサいな・・・

## エラー対応
### オンデマンド設定をオフに
Gradle4.6以降はオンデマンド設定に対応していない。

```
Configuration on demand is not supported by the current version of the Android Gradle plugin since you are using Gradle version 4.6 or above. Suggestion: disable configuration on demand by setting org.gradle.configureondemand=false in your gradle.properties file or use a Gradle version less than 4.6.
```

検索したらstackoverflowに解決策があった。
[Configuration on demand is not supported by the current version of the Android Gradle plugin](https://stackoverflow.com/questions/49990933/configuration-on-demand-is-not-supported-by-the-current-version-of-the-android-g)
`Android Studio > 環境設定 > ビルド、実行、デプロイ > コンパイラー`から「オンデマンドで設定」のチェックを外す。
<img width="1280" alt="ASVUP_07.png" src="https://qiita-image-store.s3.amazonaws.com/0/187787/70b9e6f8-ecf8-6346-ae62-9b3ddb5432bf.png">

### Dependencyの設定

```
Configuration 'androidTestCompile' is obsolete and has been replaced with 'androidTestImplementation' and 'androidTestApi'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

Configuration 'testCompile' is obsolete and has been replaced with 'testImplementation' and 'testApi'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

Configuration 'testApi' is obsolete and has been replaced with 'testImplementation'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html
```

言われるがままに、build.gradleを修正

```build.gradle
// before
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'
}
```

```build.gradle
// after
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    implementation 'com.android.support:appcompat-v7:25.1.0'
    testImplementation 'junit:junit:4.12'
}
```

## 参考
- [Android Studioを2.3から3.0へ移行する](https://qiita.com/taki4227/items/e9473441a7b2fe00e1f3)