我开始开发kotlin多平台,并开发了一个简单的lib进行测试。我可以为Android导出.jar
文件,但不能为iOS导出.framework
文件。
我查看了其他项目,但没有找到问题。
我的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'
}
}
答案 0 :(得分:0)
您是否添加了构建实际框架的任务?如果没有,请尝试在您的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项目以使用该框架。有关更多详细信息,请阅读Setting up Framework Dependency in Xcode。
答案 1 :(得分:0)
“导出框架”是什么意思?您要从另一个Gradle项目,XCode还是其他方式使用它?
P.S。很抱歉要求您回答:声誉不足,无法发表评论。因此,我认为在GitHub上讨论您遇到的问题会更方便。