記事概要
最近話題のAndroidでもiOSでも対応するマルチプラットフォーム。
現在はFlutter現場にいますが、kotlinでもマルチプラットフォームが
対応可能ということで、早速触ってみたいと思い本記事を作成しました。
まだFlutterも1年程度しか触ってないのでそっち勉強しろという
状況ではありますが。。。笑
KMMとは?
簡単に言えば、KotlinでAndroid,iOS両OSの
アプリを作成することができるツールです。
JavaやKotlinのライブラリが使えるなど、
利便性の高さが伺える内容です。
こちらの記事が分かりやすかったです!
必要になる環境
・Android Studio 4.0.0以上
※4.0.0の場合、機能が一部制限されてるので4.0.1以上の方がいいらしい。。
・Xcode 11.3以降
・KMMプラグイン (下記参照)
KMMプラグインはAndroid StudioからInstallしましょう!
File>Settings>plugins
で、kotlin multiまで入力すれば出てくるかとおもいます!
環境の情報は公式を参照してそのまま書きました↓
プロジェクト作成
早速HelloWorldを書いていきましょう!
まずはAndroid Studioを開いてください。
NewProject>Kotlin Multiplatform App
を選択します。
プロジェクト名を記載して、Nextを押下します。
※保存場所は各自で決めていただけたらと思います
次にAndroid・iOS・共有モジュール名を記載し、Finishを押下します。
これでプロジェクトが完成します。
プロジェクトが完成し、フォルダが閲覧できるまで結構時間が
かかります。
Android初心者の方は中々作成されず焦るかもですが、
ちょっと待ってみてください。。
プロジェクト完成後
5分くらい待つとプロジェクトが完成し、
下のような画面が出てきます。
さていよいよ動かしてみる訳ですが、
AndroidとiOSそれぞれターゲットを変更する必要があります。
右上の方に以下のようなボタンが並んでるかと思います。
AndroidAppから実施しましょう!
上記のようにandroidAppに合わせて再生ボタンを押下してください。
エラーが発生した場合
私の環境ですと以下のエラーが発生しました。
参考になれば幸いです。
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
> Android Gradle plugin requires Java 17 to run. You are currently using Java 11.
Your current JDK is located in /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
You can try some of the following options:
- changing the IDE settings.
- changing the JAVA_HOME environment variable.
- changing `org.gradle.java.home` in `gradle.properties`.
* Try:
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
どうやらJava17が必要らしい。。
Java11までしか存在をちゃんと知れてなかったので勉強しないと。。
エラー解決方法
File>Settings>Build,Execution,Deployment>
Build Tools>Gradle
で以下のようにJava17以降を入れます。
Applyして、Finishしましょう!
上記はVersionが20になってますが、
17以上であれば問題ありません。
再生
再生ボタンを押下して、Buildしましょう!
成功すれば以下のようにEmulatorが動作します。
以下のようにiOSも実施します。
そして再生すると。。
無事iOSでも動作が確認できました!
最後に
今回は試しに触ってみただけのため簡単な記事に
なりますが、Flutter以外でもマルチプラットフォームを触っていけたらと
思います!
本記事が参考になれば幸いです!
参考文献
▪️KMM公式
▪️Java 17新機能まとめ
▪️Kotlin Multiplatform Mobile と Flutterの違いについて