【发布时间】:2021-09-11 16:46:27
【问题描述】:
我正在尝试将 Snowplow 集成到 Kotlin 多平台项目中。
Android 运行良好:
val androidMain by getting {
dependencies {
api("com.snowplowanalytics:snowplow-android-tracker:1.7.1")
}
}
但是集成 iOS Cocoapod 会带来一些麻烦。我添加了 cocoapod 插件:
plugins {
kotlin("multiplatform") version "1.4.32"
}
还有 Snowlow 吊舱:
kotlin {
iosX64()
iosArm64()
cocoapods {
pod("SnowplowTracker") {
version = "~> 2.1.1"
}
}
}
Gradle 同步导致以下错误:
Exception in thread "main" java.lang.Error: /var/folders/gv/rc4dmzjs3wj9kt4kr00nwhdw0000gn/T/2185483547857483783.m:1:9: fatal error: module 'SnowplowTracker' not found
at org.jetbrains.kotlin.native.interop.indexer.UtilsKt.ensureNoCompileErrors(Utils.kt:152)
at org.jetbrains.kotlin.native.interop.indexer.ModuleSupportKt.getModulesASTFiles(ModuleSupport.kt:68)
at org.jetbrains.kotlin.native.interop.indexer.ModuleSupportKt.getModulesInfo(ModuleSupport.kt:14)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.buildNativeLibrary(main.kt:506)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.processCLib(main.kt:264)
at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.interop(main.kt:74)
at org.jetbrains.kotlin.cli.utilities.InteropCompilerKt.invokeInterop(InteropCompiler.kt:45)
at org.jetbrains.kotlin.cli.utilities.MainKt.mainImpl(main.kt:19)
at org.jetbrains.kotlin.cli.utilities.MainKt.main(main.kt:41)
Execution failed for task ':cinteropSnowplowTrackerIosArm64'.
> Process 'command '/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
作为 Android 开发人员,我对 pod 及其错误的了解基本上为零。我感谢任何有关解决方案的提示,因为 Google 到目前为止没有提供帮助。
【问题讨论】:
-
我个人不使用 cocoapods 插件添加依赖项,因为它还不够稳定(巨大的编译时间增量)。但是 jetbrains 在 youtrack.jetbrains.com 上帮助快速解决此类 cocoapods 问题,通常是因为非标准 cocoapods 配置(在框架方面)。在那里创建一个问题。
-
那怎么添加依赖呢?
-
我在 kotlin 部分创建接口,在 swift 中实现这些接口的成员——在那里我可以使用依赖项,并将这些类的对象传递给共享模块。 Ofc 它的代码要多得多,但构建时间对我来说成本更高
标签: ios kotlin cocoapods kotlin-multiplatform snowplow