質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

640閲覧

Kotlin Multiplatform Mobile(KMM)を使ってiOSアプリを作りたい

active_vintage

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2022/06/22 09:13

解決したいこと

AndroidStudioであるアプリを開発したいのですが
AndroidとiOSそれぞれでリリースしたいと考えています。

Android版アプリの開発はほとんど終わり、iOS版アプリに取り掛かりたいのですが
Kotlin Multiplatform Mobile(KMM)を具体的にどのように用いればいいのかわかりません。
解決方法を教えてください。

最終的にはAndroid版と同機能のiOS版アプリを開発することができれば問題ありません。
従ってKMMを使用が不適切な場合は他の手段を教えていただきたいです。

使用環境

Android Studio Chipmunk | 2021.2.1 Patch 1
Kotlin 1.7.0
Kotlin Multiplatform Mobile 1.7.0
JDK 18.0.1.1
Xcode 13.4.1
macOS monterey 12.4

発生している問題・エラー

後述のiOSのシュミレータを起動し、KMMによるプロジェクト内でボタンを配置することは出来ました。
しかしながら、iOS版のアプリ上でボタンは反映されず、どのようにして良いのかわかりません。

また、後述の公式HPでのレッスンの中でも「共有モジュールへの依存関係をAndroidアプリケーションに追加」の部分で詰まってしまいました。
https://kotlinlang.org/docs/multiplatform-mobile-integrate-in-existing-app.html#add-a-dependency-on-the-shared-module-to-your-android-application

私のプログラム上ではbuild.gradle.ktsとbuild.gradle (app)のcompileSdkの値が異なっていました。
これを
build.gradle.ktsのcompileSdkを32から31に変更しました。
(minSdkは同じ値でした。)
しかしながら公式ドキュメントと同じような挙動はせず以下のエラー分が出ました。

org.gradle.internal.exceptions.LocationAwareException: Build file '/Users/username/StudioProjects/kmm-integration-sample/shared/build.gradle.kts' line: 11 Build was configured to prefer settings repositories over project repositories but repository 'ivy' was added by build file 'shared/build.gradle.kts' at org.gradle.kotlin.dsl.execution.InterpreterKt$locationAwareExceptionFor$2.invoke(Interpreter.kt:597) at org.gradle.kotlin.dsl.execution.InterpreterKt.locationAwareExceptionFor(Interpreter.kt:604) at org.gradle.kotlin.dsl.execution.InterpreterKt.locationAwareExceptionHandlingFor(Interpreter.kt:570) at org.gradle.kotlin.dsl.execution.InterpreterKt.access$locationAwareExceptionHandlingFor(Interpreter.kt:1) at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.handleScriptException(Interpreter.kt:406) at Program.execute(Unknown Source) at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.eval(Interpreter.kt:528) at org.gradle.kotlin.dsl.execution.Interpreter$ProgramHost.evaluateSecondStageOf(Interpreter.kt:434) at Program.execute(Unknown Source) 以下”at org.gradle.〜”で始まるエラー文が数百行ある(中略) at org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader.setupRepo(NativeCompilerDownloader.kt:98) at org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader.downloadAndExtract(NativeCompilerDownloader.kt:122) at org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader.downloadIfNeeded(NativeCompilerDownloader.kt:173) at org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeTargetPreset.setupNativeCompiler(KotlinNativeTargetPreset.kt:56) at org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeTargetPreset.createTarget(KotlinNativeTargetPreset.kt:73) at org.jetbrains.kotlin.gradle.plugin.mpp.AbstractKotlinNativeTargetPreset.createTarget(KotlinNativeTargetPreset.kt:24) at org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtensionKt.configureOrCreate(KotlinMultiplatformExtension.kt:74) at org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithPresetFunctions$DefaultImpls.iosX64(KotlinTargetContainerWithPresetFunctions.kt:145) at org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.iosX64(KotlinMultiplatformExtension.kt:16) at org.jetbrains.kotlin.gradle.dsl.KotlinTargetContainerWithPresetFunctions$DefaultImpls.iosX64(KotlinTargetContainerWithPresetFunctions.kt:151) at org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension.iosX64(KotlinMultiplatformExtension.kt:16) at Build_gradle$1.execute(build.gradle.kts:11) at Build_gradle$1.execute(build.gradle.kts:1) at org.gradle.internal.extensibility.ExtensionsStorage$ExtensionHolder.configure(ExtensionsStorage.java:173) at org.gradle.internal.extensibility.ExtensionsStorage.configureExtension(ExtensionsStorage.java:64) at org.gradle.internal.extensibility.DefaultConvention.configure(DefaultConvention.java:194) at org.gradle.kotlin.dsl.Accessors8rihyt52ywg47pk3ez2ijmcwzKt.kotlin(Unknown Source) at Build_gradle.<init>(build.gradle.kts:9) ... 158 more

自分で試したこと

https://zenn.dev
この記事のようなiOSのシュミレータを起動し初期画面を表示させることはできました。

https://kotlinlang.org
公式の資料を確認してみましたがわかりませんでした。

KMM以外の方法として以下のIntel Multi-OS Enginも試しましたが
記事が古くサイト内の画像が現在のバージョンに対応していなかったため、よくわかりませんでした。
https://nosix.hatenablog.com

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

active_vintage

2022/06/23 01:55

ご回答ありがとうございます おっしゃる通りUI部分はSwift側の操作であるようですね もしご存知でしたら、KMM以外でAndroid版と同機能のiOS版アプリを作成する手順などあればご教授いただきたいです
hoshi-takanori

2022/06/23 03:03

Flutter や React Native や、ゲームなら Unity など、いろいろありますが、自分はネイティブ開発が好きなので、特にお勧めはありません。(クロスプラットフォーム開発、一見良さそうに見えますが、痒いところに手が届かなかったりして、結局ネイティブ開発の知識が必要になることが多いと思ってるので…。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問