如何将kotlin本机代码编译到iOS框架中?

时间:2018-01-07 04:26:58

标签: kotlin shared-libraries cross-platform kotlin-native

来自Kotlin Native 0.5,我们可以将kotlin代码编译成framework,以便集成到现有的iOS项目中。

我只是想知道该怎么做?

我想要什么

  1. 使用命令行构建
  2. kotlin native repo构建,以便我能够了解最新更新。
  3. 不使用Gradle,因此我不需要进行gradle项目设置。
  4. 我知道calculator文件夹中有一个samples示例,它会在Compile Kotlin framework项目中添加一个名为Xcode的额外步骤,以实现魔力。但我不知道如何分开这一步。

    我尝试使用这样的命令行:../../dist/bin/kotlinc ./src/main/kotlin/org/konan/arithmeticparser/Parser.kt -produce framework -o asd.framework

    但结果与gradle build one相比有不同的结构。

    这里有什么帮助吗?感谢

2 个答案:

答案 0 :(得分:1)

您可以按照本教程here进行操作。尽管它使用gradle,但它基本上包括一个脚本,该脚本会自动为ios重建kotlin框架。我不确定这不是您所需要的,但是您可以按照相同的原则编写Shell脚本。

task lipo(type: Exec, dependsOn: 'build') {
def frameworks = files(
        "$buildDir/konan/bin/iphone/${frameworkName}.framework/$frameworkName",
        "$buildDir/konan/bin/iphone_sim/${frameworkName}.framework/$frameworkName"
)
def output = file("$buildDir/konan/bin/iphone_universal/${frameworkName}.framework/$frameworkName")
inputs.files frameworks
outputs.file output
executable = 'lipo'
args = frameworks.files
args += ['-create', '-output', output]
}
task copyFramework(type: Copy, dependsOn: lipo) {
    from("$buildDir/konan/bin/iphone") {
        include '*/Headers/*'
        include '*/Modules/*'
        include '*/Info.plist'
}
from "$buildDir/konan/bin/iphone_universal"
into "${rootProject.rootDir}/ios"
}

答案 1 :(得分:0)