Xcode 在导入由 gradle 插件生成的 cocoapods 时显示 swift 编译器错误

Xcode shows swift compiler errors when importing cocoapods generated by gradle plugin

我正在尝试在我的 iOS 项目中使用我使用 cocoapods gradle 插件创建的 cocoapods 的共享代码。 Podspec 的创建没有问题。 我的分享 build.gradle:

plugins {
id("org.jetbrains.kotlin.multiplatform")
id("com.android.library")
id ("org.jetbrains.kotlin.native.cocoapods")

}

android {
  compileSdkVersion 29
  buildToolsVersion '30.0.0'

defaultConfig {
    minSdkVersion 19
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    consumerProguardFiles 'consumer-rules.pro'
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}
}

version = "1.0"

kotlin {
ios()
android()

cocoapods {
    // Configure fields required by CocoaPods.
    summary = "Some description for a Kotlin/Native module"
    homepage = "Link to a Kotlin/Native module homepage"

    // The name of the produced framework can be changed.
    // The name of the Gradle project is used here by default.
    frameworkName = "toshlShared"
}

sourceSets {
commonMain.dependencies {
    api 'org.jetbrains.kotlin:kotlin-stdlib-common'
}

androidMain.dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
}

iosMain.dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version"
}
}

}

当我 运行 pod 安装时一切看起来都不错,但是当我 运行 ios 应用程序时我看到这个错误:

编辑:用我的单个 .kt 文件添加了我的项目文件夹结构(可以从 android 代码访问)

据我了解,这里的问题是项目结构导致的。在 Gradle 脚本中,声明了三个目标:一个 Android 一个,以及提供另外两个的 iosX64+iosArm64 快捷方式(参见详细信息 here)。对于此布局,每个 iOS 目标 (iosX64Main, iosX64Test, iosArm64Main, iosArm64Test) 和

将有两个编译

a compilation per Android build variant, for Android targets;

根据 documentation
在这种特殊情况下,只有源文件 SharedUtils.kt 位于 Android main 编译的源集。这意味着它不会进入任何 iOS 编译。
要共享此源文件,应将其重新定位到公共代码。 Kotlin Multiplatform 中公共代码有两个默认源集:commonMaincommonTest。因此,源代码应放在 src/<sourceSetName>/kotlin 目录下(本例为 commonMain)。