Модуль TrustWalletCore/WalletCore в Kotlin Multiplatform — почти без классов
В нашем проекте Kotlin Mobile Multiplatform для iOS и Android мы пытаемся получить доступ к Cocopod TrustWalletCore из Kotlin.
// build.gradle.kts (:shared)
cocoapods {
version = "1.0"
podfile = project.file("../iosApp/Podfile")
pod("WalletCore")
}
И подфайл
target 'iosApp' do
pod 'TrustWalletCore'
end
Это успешно позволяетimport cocoapods.WalletCore.*
в shared/iosMain - без вышеперечисленногоcocoapods {...}
импорт недоступен.
Однако из этого пакета доступен только класс Crypto (и CryptoMeta, который не слишком отличается).
Судя по всему, он генерируется из Pod/библиотеки с помощью commonizer в 0_WalletCore.knm (около 15expect
функций в сумме - пара здесь для иллюстрации):
@kotlin.commonizer.ObjCCallable public open external expect fun base58Encode(data: platform.Foundation.NSData): kotlin.String { /* compiled code */ }
@kotlin.commonizer.ObjCCallable public open external expect fun generateMnemonicFromSeed(seed: platform.Foundation.NSData): kotlin.String { /* compiled code */ }
Он имеет функции, связанные с мнемоникой, а такжеsignHash/verifySignature
но не более того.
Я надеялся увидеть доступные для импорта в Котлин классы вродеHDWallet
,EthereumSigningInput
и т. д. Я могу использовать эти библиотечные классы в Swift черезpod TrustWalletCore
в Xcode (import WalletCore
).
ПОЧЕМУ я не могу получить аналогичный/полный набор классов черезnative.cocoapods
плагин?
1 ответ
Попробуйте объявить зависимость с помощьюmoduleName
параметр:
kotlin {
cocoapods {
...
pod(name = "TrustWalletCore", version = "3.1.0", moduleName = "WalletCore")
}
}