Compose Multiplatform iOS+Android 项目模板教程
1. 项目的目录结构及介绍
compose-multiplatform-ios-android-template/
├── androidApp/
│ ├── build.gradle.kts
│ ├── src/
│ │ └── main/
│ │ ├── AndroidManifest.xml
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── androidapp/
│ │ └── MainActivity.kt
├── iosApp/
│ ├── Configuration/
│ │ └── Config.xcconfig
│ ├── iosApp.xcodeproj/
│ └── src/
│ └── iosApp/
│ └── MainViewController.swift
├── shared/
│ ├── build.gradle.kts
│ ├── src/
│ │ ├── commonMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── shared/
│ │ │ └── App.kt
│ │ ├── androidMain/
│ │ │ └── kotlin/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── shared/
│ │ │ └── AndroidPlatform.kt
│ │ └── iosMain/
│ │ └── kotlin/
│ │ └── com/
│ │ └── example/
│ │ └── shared/
│ │ └── IOSPlatform.kt
├── build.gradle.kts
└── settings.gradle.kts
目录结构介绍
-
androidApp/: 包含Android应用的代码和配置文件。
- build.gradle.kts: Android应用的Gradle构建文件。
- src/main/AndroidManifest.xml: Android应用的清单文件。
- src/main/java/com/example/androidapp/MainActivity.kt: Android应用的主活动文件。
-
iosApp/: 包含iOS应用的代码和配置文件。
- Configuration/Config.xcconfig: iOS应用的配置文件。
- iosApp.xcodeproj/: iOS应用的项目文件。
- src/iosApp/MainViewController.swift: iOS应用的主视图控制器文件。
-
shared/: 包含共享代码和配置文件。
- build.gradle.kts: 共享代码的Gradle构建文件。
- src/commonMain/kotlin/com/example/shared/App.kt: 共享代码的主入口文件。
- src/androidMain/kotlin/com/example/shared/AndroidPlatform.kt: Android平台特定的代码。
- src/iosMain/kotlin/com/example/shared/IOSPlatform.kt: iOS平台特定的代码。
-
build.gradle.kts: 根目录的Gradle构建文件。
-
settings.gradle.kts: 根目录的Gradle设置文件。
2. 项目的启动文件介绍
Android 启动文件
- androidApp/src/main/java/com/example/androidapp/MainActivity.kt:
package com.example.androidapp import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import com.example.shared.App class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { App() } } }
iOS 启动文件
- iosApp/src/iosApp/MainViewController.swift:
import UIKit import shared class MainViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let app = App() app.setContent { // Compose UI code here } } }
共享代码启动文件
- shared/src/commonMain/kotlin/com/example/shared/App.kt:
package com.example.shared import androidx.compose.runtime.Composable import androidx.compose.