mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-05 19:28:25 +00:00
v1.15.0 was tagged but never shipped. Its `Create Release Assets` run failed in
`deploy-android` at the first packaging task:
Execution failed for task ':amethyst:buildFdroidReleasePreBundle'
> Entry name contains invalid characters:
root/META-INF/zoomable-root:zoomable.kotlin_module
so no AAB, no APK, and none of the 47 assets were produced.
A `.kotlin_module` is named after the Gradle project path that produced it,
colons included. 14 of the 98 modules merged into the app carry one: zoomable,
Negentropy, vico, the seven coil3 artifacts, and four of ours -- Amethyst:quartz,
Amethyst:commons, Amethyst:quic and Amethyst:nestsClient -- so renaming our own
would not have been enough.
Bisected against the two toolchain bumps this cycle, since both landed after the
last good release: AGP 9.3.1 -> 9.4.0 and Kotlin 2.4.10 -> 2.4.20. With Kotlin
held at 2.4.20 and AGP reverted, both flavours' bundle tasks pass, so Kotlin is
not the trigger. The R8 output jar carries the identical 14 colon entries under
BOTH AGP versions -- 9.4.0 added the rejection rather than the names, in
JarFlinger.addJar, reached from PerModuleBundleTask.addHybridFolder.
`packaging.resources.excludes` was tried first and cannot work, at either
`META-INF/*.kotlin_module` or `**/*.kotlin_module`: with minification on, R8
emits the java resources itself and addHybridFolder hands JarFlinger its own
predicate, so those filters are never consulted. Confirmed by deleting the R8
output and re-running rather than reading a stale intermediate --
mergeJavaResource's jar holds zero kotlin_modules while R8's holds all 98.
So the entries are stripped from R8's jar in the moment before the bundle task
opens it, and the jar is put back exactly as R8 left it afterwards. Two details
carry their weight:
- the strip is doFirst on the CONSUMER rather than doLast on R8, so a
build-cache hit on R8 cannot skip it;
- the restore is what keeps R8 up to date. Without it Gradle sees a modified
output and re-runs R8 on every build -- measured here at ~2 min for an
otherwise no-op build. With it, a second run reports
minifyFdroidReleaseWithR8 UP-TO-DATE and finishes in 1s.
Pinning back to 9.3.1 was the alternative and is one line away; the catalog
comment records that, and says to drop the workaround when AGP fixes it.
Verified from a cleaned R8 output on both flavours:
buildFdroidReleasePreBundle and buildPlayReleasePreBundle both BUILD SUCCESSFUL,
each reporting "Stripped 14 colon-named entries from base.jar".
appCode 458 -> 459. RELEASE_NOTES_ID deliberately stays on the v1.15.0 note:
RELEASE_OPS has it repointed on x.y.0 only, and 1.15.1 ships that release's
contents.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VgVDQQXAg4cmzsWHoJj61k
276 lines
20 KiB
TOML
276 lines
20 KiB
TOML
[versions]
|
|
# Amethyst app version — single source of truth consumed by both Android (amethyst/)
|
|
# and Desktop (desktopApp/). `appCode` is the Android versionCode: a monotonic
|
|
# integer that must increment on every release, even when `app` is unchanged.
|
|
app = "1.15.1"
|
|
appCode = "459"
|
|
accompanistAdaptive = "0.37.3"
|
|
# Pinned: 0.3.0 turns CacheMap.entries/keys/values into DeprecationLevel.ERROR (and
|
|
# throws UnsupportedOperationException at runtime), which breaks quartz's appleMain
|
|
# LargeCache/ConcurrentHashCache — they read those views directly and through the
|
|
# stdlib Map operators (filter/map/groupBy/associate/count). Bumping needs a port to
|
|
# the new forEach/forEachKey/forEachValue API, verified on an Apple target.
|
|
cachemapVersion = "0.2.4"
|
|
composeMultiplatform = "1.12.0"
|
|
activityCompose = "1.13.0"
|
|
# 9.4.0's PerModuleBundleTask rejects an AAB entry whose name contains a colon, which every
|
|
# .kotlin_module named after a Gradle project path has. Worked around in amethyst/build.gradle.kts
|
|
# (stripColonNamedEntries) rather than by pinning to 9.3.1; drop that block if AGP fixes it.
|
|
agp = "9.4.0"
|
|
android-compileSdk = "37"
|
|
android-minSdk = "26"
|
|
android-targetSdk = "37"
|
|
androidxJunit = "1.3.0"
|
|
appcompat = "1.8.0"
|
|
audiowaveform = "1.1.2"
|
|
benchmark = "1.5.0"
|
|
uiautomator = "2.4.0"
|
|
biometricKtx = "1.4.0-alpha02"
|
|
coil = "3.6.2"
|
|
composeBom = "2026.09.00"
|
|
composeRuntimeAnnotation = "1.12.1"
|
|
coreKtx = "1.19.0"
|
|
datastore = "1.2.1"
|
|
devWhyolegCryptography = "0.6.0"
|
|
espressoCore = "3.7.0"
|
|
firebaseBom = "34.19.0"
|
|
fragmentKtx = "1.9.0"
|
|
gms = "4.5.0"
|
|
healthConnect = "1.1.0"
|
|
jacksonModuleKotlin = "2.22.2"
|
|
javaKeyring = "1.0.4"
|
|
kmpTorRuntime = "2.6.0"
|
|
kmpTorResource = "409.5.0"
|
|
kodeinEmoji = "2.5.0"
|
|
junit = "4.13.2"
|
|
kchesslib = "1.0.5"
|
|
kotlin = "2.4.20"
|
|
kotlinxCollectionsImmutable = "0.5.2"
|
|
kotlinxCoroutinesCore = "1.11.0"
|
|
kotlinxSerialization = "1.11.0"
|
|
genaiProofreading = "1.0.0-beta1"
|
|
genaiPrompt = "1.0.0-beta4"
|
|
genaiRewriting = "1.0.0-beta1"
|
|
genaiImageDescription = "1.0.0-beta1"
|
|
languageId = "17.0.6"
|
|
lifecycleRuntimeKtx = "2.11.0"
|
|
lightcompressor-enhanced = "2.2.1"
|
|
jlatexmath = "1.5"
|
|
markdown = "4d3b3dd173"
|
|
highlights = "1.1.0"
|
|
# JetBrains material3 must track Compose Multiplatform's foundation: CMP 1.12.0 changed
|
|
# the CustomStyle.applyStyle signature, so the stable 1.9.0 (and the 1.11.0-alpha07 that
|
|
# kodein-emoji pulls in) crash at runtime with AbstractMethodError in OutlinedTextField.
|
|
# 1.12.0-alpha03 is the first release built against foundation 1.12.x. Android keeps taking
|
|
# androidx material3 from composeBom; this ref only drives desktop/iOS.
|
|
material3 = "1.12.0-alpha03"
|
|
media3 = "1.11.1"
|
|
mockk = "1.14.11"
|
|
kotlinx-coroutines-test = "1.11.0"
|
|
negentropyKmp = "v1.2.0"
|
|
navigationCompose = "2.10.1"
|
|
okhttp = "5.5.0"
|
|
osmdroid = "6.1.20"
|
|
runner = "1.7.0"
|
|
secp256k1KmpJniAndroid = "0.24.0"
|
|
schnorr256k1Kmp = "1.0.5"
|
|
securityCryptoKtx = "1.1.0"
|
|
slf4j = "2.0.19"
|
|
sonarqubeGradlePlugin = "7.5.0.8588"
|
|
spotless = "8.10.2"
|
|
streamWebrtcAndroid = "1.3.10"
|
|
translate = "17.0.3"
|
|
jetbrainsCompose = "1.12.0"
|
|
unifiedpush = "3.0.10"
|
|
playServicesCast = "22.3.1"
|
|
vico-charts-compose = "3.3.1"
|
|
zelory = "3.0.1"
|
|
zoomable = "2.13.0"
|
|
composemediaplayer = "0.11.4"
|
|
jcodec = "0.2.5"
|
|
commonsImaging = "1.0.0-alpha6"
|
|
thumbnailator = "0.4.21"
|
|
zxing = "3.5.4"
|
|
zxingAndroidEmbedded = "4.3.0"
|
|
webkit = "1.17.0"
|
|
# Cross-process UI embedding (SurfaceControlViewHost wrapper) for the in-app browser surface. Apache-2.0.
|
|
privacysandboxUi = "1.0.0-alpha17"
|
|
windowCoreAndroid = "1.5.1"
|
|
workRuntime = "2.11.2"
|
|
androidxCamera = "1.6.2"
|
|
androidxCollection = "1.6.0"
|
|
androidxProfileinstaller = "1.4.1"
|
|
androidxExifinterface = "1.4.2"
|
|
kotlinTest = "2.4.20"
|
|
core = "1.7.0"
|
|
mavenPublish = "0.37.0"
|
|
sqlite = "2.7.1"
|
|
ktor = "3.5.2"
|
|
fourkoma = "1.2.0"
|
|
|
|
# Phase 2 (Gemini App Functions) — both still pre-stable as of May 2026.
|
|
# Scoped to the play flavor only (see amethyst/build.gradle.kts) so the
|
|
# fdroid channel doesn't pull in Google alpha dependencies.
|
|
# Capped by appfunctions-service: `appfunctions` and `appfunctions-compiler`
|
|
# publish alpha10, but -service stopped at alpha09, and all three share this
|
|
# ref. Check every artifact before bumping, not just the main one.
|
|
appfunctions = "1.0.0-alpha09"
|
|
ksp = "2.3.12"
|
|
|
|
[libraries]
|
|
abedElazizShe-video-compressor-fork = { group = "com.github.davotoula", name = "LightCompressor-enhanced", version.ref = "lightcompressor-enhanced" }
|
|
accompanist-adaptive = { group = "com.google.accompanist", name = "accompanist-adaptive", version.ref = "accompanistAdaptive" }
|
|
accompanist-permissions = { group = "com.google.accompanist", name = "accompanist-permissions", version.ref = "accompanistAdaptive" }
|
|
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activityCompose" }
|
|
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
|
|
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
|
|
androidx-appfunctions = { group = "androidx.appfunctions", name = "appfunctions", version.ref = "appfunctions" }
|
|
androidx-appfunctions-service = { group = "androidx.appfunctions", name = "appfunctions-service", version.ref = "appfunctions" }
|
|
androidx-appfunctions-compiler = { group = "androidx.appfunctions", name = "appfunctions-compiler", version.ref = "appfunctions" }
|
|
androidx-benchmark-junit4 = { group = "androidx.benchmark", name = "benchmark-junit4", version.ref = "benchmark" }
|
|
androidx-benchmark-macro-junit4 = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "benchmark" }
|
|
androidx-biometric-ktx = { group = "androidx.biometric", name = "biometric-ktx", version.ref = "biometricKtx" }
|
|
androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "androidxCamera" }
|
|
androidx-camera-core = { module = "androidx.camera:camera-core", version.ref = "androidxCamera" }
|
|
androidx-camera-extensions = { module = "androidx.camera:camera-extensions", version.ref = "androidxCamera" }
|
|
androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "androidxCamera" }
|
|
androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "androidxCamera" }
|
|
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
|
|
androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation" }
|
|
androidx-compose-runtime-annotation = { group = "androidx.compose.runtime", name = "runtime-annotation", version.ref = "composeRuntimeAnnotation" }
|
|
androidx-collection = { group = "androidx.collection", name = "collection", version.ref = "androidxCollection" }
|
|
androidx-exifinterface = { group = "androidx.exifinterface", name = "exifinterface", version.ref = "androidxExifinterface" }
|
|
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
|
|
androidx-profileinstaller = { group = "androidx.profileinstaller", name = "profileinstaller", version.ref = "androidxProfileinstaller" }
|
|
androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastore" }
|
|
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
|
|
androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" }
|
|
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidxJunit" }
|
|
androidx-junit-ktx = { group = "androidx.test.ext", name = "junit-ktx", version.ref = "androidxJunit" }
|
|
androidx-lifecycle-runtime-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleRuntimeKtx" }
|
|
androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
|
|
androidx-material3-windowSize = { group = "androidx.compose.material3", name = "material3-window-size-class" }
|
|
androidx-media3-datasource-okhttp = { group = "androidx.media3", name = "media3-datasource-okhttp", version.ref = "media3" }
|
|
androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" }
|
|
androidx-media3-exoplayer-hls = { group = "androidx.media3", name = "media3-exoplayer-hls", version.ref = "media3" }
|
|
androidx-media3-session = { group = "androidx.media3", name = "media3-session", version.ref = "media3" }
|
|
androidx-media3-ui-compose-material3 = { group = "androidx.media3", name = "media3-ui-compose-material3", version.ref = "media3" }
|
|
androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" }
|
|
androidx-runner = { group = "androidx.test", name = "runner", version.ref = "runner" }
|
|
androidx-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version.ref = "uiautomator" }
|
|
androidx-security-crypto-ktx = { group = "androidx.security", name = "security-crypto-ktx", version.ref = "securityCryptoKtx" }
|
|
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
|
|
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
|
|
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
|
|
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
|
|
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
|
|
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
|
|
audiowaveform = { group = "com.github.lincollincol", name = "compose-audiowaveform", version.ref = "audiowaveform" }
|
|
charlietap-cachemap = { module = "io.github.charlietap:cachemap", version.ref = "cachemapVersion" }
|
|
coil-compose = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coil" }
|
|
coil-gif = { group = "io.coil-kt.coil3", name = "coil-gif", version.ref = "coil" }
|
|
coil-svg = { group = "io.coil-kt.coil3", name = "coil-svg", version.ref = "coil" }
|
|
coil-okhttp = { group = "io.coil-kt.coil3", name = "coil-network-okhttp", version.ref = "coil" }
|
|
coil-video = { group = "io.coil-kt.coil3", name = "coil-video", version.ref = "coil" }
|
|
commons-imaging = { group = "org.apache.commons", name = "commons-imaging", version.ref = "commonsImaging" }
|
|
thumbnailator = { group = "net.coobird", name = "thumbnailator", version.ref = "thumbnailator" }
|
|
slf4j-nop = { module = "org.slf4j:slf4j-nop", version.ref = "slf4j" }
|
|
composemediaplayer = { group = "io.github.kdroidfilter", name = "composemediaplayer", version.ref = "composemediaplayer" }
|
|
jcodec = { group = "org.jcodec", name = "jcodec", version.ref = "jcodec" }
|
|
jcodec-javase = { group = "org.jcodec", name = "jcodec-javase", version.ref = "jcodec" }
|
|
dev-whyoleg-cryptography-provider-apple-optimal = { module = "dev.whyoleg.cryptography:cryptography-provider-optimal", version.ref = "devWhyolegCryptography" }
|
|
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
|
|
firebase-messaging = { group = "com.google.firebase", name = "firebase-messaging" }
|
|
jetbrains-compose-components-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" }
|
|
jetbrains-compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "jetbrainsCompose" }
|
|
jetbrains-compose-ui-test-junit4 = { module = "org.jetbrains.compose.ui:ui-test-junit4", version.ref = "jetbrainsCompose" }
|
|
google-mlkit-genai-proofreading = { group = "com.google.mlkit", name = "genai-proofreading", version.ref = "genaiProofreading" }
|
|
google-mlkit-genai-prompt = { group = "com.google.mlkit", name = "genai-prompt", version.ref = "genaiPrompt" }
|
|
google-mlkit-genai-rewriting = { group = "com.google.mlkit", name = "genai-rewriting", version.ref = "genaiRewriting" }
|
|
google-mlkit-genai-image-description = { group = "com.google.mlkit", name = "genai-image-description", version.ref = "genaiImageDescription" }
|
|
google-mlkit-language-id = { group = "com.google.mlkit", name = "language-id", version.ref = "languageId" }
|
|
google-mlkit-translate = { group = "com.google.mlkit", name = "translate", version.ref = "translate" }
|
|
jackson-module-kotlin = { group = "com.fasterxml.jackson.module", name = "jackson-module-kotlin", version.ref = "jacksonModuleKotlin" }
|
|
java-keyring = { group = "com.github.javakeyring", name = "java-keyring", version.ref = "javaKeyring" }
|
|
kmp-tor-runtime = { group = "io.matthewnelson.kmp-tor", name = "runtime", version.ref = "kmpTorRuntime" }
|
|
kmp-tor-resource-exec-tor = { group = "io.matthewnelson.kmp-tor", name = "resource-exec-tor", version.ref = "kmpTorResource" }
|
|
kodein-emoji-compose-m3 = { group = "org.kodein.emoji", name = "emoji-compose-m3", version.ref = "kodeinEmoji" }
|
|
junit = { group = "junit", name = "junit", version.ref = "junit" }
|
|
kchesslib = { module = "io.github.cvb941:kchesslib", version.ref = "kchesslib" }
|
|
kotlinx-collections-immutable = { group = "org.jetbrains.kotlinx", name = "kotlinx-collections-immutable", version.ref = "kotlinxCollectionsImmutable" }
|
|
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutinesCore" }
|
|
kotlinx-coroutines-swing = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-swing", version.ref = "kotlinxCoroutinesCore" }
|
|
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
|
|
kotlinx-serialization-cbor = { module = "org.jetbrains.kotlinx:kotlinx-serialization-cbor", version.ref = "kotlinxSerialization" }
|
|
jlatexmath-android = { module = "com.github.rikkahub.jlatexmath-android:jlatexmath", version.ref = "jlatexmath" }
|
|
jlatexmath-font-greek = { module = "com.github.rikkahub.jlatexmath-android:jlatexmath-font-greek", version.ref = "jlatexmath" }
|
|
jlatexmath-font-cyrillic = { module = "com.github.rikkahub.jlatexmath-android:jlatexmath-font-cyrillic", version.ref = "jlatexmath" }
|
|
markdown-commonmark = { group = "com.github.vitorpamplona.compose-richtext", name = "richtext-commonmark", version.ref = "markdown" }
|
|
markdown-ui = { group = "com.github.vitorpamplona.compose-richtext", name = "richtext-ui", version.ref = "markdown" }
|
|
markdown-ui-material3 = { group = "com.github.vitorpamplona.compose-richtext", name = "richtext-ui-material3", version.ref = "markdown" }
|
|
highlights = { group = "dev.snipme", name = "highlights", version.ref = "highlights" }
|
|
mockk = { group = "io.mockk", name = "mockk", version.ref = "mockk" }
|
|
mockk-android = { group = "io.mockk", name = "mockk-android", version.ref = "mockk" }
|
|
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinx-coroutines-test"}
|
|
negentropy-kmp = { module = "com.vitorpamplona.negentropy:kmp-negentropy", version.ref = "negentropyKmp" }
|
|
okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" }
|
|
okhttpCoroutines = { group = "com.squareup.okhttp3", name = "okhttp-coroutines", version.ref = "okhttp" }
|
|
osmdroid-android = { group = "org.osmdroid", name = "osmdroid-android", version.ref = "osmdroid" }
|
|
ktor-server-core = { group = "io.ktor", name = "ktor-server-core", version.ref = "ktor" }
|
|
ktor-server-cio = { group = "io.ktor", name = "ktor-server-cio", version.ref = "ktor" }
|
|
ktor-server-websockets = { group = "io.ktor", name = "ktor-server-websockets", version.ref = "ktor" }
|
|
fourkoma = { module = "cc.ekblad:4koma", version.ref = "fourkoma" }
|
|
secp256k1-kmp-common = { group = "fr.acinq.secp256k1", name = "secp256k1-kmp", version.ref = "secp256k1KmpJniAndroid" }
|
|
secp256k1-kmp-jni-android = { group = "fr.acinq.secp256k1", name = "secp256k1-kmp-jni-android", version.ref = "secp256k1KmpJniAndroid" }
|
|
secp256k1-kmp-jni-jvm = { group = "fr.acinq.secp256k1", name = "secp256k1-kmp-jni-jvm", version.ref = "secp256k1KmpJniAndroid" }
|
|
schnorr256k1-kmp = { group = "com.vitorpamplona.schnorr256k1", name = "schnorr256k1-kmp", version.ref = "schnorr256k1Kmp" }
|
|
# Build-time only, gated behind the local.properties sonar opt-in in the root build script (LGPL-3.0).
|
|
sonarqube-gradle-plugin = { group = "org.sonarsource.scanner.gradle", name = "sonarqube-gradle-plugin", version.ref = "sonarqubeGradlePlugin" }
|
|
stream-webrtc-android = { group = "io.getstream", name = "stream-webrtc-android", version.ref = "streamWebrtcAndroid" }
|
|
unifiedpush = { group = "com.github.UnifiedPush", name = "android-connector", version.ref = "unifiedpush" }
|
|
play-services-cast-framework = { group = "com.google.android.gms", name = "play-services-cast-framework", version.ref = "playServicesCast" }
|
|
vico-charts-compose = { group = "com.patrykandpatrick.vico", name = "compose", version.ref = "vico-charts-compose" }
|
|
androidx-webkit = { group = "androidx.webkit", name = "webkit", version.ref = "webkit" }
|
|
androidx-privacysandbox-ui-core = { group = "androidx.privacysandbox.ui", name = "ui-core", version.ref = "privacysandboxUi" }
|
|
androidx-privacysandbox-ui-client = { group = "androidx.privacysandbox.ui", name = "ui-client", version.ref = "privacysandboxUi" }
|
|
androidx-privacysandbox-ui-provider = { group = "androidx.privacysandbox.ui", name = "ui-provider", version.ref = "privacysandboxUi" }
|
|
vico-charts-m3 = { group = "com.patrykandpatrick.vico", name = "compose-m3", version.ref = "vico-charts-compose" }
|
|
zelory-image-compressor = { group = "id.zelory", name = "compressor", version.ref = "zelory" }
|
|
zoomable = { group = "net.engawapg.lib", name = "zoomable", version.ref = "zoomable" }
|
|
zxing = { group = "com.google.zxing", name = "core", version.ref = "zxing" }
|
|
zxing-embedded = { group = "com.journeyapps", name = "zxing-android-embedded", version.ref = "zxingAndroidEmbedded" }
|
|
androidx-window-core-android = { group = "androidx.window", name = "window-core-android", version.ref = "windowCoreAndroid" }
|
|
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
|
|
kotlin-test = { group = "org.jetbrains.kotlin", name = "kotlin-test", version.ref = "kotlinTest" }
|
|
androidx-core = { group = "androidx.test", name = "core", version.ref = "core" }
|
|
androidx-sqlite = { group = "androidx.sqlite", name = "sqlite", version.ref = "sqlite" }
|
|
androidx-sqlite-bundled = { module = "androidx.sqlite:sqlite-bundled", version.ref = "sqlite" }
|
|
androidx-sqlite-bundled-jvm = { module = "androidx.sqlite:sqlite-bundled-jvm", version.ref = "sqlite" }
|
|
androidx-work-runtime-ktx = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "workRuntime" }
|
|
androidx-health-connect-client = { group = "androidx.health.connect", name = "connect-client", version.ref = "healthConnect" }
|
|
|
|
[plugins]
|
|
androidApplication = { id = "com.android.application", version.ref = "agp" }
|
|
androidBenchmark = { id = "androidx.benchmark", version.ref = "benchmark" }
|
|
androidLibrary = { id = "com.android.library", version.ref = "agp" }
|
|
androidTest = { id = "com.android.test", version.ref = "agp" }
|
|
androidxBaselineProfile = { id = "androidx.baselineprofile", version.ref = "benchmark" }
|
|
diffplugSpotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
|
|
googleServices = { id = "com.google.gms.google-services", version.ref = "gms" }
|
|
jetbrainsKotlinJvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
|
|
jetbrainsComposeCompiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
|
|
serialization = { id = 'org.jetbrains.kotlin.plugin.serialization', version.ref = 'kotlin' }
|
|
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
|
|
androidKotlinMultiplatformLibrary = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" }
|
|
vanniktech-mavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "mavenPublish" }
|
|
composeMultiplatform = { id = "org.jetbrains.compose", version.ref = "composeMultiplatform" }
|
|
googleKsp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
|