KotlinとJavaのソースファイルが混じっているAndroidプロジェクトを複数人で開発する時の注意
某コンテストに参加しており、1人はJavaでもう1人はKotlinで、コンテストに出すAndroidアプリを開発していて、その時に片方ではエラーと出て片方では何も出ていなくて2人ともビルドや実行はできるという状況に陥ったけど解決した話。
# 開発環境
Windows 10
Mac OSX Sierra
AndroidStudio 2.3.3
Java8
Kotlin 1.1.50
# 状況
- gitでバージョン管理をしていて、Kotlinで書いている人(以下K)とJavaで書いている人(以下J)がdevelopから生やしたブランチでそれぞれ作業をしており、Kがmergeした後のdevelopブランチにJがmergeした後に急に出てきたらしい(当人ではないので詳しくは分からず)。
- KとJはそれぞれ別フォルダにそれぞれの言語のコードを保存していました。(main.java.srcDirs += 'src/main/kotlin')
- AndroidStudioに「cannot resolve symbol」と言われ赤波線を引かれてエラー扱い。
- ビルドや実行はでき、「Message」ではエラーと出ない。
- ビルドや実行はできるがエラー表示され、他のエラーに気づけなくなる可能性があるためどうにかしたい。
- Kの方ではエラー出されていない。
- エラーが吐かれたファイルはMainActivity.java。
- エラーが吐かれた部分は全部、Kotlinで作成したクラスのインスタンス化だったり宣言をしているところ。
- Kotlinが入っているフォルダをAndroidStudioが見つけられていないっぽい...?
# 解決方法
ここまで読んできて、詳しい人なら気付いていると思いますが、
J側のAndroidStudioにKotlinのプラグインをインストールしたら解決しました。
これでAndroidStudioが.ktファイルを認識するようになったみたい。
そのあとは同じ状況にならずに済んでいる。
# 感想
エラーというか要注意扱いなのかと考えたけど「cannot resolve symbol」と言われたらね...
当然と言われればそうかもしれないけど、全く考慮できていなかった。
最初、全部Javaに書き直そうかと思って、少しJavaで書き直したところでめんどくさくなって解決方法を考えてみたけど成功してよかった。
今の所、これ以外でJavaとKotlinの混じった開発に支障はなくて安心。
進捗(´・ω・`)