KMMの環境構築をする
KMMとは?
Kotlin Multiplatformの略です。
Kotlin マルチプラットフォームを使用すると、ネイティブ プログラミングの利点を維持しながら、さまざまなプラットフォーム用のアプリケーションを作成し、それらのプラットフォーム間でコードを効率的に再利用できます。 マルチプラットフォーム アプリケーションは、iOS、Android、macOS、Windows、Linux などのさまざまなオペレーティング システムで動作します。
こちらのスクラップ通りにやってみたが、kdoctorのところから進まなくなった💦
対処方法
ここは、個人のPCによっても違いが出てくると思われます???
環境構築手順
homebrewでインストールする
こちらのリンクを参照
こちらのサイトの手順を参考にしたがうまくできなかった???
.zshrcの設定はこのようにした!
これはM2 Macの場合の設定です。
eval "$(/opt/homebrew/bin/brew shellenv)"
export PATH="$PATH:/Users/hashimotojunichi/development/flutter/bin"
eval "$(rbenv init - zsh)"
export VOLTA_HOME="$HOME/.volta"
export PATH="$VOLTA_HOME/bin:$PATH"
export PATH="$PATH:$HOME/.pub-cache/bin"
# JDK
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
# CocoaPods
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
ChatGPTに聞かないと解決できなかった😅
The error message indicates that the path you're trying to set for JAVA_HOME
does not exist. This means that either the Java installation is not where it's expected to be, or it could be a different version or location depending on how Android Studio is installed on your machine.
Here are the steps you can take to troubleshoot and fix this issue:
-
Locate the correct JDK path:
If you have Android Studio installed, it typically comes with a bundled JDK. To find the current location of the JDK that comes with Android Studio, you can do the following:Open Android Studio and go to
Preferences
->Appearance & Behavior
->System Settings
->Android SDK
and then look for the JDK location. Alternatively, if this information is not there, you can check within Android Studio'sProject Structure
dialog underSDK Location
. -
Install JDK manually:
If you cannot find the JDK through Android Studio, you might not have it installed, or the installation might be corrupted. You can download and install a JDK manually from a provider such as AdoptOpenJDK, Oracle, or any other OpenJDK vendor. After installing, set theJAVA_HOME
to the new path where the JDK is installed. -
Update
.zshrc
file:
Once you have the correct path to the JDK, you need to update your.zshrc
file accordingly.Open Terminal and type:
open -e ~/.zshrc
Or, if you have Visual Studio Code and it's set up to open files from the terminal, use:
code ~/.zshrc
Then, replace the
JAVA_HOME
line with the actual path to your JDK. For example, if you installed AdoptOpenJDK 11, it might look something like:export JAVA_HOME=$(/usr/libexec/java_home -v 11)
Save the
.zshrc
file and apply the changes:source ~/.zshrc
-
Verify the setup:
After updatingJAVA_HOME
, verify it by running:echo $JAVA_HOME java -version
-
Re-run kdoctor:
Once you've corrected theJAVA_HOME
setting, re-runkdoctor
to see if the issue is resolved.
If after these steps kdoctor
still indicates that there is a problem, it could be that the kdoctor
tool requires a specific version of the JDK, or there might be another issue with the environment settings. Make sure that the version of the JDK matches the requirement of your projects or the kdoctor
tool.
どうやら、うまくいったようだ。。。
Android Studio本体のJavaを読み込んでいるのか???
試しにビルドしてみるが、なぜかAndroidのエミュレーターだけ小さかった?
VS CodeでFlutterのプロジェクトから、表示することはできてその場合は普通サイズになる。
iOSだとタブを切り替えて表示するようだ。
ソースコードは、Jetpack Composeだったそのぽい?
コンポーネントを読み込んでいるようだが、なぜか文字が変わらなかった???
package com.example.kmmtutorial.android
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import com.example.kmmtutorial.Greeting
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MyApplicationTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
GreetingView(Greeting().greet())
}
}
}
}
}
@Composable
fun GreetingView(text: String) {
Text(text = text)
}
@Preview
@Composable
fun DefaultPreview() {
MyApplicationTheme {
GreetingView("Hello, KMMさん!!!!")
}
}
最後に
Googleじゃなくて、JETBRAINSが開発したマルチプラットフォームなるものは、これから流行るのか気になりますね👀
Jboy王国で学習用に導入してみようと思います。
Discussion