面试题答案
一键面试创建共享代码模块
- 使用Kotlin Multiplatform Project模板:在IDE(如IntelliJ IDEA或Android Studio)中创建新项目时,选择Kotlin Multiplatform Project模板。这样会自动生成一个基础的项目结构,包含共享代码模块和针对不同平台的特定模块。
- 手动配置Gradle:如果不是基于模板创建,在
settings.gradle.kts
文件中定义共享代码模块,例如:
include("shared")
在共享代码模块的build.gradle.kts
文件中,应用kotlin-multiplatform
插件:
plugins {
kotlin("multiplatform")
}
配置共享代码模块
- 指定目标平台:在共享代码模块的
build.gradle.kts
文件中,配置要支持的目标平台,如:
kotlin {
android()
iosX64()
iosArm64()
iosSimulatorArm64()
sourceSets {
val commonMain by getting
val commonTest by getting {
dependencies {
implementation(kotlin("test"))
}
}
val androidMain by getting
val androidTest by getting
val iosX64Main by getting
val iosArm64Main by getting
val iosSimulatorArm64Main by getting
val iosMain by creating {
dependsOn(commonMain)
iosX64Main.dependsOn(this)
iosArm64Main.dependsOn(this)
iosSimulatorArm64Main.dependsOn(this)
}
val iosTest by creating {
dependsOn(commonTest)
val iosX64Test by getting
val iosArm64Test by getting
val iosSimulatorArm64Test by getting
iosX64Test.dependsOn(this)
iosArm64Test.dependsOn(this)
iosSimulatorArm64Test.dependsOn(this)
}
}
}
- 添加依赖:在
commonMain
、androidMain
、iosMain
等sourceSets
中添加所需的依赖。例如,在commonMain
中添加Ktor库:
kotlin {
sourceSets {
val commonMain by getting {
dependencies {
implementation("io.ktor:ktor-client-core:2.3.3")
}
}
}
}
目录结构组织方式
src
目录:共享代码模块的根目录下有一个src
目录,里面包含不同平台相关的sourceSets
目录。commonMain
:存放通用的共享代码,可被所有目标平台使用。例如,业务逻辑、数据模型等。commonTest
:存放通用的测试代码,用于测试共享代码。androidMain
:存放Android平台特定的代码,如Android特定的UI逻辑、权限处理等。该目录下的代码可以依赖commonMain
的代码。iosMain
:iOS平台通用代码目录,它的子目录iosX64Main
、iosArm64Main
、iosSimulatorArm64Main
分别对应不同的iOS架构。iosMain
可以依赖commonMain
,其他iOS架构特定目录依赖iosMain
。androidTest
:Android平台特定的测试代码。iosTest
:iOS平台通用的测试代码,其子目录对应不同架构的测试代码。