【发布时间】:2021-03-10 09:13:17
【问题描述】:
我正在为 Android 和 iOS 构建一个多平台库。我的 gradle 文件如下所示:
plugins {
id 'org.jetbrains.kotlin.multiplatform' version '1.4.0'
}
repositories {
mavenCentral()
}
group 'com.example'
version '0.0.1'
apply plugin: 'maven-publish'
kotlin {
jvm()
// This is for iPhone simulator
// Switch here to iosArm64 (or iosArm32) to build library for iPhone device
ios {
binaries {
framework()
}
}
sourceSets {
commonMain {
dependencies {
implementation kotlin('stdlib-common')
implementation("com.ionspin.kotlin:bignum:0.2.2")
}
}
commonTest {
dependencies {
implementation kotlin('test-common')
implementation kotlin('test-annotations-common')
}
}
jvmMain {
dependencies {
implementation("com.ionspin.kotlin:bignum:0.2.2")
}
}
jvmTest {
dependencies {
implementation kotlin('test')
implementation kotlin('test-junit')
}
}
iosMain {
}
iosTest {
}
}
}
configurations {
compileClasspath
}
我正在使用第三方库,我是这样使用它的:
fun test(value: String): Int {
return BigDecimal.parseString(value).toBigInteger().intValue()
}
问题是当我构建 .jar 时没有包含 bignum 库,当我在 Android 项目中使用该库时,我得到一个异常 ClassNotFoundException: 找不到类“com.ionspin.kotlin.bignum.十进制.BigDecimal"。
有没有办法在 Android 的 .jar 和 iOS 的 .framework 中包含第三方库?
【问题讨论】:
-
你能把你的gradle文件分享一个github.com,那我可以帮你,最好的官方例子在这里github.com/Kotlin/kmm-sample,文档在这里kotlinlang.org/docs/mobile/samples.html,你需要使用child毕业模块
-
问题是 Android 和 iOS 项目非常大,我不想将它们作为子 gradle 模块包含在新项目中。
-
会不会是图书馆的出版方式?您是否也尝试向图书馆作者询问?我已经尝试过使用其他 3rd 方库,但问题确实没有发生。 This reference 也可以提供帮助。
-
我实际上正在使用这个库github.com/korlibs/krypto 问题中的一个只是举例。 Krypto lib 也有同样的问题。
标签: android ios gradle kotlin-native