3.3 KiB
3.3 KiB
Quartz Gradle Dependency Setup
Current version
com.vitorpamplona.quartz:quartz:1.10.0
Check latest: https://central.sonatype.com/artifact/com.vitorpamplona.quartz/quartz
KMP Project Setup
gradle/libs.versions.toml
[versions]
quartz = "1.10.0"
[libraries]
quartz = { module = "com.vitorpamplona.quartz:quartz", version.ref = "quartz" }
build.gradle.kts (library/app module)
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidKotlinMultiplatformLibrary) // or androidLibrary/androidApplication
}
kotlin {
jvm()
androidLibrary {
namespace = "com.example.myapp"
compileSdk = 35
minSdk = 21
}
// optional: iOS targets
sourceSets {
commonMain.dependencies {
implementation(libs.quartz)
}
// No platform-specific deps needed — Quartz provides them transitively
}
}
Android-only Project
// build.gradle.kts (app module)
dependencies {
implementation("com.vitorpamplona.quartz:quartz:1.10.0")
}
JVM (Desktop) standalone
// build.gradle.kts
plugins {
kotlin("jvm")
}
dependencies {
implementation("com.vitorpamplona.quartz:quartz:1.10.0")
// JNA needed for libsodium (NIP-44) on JVM
implementation("net.java.dev.jna:jna:5.18.1")
}
Transitive Dependencies (what you get automatically)
All platforms (commonMain)
org.jetbrains.kotlin:kotlin-stdliborg.jetbrains.kotlinx:kotlinx-coroutines-coreorg.jetbrains.kotlinx:kotlinx-collections-immutableorg.jetbrains.kotlinx:kotlinx-serialization-jsonandroidx.collection:collection(LruCache)androidx.compose.runtime:runtime-annotation(@Immutable/@Stable)fr.acinq.secp256k1:secp256k1-kmp(Schnorr crypto — common)
JVM + Android (jvmAndroid)
com.github.anthonynsimon:rfc3986-normalizer(URL normalization)com.fasterxml.jackson.module:jackson-module-kotlin(JSON)com.squareup.okhttp3:okhttp(WebSocket)ru.gildor.coroutines:kotlin-coroutines-okhttpnl.bommber:kchesslib(NIP-64 chess, version pinned to 1.0.0)
JVM only
fr.acinq.secp256k1:secp256k1-kmp-jni-jvmcom.goterl:lazysodium-java(NIP-44 encryption)net.java.dev.jna:jna
Android only
fr.acinq.secp256k1:secp256k1-kmp-jni-androidcom.goterl:lazysodium-androidnet.java.dev.jna:jna(aar)androidx.core:core-ktx
Packaging / ProGuard
Quartz ships consumer ProGuard rules automatically (publish = true in the library).
You don't need to add manual keep rules for Quartz classes in your app.
For Android release builds, these classes are preserved:
- All
com.vitorpamplona.quartz.**event and model classes - Jackson serialization annotations
Common Build Errors
Duplicate class kotlin.collections.jdk8
Add to gradle.properties:
android.useFullClasspathForDexingTransform=true
Could not find lazysodium-java on JVM
Ensure JNA is on the classpath:
implementation("net.java.dev.jna:jna:5.18.1")
iOS: Framework not found quartz-kmpKit
Build the XCFramework first:
./gradlew :quartz:assembleQuartz-kmpKitReleaseXCFramework
Then drag quartz/build/XCFrameworks/release/quartz-kmpKit.xcframework into Xcode.