添加`.klib`库科特林多平台(Adding a `.klib` library to kotli

2019-10-29 11:52发布

我不知道我怎么会能够导入我cinterop泰德库的科特林多平台构建的构建的gradle。

我已经创建了library.def文件,并填写它,我也产生了library.klib ,并连同它的文件夹。 我只是不知道如何将其导入到gradle这个。

我看了遍布互联网,我发现到江南一个参考,我想知道,如果这件事情我必须使用,或者如果这是正在使用类似“cinterop”什么东西。

我看过了下面的链接,我还没有发现任何远程连接到.klib import我的问题的一部分。

链接#1(kotlinlang.org)

链接#2(github.com)

链接3(plugins.gradle.org)

Answer 1:

在一般情况下,你要使用多平台的插件。 如果你单独建立一个klib,你创造一些额外的步骤(可能)。 在链接#2它说,平台的插件已被弃用。 湖南是本机平台/编译器的名字。 有人支持,去年一个单独的插件,但你绝对不希望被使用。

我刚刚创建了一个例子,但它不是不失,所以这是最好的我有断手:

https://github.com/JetBrains/kotlin-native/blob/3329f74c27b683574ac181bc40e3836ceccce6c1/samples/tensorflow/build.gradle.kts#L12

我工作的一个公司的FireStore库。 本机和互操作的配置生活在多平台配置。

kotlin {

    android {
        publishAllLibraryVariants()
    }
//        iosArm64()
    iosX64("ios"){
        compilations["main"].cinterops {
            firebasecore {
                packageName 'cocoapods.FirebaseCore'
                defFile = file("$projectDir/src/iosMain/c_interop/FirebaseCore.def")
                includeDirs ("$projectDir/../iosApp/Pods/FirebaseCore/Firebase/Core/Public")
                compilerOpts ("-F$projectDir/src/iosMain/c_interop/modules/FirebaseCore-${versions.firebaseCoreIos}")
            }
            firestore {
                packageName 'cocoapods.FirebaseFirestore'
                defFile = file("$projectDir/src/iosMain/c_interop/FirebaseFirestore.def")
                includeDirs ("$projectDir/../iosApp/Pods/FirebaseFirestore/Firestore/Source/Public", "$projectDir/../iosApp/Pods/FirebaseCore/Firebase/Core/Public")
                compilerOpts ("-F$projectDir/src/iosMain/c_interop/modules/FirebaseFirestore-${versions.firebaseFirestoreIos}")
            }
        }
    }
}

cinterops设置在DEF文件,而params。 然后我发布整个事情作为一个多库。 实际的本地神器是klib最终,但是这一切都与gradle产出和依赖性的元数据管理。



文章来源: Adding a `.klib` library to kotlin multiplatform