From 8e7e51c03bb56561a6e61ffd73c6a19b7cdf68d9 Mon Sep 17 00:00:00 2001 From: Alex Fishman Date: Fri, 4 Sep 2026 17:44:27 -0700 Subject: [PATCH 1/2] docs(kmp): fix debug-symbols Gradle syntax to match wrapped SDK version MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both the debug-symbols page and the KMP Agent Skill instructed the nested-block NDK syntax (bugsee { ndk { enabled.set(true) } }) and, in the skill file, bugseeGradle = "4+". Per the Gradle plugin's own release notes, that syntax and the 4.x plugin line are new in the 4.x/SDK-7.x generation and explicitly not backward-compatible with SDK 6.x. The KMP SDK's own release notes say it currently wraps native Android SDK 6.0.2, which requires the 3.x plugin and the boolean form ndk(true) — following the old instructions as written throws a Kotlin type-mismatch build error. Updated both files to the 3.x plugin line and ndk(true), and added a note pointing readers to check the KMP release notes for which native SDK generation is wrapped before picking a plugin line, since this is expected to change as KMP tracks newer native SDK releases. Co-Authored-By: Claude Sonnet 5 --- docs/ai/agent-skills/sdk/kmp/SKILL.md | 8 ++++---- docs/sdk/kmp/debug-symbols.md | 12 +++++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/ai/agent-skills/sdk/kmp/SKILL.md b/docs/ai/agent-skills/sdk/kmp/SKILL.md index 185bdc5..242b716 100644 --- a/docs/ai/agent-skills/sdk/kmp/SKILL.md +++ b/docs/ai/agent-skills/sdk/kmp/SKILL.md @@ -204,7 +204,7 @@ In a typical KMP/Compose Multiplatform project, wire the Bugsee Gradle plugin in // gradle/libs.versions.toml // // [versions] -// bugseeGradle = "4+" +// bugseeGradle = "3.x.x" // plugin line paired with the native SDK this KMP release wraps — see release notes // // [plugins] // bugsee-gradle-plugin = { id = "com.bugsee.android.gradle", version.ref = "bugseeGradle" } @@ -224,13 +224,13 @@ android { bugsee { appToken("") - ndk { - enabled.set(true) // upload NDK debug symbols (only if your app ships native libraries) - } + ndk(true) // upload NDK debug symbols (only if your app ships native libraries) } } ``` +> **Note:** The Gradle plugin line must match the native Android SDK this KMP release wraps (3.x for SDK 6.x, 4.x for SDK 7.x — see [Gradle plugin — Requirements & compatibility](https://docs.bugsee.com/sdk/android/gradle-plugin/requirements/)). Check the [KMP release notes](https://docs.bugsee.com/sdk/kmp/release-notes/) for the wrapped SDK version before picking a plugin line — mixing lines fails at build or runtime. + The plugin uploads the ProGuard/R8 `mapping.txt` automatically at build time. ### iOS diff --git a/docs/sdk/kmp/debug-symbols.md b/docs/sdk/kmp/debug-symbols.md index 82eeaea..3f37005 100644 --- a/docs/sdk/kmp/debug-symbols.md +++ b/docs/sdk/kmp/debug-symbols.md @@ -19,7 +19,11 @@ In short: - Add the Bugsee Gradle plugin (`com.bugsee.android.gradle`) to your Android app module. When present, it uploads the ProGuard/R8 `mapping.txt` automatically at build time. - Configure the plugin with the same `appToken` you pass to `Bugsee.launch(...)` on Android. -- If your app ships native `.so` libraries, enable NDK symbol collection (`ndk { enabled.set(true) }`) in the plugin configuration and set `debugSymbolLevel` to `SYMBOL_TABLE` or `FULL` for the relevant build types. +- If your app ships native `.so` libraries, enable NDK symbol collection (`ndk(true)`) in the plugin configuration and set `debugSymbolLevel` to `SYMBOL_TABLE` or `FULL` for the relevant build types. + +:::note[Plugin version tracks the wrapped native Android SDK] +The Bugsee KMP SDK wraps a specific native Android SDK release — see the [KMP release notes](/sdk/kmp/release-notes/) for which one. Use the Gradle plugin line that's paired with that native SDK's major version (3.x for SDK 6.x, 4.x for SDK 7.x); see [Gradle plugin — Requirements & compatibility](/sdk/android/gradle-plugin/requirements/) for the full compatibility table. Pairing the wrong plugin line with the wrapped SDK fails at build or runtime — for example, `4.x`'s nested `ndk { enabled.set(true) }` DSL only exists in the plugin line paired with SDK 7.x. +::: In a typical KMP/Compose Multiplatform project, the plugin is wired into `composeApp/build.gradle.kts` via the version catalog: @@ -27,7 +31,7 @@ In a typical KMP/Compose Multiplatform project, the plugin is wired into `compos // gradle/libs.versions.toml // // [versions] -// bugseeGradle = "x.y.z" +// bugseeGradle = "3.x.x" // plugin line paired with the native SDK this KMP release wraps // // [plugins] // bugsee-gradle-plugin = { id = "com.bugsee.android.gradle", version.ref = "bugseeGradle" } @@ -48,9 +52,7 @@ android { bugsee { appToken("") - ndk { - enabled.set(true) // upload NDK debug symbols - } + ndk(true) // upload NDK debug symbols } } ``` From abf285f19dda3bc068a9632b6543230dbbc671d0 Mon Sep 17 00:00:00 2001 From: Alexey Karimov Date: Sat, 5 Sep 2026 10:54:15 +0500 Subject: [PATCH 2/2] docs(kmp): tie NDK syntax to the plugin line instead of naming 3.x MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Review follow-up: the previous revision told readers to set bugseeGradle = "3.x.x". That pairing is not what the KMP repo actually ships — the KMP 0.1.1 sample (composeApp/build.gradle.kts) uses plugin 4.0.0-beta4 with the boolean ndk(true) form, so "3.x" is an unverified recommendation. The boolean-vs-nested split is a plugin-line property, not an SDK-line one: ndk(true) was valid on 3.x *and* on 4.0.0-beta4..beta9, and the nested ndk { enabled.set(true) } block only landed in 4.0.0-beta10. Keep ndk(true) (correct for the native SDK 6.0.2 that released KMP wraps), restore the neutral "x.y.z" version placeholder, and document both syntaxes so readers can adapt when KMP moves to the 7.x line. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Change-Id: I61747fac34e7a086231e90e496ac3ff8db1a554a --- docs/ai/agent-skills/sdk/kmp/SKILL.md | 4 ++-- docs/sdk/kmp/debug-symbols.md | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/docs/ai/agent-skills/sdk/kmp/SKILL.md b/docs/ai/agent-skills/sdk/kmp/SKILL.md index 242b716..baa37a4 100644 --- a/docs/ai/agent-skills/sdk/kmp/SKILL.md +++ b/docs/ai/agent-skills/sdk/kmp/SKILL.md @@ -204,7 +204,7 @@ In a typical KMP/Compose Multiplatform project, wire the Bugsee Gradle plugin in // gradle/libs.versions.toml // // [versions] -// bugseeGradle = "3.x.x" // plugin line paired with the native SDK this KMP release wraps — see release notes +// bugseeGradle = "x.y.z" // plugin line paired with the native SDK this KMP release wraps — see release notes // // [plugins] // bugsee-gradle-plugin = { id = "com.bugsee.android.gradle", version.ref = "bugseeGradle" } @@ -229,7 +229,7 @@ android { } ``` -> **Note:** The Gradle plugin line must match the native Android SDK this KMP release wraps (3.x for SDK 6.x, 4.x for SDK 7.x — see [Gradle plugin — Requirements & compatibility](https://docs.bugsee.com/sdk/android/gradle-plugin/requirements/)). Check the [KMP release notes](https://docs.bugsee.com/sdk/kmp/release-notes/) for the wrapped SDK version before picking a plugin line — mixing lines fails at build or runtime. +> **Note:** The Gradle plugin line must match the native Android SDK this KMP release wraps. Check the [KMP release notes](https://docs.bugsee.com/sdk/kmp/release-notes/) for the wrapped SDK version, then pick the paired plugin line from [Gradle plugin — Requirements & compatibility](https://docs.bugsee.com/sdk/android/gradle-plugin/requirements/). The NDK syntax differs by line: plugin 4.x takes a nested block (`ndk { enabled.set(true) }`), earlier lines take the boolean `ndk(true)` shown above. Using the nested block on a line that expects the boolean fails to compile with `Type mismatch: inferred type is () -> Unit but Boolean was expected`. The plugin uploads the ProGuard/R8 `mapping.txt` automatically at build time. diff --git a/docs/sdk/kmp/debug-symbols.md b/docs/sdk/kmp/debug-symbols.md index 3f37005..468dd93 100644 --- a/docs/sdk/kmp/debug-symbols.md +++ b/docs/sdk/kmp/debug-symbols.md @@ -21,8 +21,18 @@ In short: - Configure the plugin with the same `appToken` you pass to `Bugsee.launch(...)` on Android. - If your app ships native `.so` libraries, enable NDK symbol collection (`ndk(true)`) in the plugin configuration and set `debugSymbolLevel` to `SYMBOL_TABLE` or `FULL` for the relevant build types. -:::note[Plugin version tracks the wrapped native Android SDK] -The Bugsee KMP SDK wraps a specific native Android SDK release — see the [KMP release notes](/sdk/kmp/release-notes/) for which one. Use the Gradle plugin line that's paired with that native SDK's major version (3.x for SDK 6.x, 4.x for SDK 7.x); see [Gradle plugin — Requirements & compatibility](/sdk/android/gradle-plugin/requirements/) for the full compatibility table. Pairing the wrong plugin line with the wrapped SDK fails at build or runtime — for example, `4.x`'s nested `ndk { enabled.set(true) }` DSL only exists in the plugin line paired with SDK 7.x. +:::note[Match the plugin line to the wrapped native Android SDK] +The Bugsee KMP SDK wraps a specific native Android SDK release — see the [KMP release notes](/sdk/kmp/release-notes/) for which one, then pick the Gradle plugin line paired with it in [Gradle plugin — Requirements & compatibility](/sdk/android/gradle-plugin/requirements/). + +The NDK configuration syntax differs between plugin lines. Plugin **4.x** takes a nested block: + +```kotlin +ndk { + enabled.set(true) +} +``` + +Earlier plugin lines take the boolean form `ndk(true)` used in the example below. Using the nested block on a plugin line that expects the boolean fails to compile with `Type mismatch: inferred type is () -> Unit but Boolean was expected`. ::: In a typical KMP/Compose Multiplatform project, the plugin is wired into `composeApp/build.gradle.kts` via the version catalog: @@ -31,7 +41,7 @@ In a typical KMP/Compose Multiplatform project, the plugin is wired into `compos // gradle/libs.versions.toml // // [versions] -// bugseeGradle = "3.x.x" // plugin line paired with the native SDK this KMP release wraps +// bugseeGradle = "x.y.z" // plugin line paired with the native SDK this KMP release wraps // // [plugins] // bugsee-gradle-plugin = { id = "com.bugsee.android.gradle", version.ref = "bugseeGradle" }