docs: answer Play's native-debug-symbols warning
Uploading the bundle shows "This App Bundle contains native code, and you've not uploaded debug symbols". Record the answer next to the upload step so it is not re-investigated on every release: - the bundle's only native code is libandroidx.graphics.path.so (4 ABIs, ~37 KB), which arrives transitively through androidx.compose.ui:ui-graphics -> androidx.graphics:graphics-path:1.0.1; this project builds no native code at all, - ndk.debugSymbolLevel = "FULL" was tried and emits nothing for such a project (no native-debug-symbols output, nothing added to the bundle), and - the published AAR ships stripped libs only (symtab=0, no .debug_* sections, no symbol entries at all), so there is no symbol file in existence to upload. The warning is advisory and does not block review or rollout. Kotlin/Java stack traces are already deobfuscated from the R8 mapping that rides inside the bundle, so the only thing lost is symbolication of frames inside that Compose helper library.
This commit is contained in:
@@ -46,6 +46,26 @@ the rest are things you must do in the Play Console / with your own accounts.
|
|||||||
exactly the permission set listed in step 5 — **no `INTERNET`**, so "nothing leaves the
|
exactly the permission set listed in step 5 — **no `INTERNET`**, so "nothing leaves the
|
||||||
device" holds in the shipped artefact, not just in the source manifest.
|
device" holds in the shipped artefact, not just in the source manifest.
|
||||||
- [ ] Upload the **`.aab`** (not the APK) to the Play Console.
|
- [ ] Upload the **`.aab`** (not the APK) to the Play Console.
|
||||||
|
⚠️ **Expect a native-debug-symbols warning here, and ignore it.** Play scans the bundle, finds
|
||||||
|
`base/lib/<abi>/libandroidx.graphics.path.so`, and reports *"This App Bundle contains native
|
||||||
|
code, and you've not uploaded debug symbols"*. It is a recommendation, not an error: it does
|
||||||
|
not block the upload, review or rollout.
|
||||||
|
- That one library (4 ABIs, ~37 KB total) is **not** this project's code — it arrives
|
||||||
|
transitively through `androidx.compose.ui:ui-graphics` →
|
||||||
|
`androidx.graphics:graphics-path:1.0.1`. The project has no `ndk` / `externalNativeBuild` /
|
||||||
|
`jniLibs` config and no native sources at all.
|
||||||
|
- There is nothing to upload: the published `graphics-path-1.0.1.aar` ships **stripped** libs
|
||||||
|
(`symtab=0`, no `.debug_*` sections, no symbol entries anywhere in the AAR), and the
|
||||||
|
commonly-suggested fix does not apply — with `ndk.debugSymbolLevel = "FULL"` the build
|
||||||
|
succeeds but produces no `app/build/outputs/native-debug-symbols/` output and adds nothing
|
||||||
|
to the bundle, because AGP only packages symbols for native code it builds itself.
|
||||||
|
- Excluding the lib (`packaging { jniLibs { excludes += "**/libandroidx.graphics.path.so" } }`)
|
||||||
|
would silence the warning but risks `UnsatisfiedLinkError` inside Compose's path handling,
|
||||||
|
for a 37 KB saving. Not worth it.
|
||||||
|
- What it actually costs: symbolication of frames *inside that Compose helper*. Kotlin/Java
|
||||||
|
crashes are unaffected — the R8 mapping rides inside the bundle
|
||||||
|
(`BUNDLE-METADATA/com.android.tools.build.obfuscation/proguard.map`), so Play deobfuscates
|
||||||
|
them automatically.
|
||||||
- [ ] Keep `app/build/outputs/mapping/release/mapping.txt` for every release so you
|
- [ ] Keep `app/build/outputs/mapping/release/mapping.txt` for every release so you
|
||||||
can de-obfuscate crash reports (upload it under *Release > App bundle explorer*).
|
can de-obfuscate crash reports (upload it under *Release > App bundle explorer*).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user