我在编译 Kotlin MP 项目期间遇到问题。
:androidApp:compileDebugKotlin
Android Studio 无法找到某些导入,即使它们存在,并且我看到一些“未解决的参考”问题。我正在共享项目、应用程序和共享模块的 build.gradle 文件。
该问题并非一直发生。有时会发生。
plugins {
alias(libs.plugins.androidApplication).apply(false)
alias(libs.plugins.androidLibrary).apply(false)
alias(libs.plugins.kotlinAndroid).apply(false)
alias(libs.plugins.kotlinMultiplatform).apply(false)
alias(libs.plugins.kotlinCocoapods).apply(false)
alias(libs.plugins.kotlinPluginSerialization).apply(false)
alias(libs.plugins.sqldelight).apply(false)
id("com.google.gms.google-services") version "4.4.0" apply false
id("com.google.firebase.crashlytics") version "2.9.9" apply false
}
plugins {
alias(libs.plugins.androidApplication)
alias(libs.plugins.kotlinAndroid)
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
alias(libs.plugins.kotlinPluginSerialization)
}
android {
namespace = "..."
compileSdk = libs.versions.targetSdk.get().toInt()
defaultConfig {
applicationId = "..."
minSdk = libs.versions.minSdk.get().toInt()
targetSdk = libs.versions.targetSdk.get().toInt()
versionCode = 12
versionName = "1.0"
signingConfigs {
create("release") {
storeFile = ...
storePassword = "..."
keyAlias = "..."
keyPassword = "..."
}
}
}
buildFeatures {
buildConfig = true
viewBinding = true
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
buildTypes {
getByName("debug") {
applicationIdSuffix = ".debug"
versionNameSuffix = ".debug"
isMinifyEnabled = false
isDebuggable = true
isShrinkResources = false
}
getByName("release") {
isMinifyEnabled = true
isDebuggable = false
isShrinkResources = false
signingConfig = signingConfigs.getByName("release")
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
dependencies {
implementation(projects.shared)
implementation(libs.compose.ui)
implementation(libs.compose.ui.tooling.preview)
implementation(libs.compose.material3)
implementation(libs.androidx.activity.compose)
implementation(libs.kotlinx.serialization.json)
debugImplementation(libs.compose.ui.tooling)
// jetpack nav
implementation(libs.androidx.navigation.fragment.ktx)
implementation(libs.androidx.navigation.ui.ktx)
// firebase
implementation(platform("com.google.firebase:firebase-bom:32.8.0"))
implementation("com.google.firebase:firebase-analytics")
implementation("com.google.firebase:firebase-auth")
implementation("com.google.firebase:firebase-crashlytics")
// google services
implementation(libs.play.services.auth)
implementation(libs.androidx.core.splashscreen)
// material
implementation(libs.material)
implementation(libs.androidx.material.icons.extended)
// koin
implementation(libs.koin.androidx.compose)
implementation(libs.koin.android)
// kotlin tools
implementation(libs.kotlinx.serialization.json)
// coil
implementation(libs.coil.compose)
// constraint
implementation(libs.androidx.constraintlayout.compose)
// google ads
implementation(libs.play.services.ads)
implementation(libs.androidx.ui.viewbinding)
// play review
implementation(libs.google.play.review)
implementation(libs.google.play.review.ktx)
}
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.kotlinCocoapods)
alias(libs.plugins.androidLibrary)
alias(libs.plugins.kotlinPluginSerialization)
alias(libs.plugins.sqldelight)
}
kotlin {
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "17"
}
}
}
// iosX64()
// iosArm64()
iosSimulatorArm64()
cocoapods {
summary = "Some description for the Shared Module"
homepage = "Link to the Shared Module homepage"
version = "1.0"
ios.deploymentTarget = "16.0"
podfile = project.file("../iosApp/Podfile")
framework {
baseName = "shared"
isStatic = true
}
}
sourceSets {
commonMain.dependencies {
implementation(libs.kotlinx.coroutines.core)
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
implementation(libs.koin.core)
api(libs.napier)
implementation(libs.bundles.firebase)
implementation(libs.ktor.client.core)
implementation(libs.ktor.client.logging)
implementation(libs.ktor.client.serialization)
implementation(libs.ktor.client.content.negotiation)
// implementation("org.jetbrains.androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0-alpha01")
}
androidMain.dependencies {
implementation(libs.ktor.client.okhttp)
implementation(libs.sqldelight.android.driver)
implementation("com.google.firebase:firebase-analytics:21.5.1")
api("com.onesignal:OneSignal:[5.0.0, 5.99.99]")
}
iosMain.dependencies {
implementation(libs.ktor.client.darwin)
implementation(libs.sqldelight.native.driver)
}
commonTest.dependencies {
implementation(libs.kotlin.test)
}
}
}
android {
namespace = "com.jobsapps.theoracle"
compileSdk = libs.versions.targetSdk.get().toInt()
defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
}
buildFeatures {
buildConfig = true
}
buildTypes {
debug {
isMinifyEnabled = false
isShrinkResources = false
}
release {
isMinifyEnabled = true
isShrinkResources = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}
sqldelight {
databases {
create("Database") {
packageName.set("...")
}
}
}
到目前为止我尝试过的:
将其添加到您的 settings.gradle 文件中。
dependencyResolutionManagement {
repositoriesMode = RepositoriesMode.PREFER_SETTINGS
}
这会将所有存储库 URL 集中在设置层中,而不是由每个模块独立管理。 这是从 Gradle 7 开始推荐的。