簡體   English   中英

在 Kotlin 多平台中添加 CocoaPods 依賴項時出錯

[英]Error adding CocoaPods dependency in Kotlin Multiplatform

我正在嘗試使用 Couchbase Lite 設置 KMM 模塊作為 Android 和 iOS 的平台依賴項。 我遇到了錯誤,使其與 iOS 的 CocoaPods 一起使用:

Exception in thread "main" java.lang.Error: /var/folders/pv/3_5xn0dd0v5bf6sxbfcsq_wr0000gn/T/7009311365357251921.m:1:22: error: expected ';' after module name
    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:507)
    at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.processCLib(main.kt:265)
    at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.interop(main.kt:73)
    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)

生成的7009311365357251921.m文件之后不在該路徑中,這使得調試變得困難。

build.gradle.kts:

plugins {
    kotlin("multiplatform") version "1.4.21"
    kotlin("native.cocoapods") version "1.4.21"
    id("com.android.library")
}
...
kotlin {
    android()
    ios()
    cocoapods {
        summary = "TBD"
        homepage = "TBD"
        ios.deploymentTarget = "9.0"
        pod("CouchbaseLite-Enterprise") {
            version = "~> 2.8.1"
        }
    }
    ...
}
...

如果我使用非企業版本,我會收到不同的錯誤。 相同的 build.gradle.kts 除了pod("CouchbaseLite") 我得到錯誤:

Exception in thread "main" java.lang.IllegalArgumentException: 'CBLQueryMeta' is going to be declared twice
    at org.jetbrains.kotlin.native.interop.gen.KotlinFile.<init>(KotlinCodeModel.kt:257)
    at org.jetbrains.kotlin.native.interop.gen.StubIrBridgeBuilder$kotlinFile$1.<init>(StubIrBridgeBuilder.kt:44)
    at org.jetbrains.kotlin.native.interop.gen.StubIrBridgeBuilder.<init>(StubIrBridgeBuilder.kt:46)
    at org.jetbrains.kotlin.native.interop.gen.StubIrDriver.run(StubIrDriver.kt:122)
    at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.processCLib(main.kt:315)
    at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.interop(main.kt:73)
    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)

這兩個 pod 規范在 Xcode 項目中編譯沒有問題。 但是 Kotlin native 似乎遇到了問題。

更新:

pod("CouchbaseLite")錯誤似乎是由同時定義了CBLQueryMetaCBLQuery接口引起的。 有一個YouTrack 問題 如果可以解決原始錯誤,則此錯誤可能仍然是CouchbaseLite-Enterprise的問題。

更新 2:

如果我刪除{ version = "~> 2.8.1" }或將其放入 function 直接調用pod("CouchbaseLite-Enterprise", "~> 2.8.1")我得到一個不同的錯誤:

Exception in thread "main" java.lang.Error: /var/folders/pv/3_5xn0dd0v5bf6sxbfcsq_wr0000gn/T/6649487835163649080.m:1:9: fatal error: module 'CouchbaseLite_Enterprise' 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:507)
    at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.processCLib(main.kt:265)
    at org.jetbrains.kotlin.native.interop.gen.jvm.MainKt.interop(main.kt:73)
    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)

更新 3:

我為此提交了一個YouTrack 問題 似乎這可能與 CocoaPod 庫名稱中的破折號有關。 一個已關閉的問題通過更改模塊名稱以替換破折號來解決此問題 - 使用下划線 _,但修復似乎不起作用。

根據您使用的工具鏈版本,似乎您使用錯誤的語法來指定版本。 嘗試pod("CouchbaseLite-Enterprise", "~> 2.8.1")代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM