我想知道如何将我的 cinterop-ted 库导入到 kotlin 多平台构建的 gradle 构建中。
我已经创建了 library.def
文件并填充了它,我还生成了 library.klib
和它附带的文件夹。
我只是不明白如何将它导入 gradle。
我浏览了整个互联网,找到了对 Konan 的引用,我想知道这是我必须使用的东西,还是用于类似于“cinterop”的东西。
我查看了以下链接,但没有发现任何远程连接到我问题的 .klib import
部分的内容。
最佳答案
通常,您会希望使用多平台插件。如果您单独构建一个 klib,您将创建一些额外的步骤(可能)。在链接 #2 中,它表示平台插件已弃用。 Konan 是 native 平台/编译器的名称。去年有一个单独的插件,但您绝对不想使用它。
我刚刚创建了一个示例,但它还没有公开,所以这是我手头最好的一个:
我正在开发 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/