概要
Google I/O 2017でKotlinがfirst-class languageとなる発表がありました。
そこで、Android Studio 3.0 Canary 1でプロジェクトを作成する際の以前との変化をまとめます。
ロゴ
スプラッシュなどで表示されるロゴが新しくなってます。
新規プロジェクト作成ウィザード
Include Kotlin support
のチェックボックスが追加されています。
IDE
IntelliJのベースがおそらく変わってますが、何かわからず・・
https://developer.android.com/studio/preview/features/index.html#core_ide_changes
2017.1
ベースのようです。
プロジェクトテンプレート
build.gradle
Google's Maven repositoryが追加されています。
これは既存プロジェクトにも反映させたほうがいいでしょう。
mavenCentral()
は不要なのでは・・
app/build.gradle
Kotlin以外特に変化なし。
-
org.jetbrains.kotlin:kotlin-stdlib-jre7
になっているけど、AutoClosable
AutoCloseable
とThrowable.addSuppressed
を使わなければ、API Level19未満でも問題ないのだろうか? -
minSdkVersion 18
でもorg.jetbrains.kotlin:kotlin-stdlib-jre7
でした。 -
ソース見ると
inline
なので、use
不用意に使うのはまずいのでは・・あとで検証- 検証したところやはり19未満では
AutoCloseable.use
で落ちます。 -
minSdkVersion < 19
ではorg.jetbrains.kotlin:kotlin-stdlib
にすべきです。
- 検証したところやはり19未満では
gradle/wrapper/gradle-wrapper.properties
Android Gradle PluginがGradle 4.0に引き上げられたのでgradle-4.0-milestone-1
になっています。
Migrate to the New Pluginも公開されています。結構影響ありそうです。
その他ソースなど
JavaのテンプレートをKotlin変換しただけのコードのようで、特に変化はなさそうです。
強いて言うならAndroi Oで追加されるRound Icon Resourcesがデフォルトで追加されているくらいでした。
src/main/java
じゃなくてsrc/main/kotlin
にしてほしかったですが、Androidではkotlin
ディレクトリを作ってもソースディレクトリ認識されません。(Kotlinモジュールでは認識されます)
ちなみに、以下の記述で認識させることができます。これもデフォルトになってほしい。
android {
...
sourceSets.all {
java.srcDirs += "src/${name}/kotlin"
}
}
その他変更点
https://android-developers.googleblog.com/2017/05/android-studio-3-0-canary1.html
エミュレーターやDebugまわりの新機能が多いです。
Stethoは不要になるかもしれません。
余裕があったらほかの新機能も書いてみます。