Android Studio refused to sync the project after the lightning-kmp-app bump in4e939c4: Using multiple versions of the Android Gradle Plugin [9.1.1, 9.4.0] across Gradle builds is not allowed. Affected builds: [:, :lightning-kmp-app:lightning-kmp:bitcoin-kmp:secp256k1-kmp] A composite build has to settle on a single AGP version across every build that applies the plugin. Four builds in this tree do: : 9.1.1 version catalog :lightning-kmp-app 9.1.1 version catalog :secp256k1-frost-kmp 9.1.1 version catalog :lightning-kmp-app:lightning-kmp:bitcoin-kmp:secp256k1-kmp 9.4.0 hardcoded lightning-kmp and bitcoin-kmp apply no android plugin at all, which is why the message names only the two ends of the chain rather than everything between them. secp256k1-kmp pins 9.4.0 twice -- a buildscript classpath entry, and a pluginManagement resolutionStrategy that rewrites every requested com.android plugin to that version -- so it cannot be talked out of it from here. The three catalogs move up to meet it. Pinning it down to 9.1.1 instead would mean editing a build four submodules deep and then committing in bitcoin-kmp and lightning-kmp purely to carry the pointer, for no gain. Moving up is also the direction the chain already set: bbba08b's f22c30a moved every build in it onto Gradle 9.7.1 for the same reason, and4e939c4followed. Submodule commits carried here: lightning-kmp-app bbba08b -> ce1ed01 build: move to AGP 9.4.0, matching the version the submodule chain pins secp256k1-frost-kmp d3b294d -> 80a55b7 build: move to AGP 9.4.0 to match the rest of mantra-kmp's composite Both sit on branches (build/agp-9.4.0 and build/gate-ios-targets-on-macos) rather than their masters, and neither is pushed yet, so a fresh clone cannot resolve these two pointers until they are. 9.4.0 is a minor bump inside the AGP 9.x line, so the DSL is unchanged and every android.* flag in gradle.properties -- newDsl, builtInKotlin, the r8 settings -- keeps its meaning. `:composeApp:compileDebugKotlinAndroid` passes clean. Note that this is only what the IDE needs to sync, not everything worth knowing about the chain. bitcoin-kmp's settings.gradle.kts substitutes secp256k1-kmp, -jni-jvm and the three -jni-jvm-{linux,darwin,mingw} coordinates, but not -jni-android. So the android app still resolves secp256k1-kmp-jni-android from maven central at stock 0.24.0, without the FROST/prefractal native modules the threshold branch exists to provide, and a call into those from android would fail with UnsatisfiedLinkError. Fixing that needs a substitution rule in bitcoin-kmp. Untouched here because it is a runtime concern, not a sync one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
6.7 KiB
6.7 KiB