0

我开始开发 kotlin 多平台,并开发了一个简单的库进行测试。我可以.jar为 android 导出文件,但我不能.framework为 iOS 导出文件。我查看了其他项目,但没有找到我的问题。

Gradle的 lib 脚本是:

apply plugin: 'kotlin-multiplatform'

kotlin {
targets {
    final def iOSTarget = 
    System.getenv('SDK_NAME')?.startsWith("iphoneos") \
                          ? presets.iosArm64 : presets.iosX64

    fromPreset(iOSTarget, 'iOS') {
        compilations.main.outputKinds('FRAMEWORK')
    }

    fromPreset(presets.jvm, 'android')
}

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

    android.dependencies {
        api 'org.jetbrains.kotlin:kotlin-stdlib'
    }
}
4

2 回答 2

1

您是否添加了构建实际框架的任务?如果没有,请尝试在文件末尾添加此代码build.gradle

task packForXCode(type: Sync) {
    final File frameworkDir = new File(buildDir, "xcode-frameworks")
    final String mode = project.findProperty("XCODE_CONFIGURATION")?.toUpperCase() ?: 'DEBUG'

    inputs.property "mode", mode
    dependsOn kotlin.targets.iOS.compilations.main.linkTaskName("FRAMEWORK", mode)

    from { kotlin.targets.iOS.compilations.main.getBinary("FRAMEWORK", mode).parentFile }
    into frameworkDir

    doLast {
        new File(frameworkDir, 'gradlew').with {
            text = "#!/bin/bash\nexport 'JAVA_HOME=${System.getProperty("java.home")}'\ncd '${rootProject.rootDir}'\n./gradlew \$@\n"
            setExecutable(true)
        }
    }
}

tasks.build.dependsOn packForXCode

iOS 框架将在build/xcode-frameworks您的库目录中可用。

您还必须配置您的 Xcode 项目以使用该框架。有关更多详细信息,您可以阅读在 Xcode 中设置框架依赖项

于 2019-01-02T12:11:05.060 回答
0

“导出框架”是什么意思?您打算从另一个 Gradle 项目、XCode 或其他项目中使用它吗?

PS很抱歉在回答中提问:只是没有足够的声誉来发表评论。所以我认为在GitHub 上讨论你的问题会更方便。

于 2019-01-03T05:49:58.757 回答