👷

KMMの環境構築をする

2023/11/04に公開

KMMとは?

Kotlin Multiplatformの略です。

Kotlin マルチプラットフォームを使用すると、ネイティブ プログラミングの利点を維持しながら、さまざまなプラットフォーム用のアプリケーションを作成し、それらのプラットフォーム間でコードを効率的に再利用できます。 マルチプラットフォーム アプリケーションは、iOS、Android、macOS、Windows、Linux などのさまざまなオペレーティング システムで動作します。

https://www.jetbrains.com/kotlin-multiplatform/

こちらのスクラップ通りにやってみたが、kdoctorのところから進まなくなった💦

https://zenn.dev/takashings/scraps/7167981b7d822a

対処方法

ここは、個人のPCによっても違いが出てくると思われます???

環境構築手順

homebrewでインストールする

こちらのリンクを参照

https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-setup.html

こちらのサイトの手順を参考にしたがうまくできなかった???

https://zenn.dev/takashings/scraps/7167981b7d822a

.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:

  1. 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's Project Structure dialog under SDK Location.

  2. 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 the JAVA_HOME to the new path where the JDK is installed.

  3. 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
    
  4. Verify the setup:
    After updating JAVA_HOME, verify it by running:

    echo $JAVA_HOME
    java -version
    
  5. Re-run kdoctor:
    Once you've corrected the JAVA_HOME setting, re-run kdoctor 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王国で学習用に導入してみようと思います。

Jboy王国メディア

Discussion