以下な手順で単純に移植できるのかどうか。
とりあえず
- build.gradle 修正して
- sync して
の時点で不具合。どうも apply plugin
は以下の順で書かなきゃ、なのと
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
com.android.tools.build:gradle のバージョンが古かったのが原因でした。試したプロジェクトでは 1.0.0 という記述でした。エラーメッセージによれば 1.1.0 以上でないと駄目みたいですね。
基底クラスから変換してみた
ら、基底クラスで定義した変数が使えなくてぐぬぬ、ってなってたのですが継承してる方も Kotlin にしたら解決。つまらぬナニで時間を使っているなxD
つうか、既存実装から convert するにあたってほとんど問題ないのが凄いな。
Gradle build daemon disappeared unexpectedly
突然このメセジにて build が失敗するようになる。ps aux
を gradle で grep してそのプロセス kill したら動くようになりました。何なのこれ。
変換ソース見つつ色々確認
してみます。簡単に列挙な形にて控える方向ス。
- 結局 property は普通に定義しておけばサブクラスで使える模様
companion object
て M11 で導入された class object にかわる記述の方法な模様- !! て何 (別途確認
- (例えば) Runnable なオブジェクトの生成な記述
- getIntent とか getSupportActionBar とかのメソド (これ、スーパークラスの属性の getter なのか)
- instanceof は is らしい件
- Activity.VIBRATOR_SERVICE ではなくて Context.VIBRATOR_SERVICE だった
- javascript interface な内部クラスが
inner class
で定義されている
ぐぬ
何故か instanceof (Kotlin だと is) でもごもごしてる場所で NoClassDefFoundError という例外吐いてます。あ、これって class の宣言 open にしないと、なのかな。。
もひとつ
@Nullable なナニをきちんと変換してくれないケイス (ちょっと前のソースを変換した場合?) があり、実行時例外が出ちゃうことがあるみたいです。まぁ、きちんと試験しろってことなのでしょうが、なかなか厳しいス。