gpt4 book ai didi

gradle - 将 `.klib` 库添加到 kotlin 多平台

转载 作者:行者123 更新时间:2023-12-02 12:52:46 26 4
gpt4 key购买 nike

我想知道如何将我的 cinterop-ted 库导入到 kotlin 多平台构建的 gradle 构建中。

我已经创建了 library.def 文件并填充了它,我还生成了 library.klib 和它附带的文件夹。我只是不明白如何将它导入 gradle。

我浏览了整个互联网,找到了对 Konan 的引用,我想知道这是我必须使用的东西,还是用于类似于“cinterop”的东西。

我查看了以下链接,但没有发现任何远程连接到我问题的 .klib import 部分的内容。

Link #1 (kotlinlang.org)

Link #2 (github.com)

Link #3 (plugins.gradle.org)

最佳答案

通常,您会希望使用多平台插件。如果您单独构建一个 klib,您将创建一些额外的步骤(可能)。在链接 #2 中,它表示平台插件已弃用。 Konan 是 native 平台/编译器的名称。去年有一个单独的插件,但您绝对不想使用它。

我刚刚创建了一个示例,但它还没有公开,所以这是我手头最好的一个:

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

我正在开发 Firestore 库。 native 和互操作配置存在于多平台配置中。

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 文件和参数的位置。然后我将整个东西发布为一个多平台库。实际的原生工件最终是一个 klib,但它全部由 gradle 和依赖元数据管理。

关于gradle - 将 `.klib` 库添加到 kotlin 多平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com