Невозможно добавить Google NearbyMessages Cocoapod в проект Kotlin / Native

Интересно, может ли кто-нибудь помочь мне добавить cocoapod в собственный модуль kotlin, пока мне не повезло! Библиотека - это Google NearbyMessages API. https://developers.google.com/nearby/messages/ios/get-started

Пока у меня есть:

  1. Клонировал KMM с помощью примера приложения cocoapods. https://github.com/Kotlin/kotlin-with-cocoapods-sample. (измените номера версий плагина kotlin на 1.4.21, поскольку снимки, указанные в образце, похоже, больше не доступны)
  2. Синхронизируйте Gradle и соберите проект. Все получается.
  3. Добавьте модуль NearbyMessages в build.gradle.kts прямо над строкой AFNetworking ... pod("NearbyMessages")
  4. Теперь, когда я выполняю синхронизацию gradle, я получаю следующую ошибку.
> Task :kotlin-library:cinteropNearbyMessagesIosArm64 FAILED
Exception in thread "main" java.lang.Error: /var/folders/t7/gwvnk41x66g5kmr7s7y8thdw0000gn/T/6648793494349780018.m:1:9: fatal error: module 'NearbyMessages' 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)
Execution failed for task ':kotlin-library:cinteropNearbyMessagesIosArm64'.
> Process 'command '/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java'' finished with non-zero exit value 1

Я смог установить cocoapod, используя podfile и pod install. Без участия КММ. Кроме того, я пробовал всевозможные случайные вещи, но это шаги, которые, похоже, должны сработать.

Вот файл podspec для NearbyMessages: https://github.com/CocoaPods/Specs/blob/master/Specs/f/b/9/NearbyMessages/1.1.1/NearbyMessages.podspec.json


person tom-pratt    schedule 31.12.2020    source источник
comment
Кажется, что-то подобное youtrack.jetbrains.com/issue/KT-43512. Вы можете сообщить о проблеме здесь, чтобы получить помощь от JB.   -  person shadowsheep    schedule 07.01.2021
comment
У вас есть ответ здесь: youtrack.jetbrains.com/issue/KT-44155   -  person shadowsheep    schedule 08.02.2021


Ответы (1)


Ребята из JB ответили вам здесь.

Я сообщаю ответ здесь для лучшей индексации:

Привет, Том Пратт, спасибо за отчет! Насколько я понимаю, проблема вызвана тем, что модуль NearbyMessages состоит из статической библиотеки Objective-C, а не из фреймворка. У него нет module.modulemap, поэтому cinterop не может его правильно интерпретировать. Изменение содержимого build/cocoapods/defs/NearbyMessages.def на вариант заголовков вместо модуля позволило мне выполнить cinterop вручную, но я не уверен, что это можно сделать в рамках интеграции с Cocoapods.

В качестве обходного пути они предлагают:

Кроме того, чтобы сделать это ручное обходное решение более удобным, вы можете попробовать настроить задачу Gradle, генерирующую этот .def файл. Просто добавь

tasks.named<DefFileTask>("generateDefNearbyMessages").configure {
    doLast {
        outputFile.writeText("""
            language = Objective-C
            headers = GNSMessages.h
        """)
    }
}
person shadowsheep    schedule 08.02.2021