多平台中的 MLKit 和 Cocoapods - 接口不兼容

问题描述 投票:0回答:1

使用 MLKit 的 Kotlin 多平台项目中的图像类型不匹配

我正在使用 Kotlin 2 和 Xcode 15.4 开发一个 Kotlin 多平台项目,集成 MLKit 进行条形码扫描。我在尝试使用

resultsInImage
MLKBarcodeScanner
函数时遇到类型不匹配错误。

我有一个实现

cocoapods.MLKitVision.MLKCompatibleImageProtocol
的图像,但
resultsInImage
功能需要
objcnames.protocols.MLKCompatibleImageProtocol

我尝试过同时使用

GMLImage
MLKVisionImage
,但都不起作用。编译器给我这个错误:

Argument type mismatch: actual type is 'cocoapods.MLKitVision.MLKVisionImage', but 'objcnames.protocols.MLKCompatibleImageProtocol' was expected.

但是,

MLKVisionImage
确实实现了
cocoapods.MLKitVision.MLKCompatibleImageProtocol

这是我的设置:

  1. build.gradle.kts
    中,我使用以下方法导入了库:

    pod("MLKitVision")
    pod("MLKitBarcodeScanning")
    

    (官方推荐的

    pod("GoogleMLKit/BarcodeScanning")
    没用)

  2. 我在 iosMain 文件中的导入:

    import cocoapods.MLKitBarcodeScanning.MLKBarcodeScanner
    import cocoapods.MLKitVision.MLKVisionImage
    
  3. 有问题的代码:

    val barCodeResults = barcodeScanner.resultsInImage(MLKVisionImage(didOutputSampleBuffer))
    

    Android Studio 显示:“类型不匹配。必需:MLKCompatibleImageProtocol 找到:MLKVisionImage”

我尝试将

MLKVisionImage
转换为
MLKCompatibleImageProtocol
包的
objcnames.protocols
,但这也不起作用。

有趣的是,当我在同一项目中的 Swift 文件中尝试相同的操作时,它工作正常,表明包安装是正确的。

为什么这在 Kotlin iosMain 部分不起作用?为什么接口会出现在objcnames.protocols包中?

任何见解或解决方案将不胜感激!

kotlin kotlin-multiplatform google-mlkit
1个回答
0
投票

我重建了项目并使用了演员表

作为 objcnames.protocols.MLKCompatibleImageProtocol

并且成功了:)

MLKVisionImage 和 GMLImage 仍然应该产生一致的实例,但它们没有。

© www.soinside.com 2019 - 2024. All rights reserved.