diff --git a/packages/react-native/README.md b/packages/react-native/README.md index fd890a8..876b018 100644 --- a/packages/react-native/README.md +++ b/packages/react-native/README.md @@ -96,15 +96,14 @@ marked lines, replaces only those, and rewrites exactly one of yours, `react.hermesCommand`, with any trailing comment kept. Its own lines are recognised only by their markers: the NDK dependency ends in `// bugsee:ndk` (as does the opener of the `dependencies` block it adds when the file has -none), and the symbol-table block starts with `// bugsee-symbol-table:`. A -`bugsee-android-ndk` dependency of your own, anywhere and however written, is -never touched: the plugin then adds none of its own and says so in the -prebuild log. Your own `ndk { }` block is never touched either, and a line of -yours added inside the plugin's symbol-table block makes it refuse rather -than delete. It inserts only at anchors that hold nothing but their brace -(`dependencies {`, `buildscript … }`, `pluginManagement {`, `repositories {`, -a build type's `{` and `}`; a trailing comment is fine), always as whole -lines at your indentation, and never splits a line. Where it cannot do that +none). A `bugsee-android-ndk` dependency of your own, anywhere and however +written, is never touched: the plugin then adds none of its own and says so in +the prebuild log. The plugin writes no `debugSymbolLevel` (see +[Native symbols](#native-symbols-android)), and your own `ndk { }` block or +level is never touched. It inserts only at anchors that hold nothing but their +brace (`dependencies {`, `buildscript … }`, `pluginManagement {`, +`repositories {`; a trailing comment is fine), always as whole lines at your +indentation, and never splits a line. Where it cannot do that with certainty it refuses the prebuild with one error that names the file, the reason and the fix, and writes nothing. It refuses: @@ -116,11 +115,9 @@ the reason and the fix, and writes nothing. It refuses: - a `react.hermesCommand` that spans several lines or shares its line with another statement after `;`; - an anchor brace that shares its line with code: a one-line - `dependencies { … }` or `release { … }`, a `minifyEnabled true }`, a - `buildscript { … }; …`, a one-line `pluginManagement` or `repositories` - block (with the option that needs that edit on); -- its own symbol-table block with a line of yours inside it (with - `nativeCrashReporting` off); + `dependencies { … }`, a `buildscript { … }; …`, a one-line + `pluginManagement` or `repositories` block (with the option that needs that + edit on); - a `gradlePluginVersion` option or a baked NDK version that is not a plain version string. @@ -214,9 +211,8 @@ plugins { `android/app/build.gradle` — apply it, and for native crash symbols add the NDK module at the SDK version the package pins. No `ndk.debugSymbolLevel` is -needed for Bugsee: Gradle plugin 4.0.8 uploads native symbols from the -unstripped libraries in `build/intermediates/merged_native_libs`, whatever -the level. Set one only for what Google Play should get. +needed for Bugsee ([Native symbols](#native-symbols-android)); set one only +for what Google Play should get. ```groovy apply plugin: "com.android.application" @@ -240,6 +236,43 @@ app_token= plugin.ndk.enabled=true ``` +### Native symbols (Android) + +With `plugin.ndk.enabled=true` (the config plugin writes it for a real token +unless `nativeCrashReporting` is `false`), each Release build's +`uploadBugseeNative` task uploads native symbols. Bugsee Gradle +plugin 4.0.8 and later read them from the **unstripped** libraries AGP leaves +in `build/intermediates/merged_native_libs/`, keyed by GNU build-id, +with `bugsee-cli` 0.8.1 or later (the plugin's own floor). That makes them +independent of `ndk.debugSymbolLevel`: + +- every library that still has its debug info is uploaded with it, so crash + frames get function names and `file:line`. That covers your own native + code, and React Native's `libreactnative.so`, which the Maven + `react-android` artefact ships with full DWARF. Libraries shipped stripped + (Maven Hermes's `libhermesvm.so`, the Bugsee SDK's own) get their symbol + table, function names only; +- an unchanged prebuilt library (`libreactnative.so`, `libc++_shared.so`) has + the same build-id in every release, and the server keeps one copy; a copy + stored earlier with function names only is upgraded to the full one; +- the symbols are a build artefact: nothing is added to the APK or AAB. + +`debugSymbolLevel` is therefore **your app's own choice, for Google Play** +(what AGP packs into `native-debug-symbols.zip` and the AAB). The config +plugin writes none. Earlier versions of it wrote +`ndk { debugSymbolLevel 'SYMBOL_TABLE' }`, under a +`// bugsee-symbol-table:` comment, into the `debug` and `release` build +types; the next prebuild removes that block, recognised by its exact lines +only. A block you changed inside is yours: it is left as it is, and the +prebuild log says so. A level of your own is never touched. + +The wrapper's own `@bugsee/cli` (source maps, dSYMs) is 0.7.12 or later. +If you pin the Gradle plugin's CLI yourself (`plugin.cliPath` or +`plugin.cliVersion`), use 0.8.1 or later: older CLIs do not read +`merged_native_libs`, and the plugin then falls back to AGP's +`native-debug-symbols.zip`, which depends on `debugSymbolLevel` (and +0.7.0–0.7.11 send nothing for a `SYMBOL_TABLE` zip, bugsee/bugsee-cli#61). + ## iOS: bundle phase The JS half of iOS symbolication. In Xcode, the app target's **Bundle React diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 3013026..2632e0c 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -24,7 +24,7 @@ "native-versions.json" ], "dependencies": { - "@bugsee/cli": "0.7.11", + "@bugsee/cli": "0.7.12", "@expo/config-plugins": "~57.0.9" }, "peerDependencies": { diff --git a/packages/react-native/plugin/build/gradle.d.ts b/packages/react-native/plugin/build/gradle.d.ts index c781750..7904a1c 100644 --- a/packages/react-native/plugin/build/gradle.d.ts +++ b/packages/react-native/plugin/build/gradle.d.ts @@ -22,17 +22,20 @@ export declare function ensureGradlePluginDeclared(projectBuildGradle: string, v * with the option omitted or on removes that exclude and adds the * implementation line. The wrapper `api` itself is left in place. * - * On (omitted or a version) also writes `debugSymbolLevel 'SYMBOL_TABLE'` - * on existing debug and release build types when that block is absent. - * Off removes only the block this plugin inserted. Maven Hermes and - * `libreactnative.so` are pre-stripped; the comment does not claim those - * two are symbolicated. The Hermes preserve command and the finish hook - * are the JS source-map path, so they are written either way. The hook + * `ndk.debugSymbolLevel` is never written: Bugsee Gradle plugin 4.0.8 and + * later upload native symbols from the unstripped libraries in + * `merged_native_libs`, whatever the level, which only decides what AGP packs + * for Google Play (the app's own choice). The `debugSymbolLevel + * 'SYMBOL_TABLE'` block earlier versions wrote is removed, recognised by its + * marker and exact lines only; a level of the user's is left alone. The + * Hermes preserve command and the finish hook are the JS source-map path, + * so they are written either way. The hook * applies the package's scripts/bugsee-sourcemaps.gradle, which injects the * debug id and uploads the composed map unless `bugseeUploadSourcemaps=false` * or no real token is configured. */ export declare function ensureAppAppliesPlugin(appBuildGradle: string, ndkVersion: string | null, log?: (message: string) => void): string; +export declare const CHANGED_SYMBOL_BLOCK_NOTE = "@bugsee/react-native: android/app/build.gradle has the symbol-table block an earlier version of the plugin wrote, changed inside; it is left as you have it. Bugsee no longer needs ndk.debugSymbolLevel, so you can remove the block, or keep it for Google Play"; export declare const HERMES_COMMAND_UNREWRITABLE = "@bugsee/react-native cannot edit android/app/build.gradle: react.hermesCommand spans several lines or shares its line with another statement, so it cannot be pointed at scripts/hermesc-preserve-js.sh. Put it alone on one line, or delete it, and prebuild again"; /** * `uploadSymbols: false` on Android: disables every `uploadBugsee*` task diff --git a/packages/react-native/plugin/build/gradle.js b/packages/react-native/plugin/build/gradle.js index a03efa6..3c9a2d1 100644 --- a/packages/react-native/plugin/build/gradle.js +++ b/packages/react-native/plugin/build/gradle.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.HERMES_COMMAND_UNREWRITABLE = exports.CANNOT_EDIT = void 0; +exports.HERMES_COMMAND_UNREWRITABLE = exports.CHANGED_SYMBOL_BLOCK_NOTE = exports.CANNOT_EDIT = void 0; exports.ensureMavenCentral = ensureMavenCentral; exports.ensureGradlePluginDeclared = ensureGradlePluginDeclared; exports.ensureAppAppliesPlugin = ensureAppAppliesPlugin; @@ -610,12 +610,14 @@ const NDK_EXCLUDE = "exclude group: 'com.bugsee', module: 'bugsee-android-ndk'"; * with the option omitted or on removes that exclude and adds the * implementation line. The wrapper `api` itself is left in place. * - * On (omitted or a version) also writes `debugSymbolLevel 'SYMBOL_TABLE'` - * on existing debug and release build types when that block is absent. - * Off removes only the block this plugin inserted. Maven Hermes and - * `libreactnative.so` are pre-stripped; the comment does not claim those - * two are symbolicated. The Hermes preserve command and the finish hook - * are the JS source-map path, so they are written either way. The hook + * `ndk.debugSymbolLevel` is never written: Bugsee Gradle plugin 4.0.8 and + * later upload native symbols from the unstripped libraries in + * `merged_native_libs`, whatever the level, which only decides what AGP packs + * for Google Play (the app's own choice). The `debugSymbolLevel + * 'SYMBOL_TABLE'` block earlier versions wrote is removed, recognised by its + * marker and exact lines only; a level of the user's is left alone. The + * Hermes preserve command and the finish hook are the JS source-map path, + * so they are written either way. The hook * applies the package's scripts/bugsee-sourcemaps.gradle, which injects the * debug id and uploads the composed map unless `bugseeUploadSourcemaps=false` * or no real token is configured. @@ -635,7 +637,7 @@ function ensureAppAppliesPlugin(appBuildGradle, ndkVersion, log = console.warn) next = dropNdkExclude(next); next = ensureNdkImplementation(next, ndkVersion, log); } - next = ensureSymbolTable(next, ndkVersion !== null); + next = removeInsertedSymbolTable(next, log); return ensurePluginApplied(ensureHermesHooks(next)); }); } @@ -773,6 +775,13 @@ function dropNdkExclude(source) { removeBlock(lines, at, at + NDK_EXCLUDE_BLOCK.length - 1); return lines.join('\n'); } +/** + * The block earlier versions of this plugin wrote into the debug and release + * build types, kept verbatim so it can be recognised and removed. Its text is + * a fingerprint, not documentation: `libreactnative.so` is not pre-stripped + * (the Maven AAR ships it with DWARF), and with Gradle plugin 4.0.8 the + * native upload no longer depends on the level at all. + */ const SYMBOL_TABLE_BLOCK = [ "// bugsee-symbol-table: AGP defaults this to NONE, so the plugin's native upload finds", '// nothing and skips. SYMBOL_TABLE emits symbols for code this app', @@ -782,58 +791,6 @@ const SYMBOL_TABLE_BLOCK = [ " debugSymbolLevel 'SYMBOL_TABLE'", '}', ]; -function buildTypeSpans(s) { - const extent = blockExtent(s, 'buildTypes'); - if (!extent) { - return []; - } - const spans = []; - let depth = 0; - for (let i = extent.bodyStart; i < extent.bodyEnd; i += 1) { - const ch = s.masked[i]; - if (ch === '{') { - if (depth === 0) { - const name = /([A-Za-z_][A-Za-z0-9_]*)\s*$/.exec(s.masked.slice(extent.bodyStart, i))?.[1]; - if (name === 'debug' || name === 'release') { - spans.push({ name, open: i, close: matchingBrace(s.masked, i) }); - } - } - depth += 1; - } - else if (ch === '}') { - depth -= 1; - } - } - return spans; -} -function insertSymbolTable(source, span) { - const s = scan(source, APP_GRADLE); - const opener = lineIndexAt(s, span.open); - const closer = lineIndexAt(s, span.close); - // The block this plugin wrote has an `ndk {` of its own, so it is covered here too. - if (codeMatches(s, /debugSymbolLevel\s+(['"])SYMBOL_TABLE\1/g, span.open, span.close).length > 0 || - blockExtent(s, 'ndk', span.open, span.close) !== null) { - return source; - } - // The block goes last, before the closing brace's line; the opener and the - // closer must each hold nothing but their brace, or the user's line would - // have to be split. - const openerLine = s.lines[opener]; - const closerLine = s.lines[closer]; - if (!isOpenerLine(openerLine, new RegExp(`^${span.name}\\s*\\{$`)) || !isCloserLine(closerLine)) { - const at = isCloserLine(closerLine) ? opener : closer; - throw anchorRefusal(APP_GRADLE, s.lines[at], at + 1, `debugSymbolLevel 'SYMBOL_TABLE' for the ${span.name} build type`, "set ndk { debugSymbolLevel 'SYMBOL_TABLE' } in it yourself"); - } - const indent = `${indentOf(openerLine.raw)} `; - return insertLines(source, closer, SYMBOL_TABLE_BLOCK.map((line) => `${indent}${line}`)); -} -function ensureSymbolTable(source, enabled) { - if (!enabled) { - return removeInsertedSymbolTable(source); - } - const spans = buildTypeSpans(scan(source, APP_GRADLE)).sort((a, b) => b.open - a.open); - return spans.reduce((current, span) => insertSymbolTable(current, span), source); -} /** How many of Bugsee's symbol-table block lines stand at `start`, in order, at the marker's indentation. */ function symbolBlockLinesAt(lines, start) { const indent = indentOf(lines[start].raw); @@ -856,13 +813,15 @@ function afterLineComments(lines, start) { } return j; } +exports.CHANGED_SYMBOL_BLOCK_NOTE = '@bugsee/react-native: android/app/build.gradle has the symbol-table block an earlier version of the plugin wrote, changed inside; it is left as you have it. Bugsee no longer needs ndk.debugSymbolLevel, so you can remove the block, or keep it for Google Play'; /** - * Removes exactly Bugsee's symbol-table block, at whatever indentation it - * stands, and nothing after it. A block whose marker lines are intact but - * whose body was changed (a user added a line inside) is refused rather than - * cut; a stray marker loses only its own matching comment lines. + * Removes exactly the symbol-table block earlier versions wrote, at whatever + * indentation it stands, and nothing after it. A block whose comment lines + * are intact but whose body was changed (a user added or edited a line + * inside) is the user's now: it is left alone and noted. A stray marker loses + * only its own matching comment lines. */ -function removeInsertedSymbolTable(source) { +function removeInsertedSymbolTable(source, log) { const s = scan(source, APP_GRADLE); const kept = []; for (let i = 0; i < s.lines.length; i += 1) { @@ -873,7 +832,9 @@ function removeInsertedSymbolTable(source) { continue; } if (matched < SYMBOL_TABLE_BLOCK.length && matched >= 4) { - throw refusal(APP_GRADLE, `line ${i + 1}: the Bugsee symbol-table block that starts here has been changed inside, so the plugin cannot tell its lines from yours`, 'Restore the block as the plugin wrote it, or remove it and set ndk { debugSymbolLevel } yourself, then run expo prebuild again'); + log(exports.CHANGED_SYMBOL_BLOCK_NOTE); + kept.push(line.raw); + continue; } i += matched - 1; } diff --git a/packages/react-native/plugin/build/gradle.js.map b/packages/react-native/plugin/build/gradle.js.map index 0546607..1a1d3fd 100644 --- a/packages/react-native/plugin/build/gradle.js.map +++ b/packages/react-native/plugin/build/gradle.js.map @@ -1 +1 @@ -{"version":3,"file":"gradle.js","sourceRoot":"","sources":["../src/gradle.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"gradle.js","sourceRoot":"","sources":["../src/gradle.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/react-native/plugin/build/index.d.ts b/packages/react-native/plugin/build/index.d.ts index 0983c98..a0c9709 100644 --- a/packages/react-native/plugin/build/index.d.ts +++ b/packages/react-native/plugin/build/index.d.ts @@ -34,11 +34,13 @@ export interface BugseePluginProps { */ uploadSymbols?: boolean; /** - * Defaults on. Writes `plugin.ndk.enabled=true` for a real token, adds - * `com.bugsee:bugsee-android-ndk`, and sets `debugSymbolLevel 'SYMBOL_TABLE'` - * on existing debug and release build types. `false` skips the flag, strips - * that direct dependency, excludes the wrapper's NDK AAR, and removes the - * symbol block this plugin inserted. JS source-map hooks stay either way. + * Defaults on. Writes `plugin.ndk.enabled=true` for a real token and adds + * `com.bugsee:bugsee-android-ndk`; the Bugsee Gradle plugin then uploads + * native symbols from the unstripped libraries, whatever + * `ndk.debugSymbolLevel` says. `false` skips the flag, strips that direct + * dependency and excludes the wrapper's NDK AAR. Either way the plugin + * writes no `debugSymbolLevel`, and removes the symbol-table block earlier + * versions wrote. JS source-map hooks stay either way. */ nativeCrashReporting?: boolean; /** Defaults to native-versions.json `android.gradlePlugin`. */ diff --git a/packages/react-native/plugin/build/index.js.map b/packages/react-native/plugin/build/index.js.map index 1550e22..8afef77 100644 --- a/packages/react-native/plugin/build/index.js.map +++ b/packages/react-native/plugin/build/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/packages/react-native/plugin/src/__tests__/gradle-corpus.test.ts b/packages/react-native/plugin/src/__tests__/gradle-corpus.test.ts index d97d91d..6acace2 100644 --- a/packages/react-native/plugin/src/__tests__/gradle-corpus.test.ts +++ b/packages/react-native/plugin/src/__tests__/gradle-corpus.test.ts @@ -157,8 +157,6 @@ function bugseeGroups(): string[][] { [NDK_OPENER, ndkLine('9.9.9'), '}'], [ndkLine('9.9.9')], EXCLUDE_BLOCK.split('\n'), - SYMBOL_BLOCK.split('\n'), - [SYMBOL_BLOCK.split('\n')[0] as string], UPLOADS_OFF_BLOCK.split('\n'), declaration('1.2.3'), declaration('2.0.0'), @@ -214,6 +212,8 @@ function lost(userLines: readonly UserLine[], output: string): string | null { return walk(0, 0); } +const occurrences = (text: string, wanted: string): number => text.split(wanted).length - 1; + const countLines = (text: string, wanted: string): number => text.split('\n').filter((line) => line.replace(/\r$/, '').trim() === wanted).length; @@ -328,14 +328,13 @@ const appCases: Case[] = [ segments: [u(REACT_APPLY), b(LEGACY_HOOK_R1.replace('afterEvaluate {\n', 'afterEvaluate {\n println("added")\n')), u(userDeps)], }, { - // A one-line build type cannot take the symbol block without a rewrite of - // the user's line, so native crash reporting on refuses; off leaves it. + // The plugin writes nothing into a build type, so a one-line one is fine. name: 'braces inside a string in a one-line release block', segments: [ u(REACT_APPLY), u('android {\n buildTypes {\n release { minifyEnabled true; def s = "}}}" }\n }\n}'), ], - refuse: (option) => option.ndk !== null, + check: (output) => expect(output).not.toContain('bugsee-symbol-table:'), }, { name: 'braces inside a string in a release block', @@ -343,13 +342,8 @@ const appCases: Case[] = [ u(REACT_APPLY), u('android {\n buildTypes {\n release {\n minifyEnabled true; def s = "}}}"\n\n }\n }\n}'), ], - check: (output, option) => { - expect(countLines(output, "debugSymbolLevel 'SYMBOL_TABLE'")).toBe(option.ndk === null ? 0 : 1); - if (option.ndk !== null) { - // Inside the release block, right before its closing brace; the user's blank line stays where it was. - expect(output).toMatch(/def s = "}}}"\n\n {12}\/\/ bugsee-symbol-table:[^]*?\n {12}}\n {8}}\n {4}}\n}/); - } - }, + // Nothing goes into the release block: the user's blank line still ends it. + check: (output) => expect(output).toContain('def s = "}}}"\n\n }\n }\n}'), }, { name: 'a // comment naming dependencies { before the real block', @@ -626,7 +620,7 @@ const appCases: Case[] = [ u(REACT_APPLY), u('android {\n buildTypes {\n getByName("release") { minifyEnabled true }\n release {\n x()\n }\n }\n}'), ], - check: (output, option) => expect(countLines(output, "debugSymbolLevel 'SYMBOL_TABLE'")).toBe(option.ndk === null ? 0 : 1), + check: (output) => expect(output).not.toContain('bugsee-symbol-table:'), }, { name: 'a trailing block comment then a line comment on the hermesCommand line', @@ -823,23 +817,19 @@ const anchorCases: Case[] = [ check: (output) => expect(output).not.toContain(NDK_MARKER), }, { - name: 'A06: a build type whose closing brace shares its line with code is refused', + name: 'A06: a build type whose closing brace shares its line with code is left as it is', segments: [u(REACT_APPLY), u('android {\n buildTypes {\n release {\n minifyEnabled true }\n }\n}')], - refuse: (option) => option.ndk !== null, + check: (output) => expect(output).not.toContain('bugsee-symbol-table:'), }, { - name: 'A07: a build type whose closing brace follows a comment on its line is refused', + name: 'A07: a build type whose closing brace follows a comment on its line is left as it is', segments: [u(REACT_APPLY), u('android {\n buildTypes {\n release {\n minifyEnabled true\n /* end */ }\n }\n}')], - refuse: (option) => option.ndk !== null, + check: (output) => expect(output).not.toContain('bugsee-symbol-table:'), }, { - name: 'a build type closer with a trailing comment is an anchor', + name: 'a build type closer with a trailing comment gets nothing before it', segments: [u(REACT_APPLY), u('android {\n buildTypes {\n release {\n minifyEnabled true\n } // release\n }\n}')], - check: (output, option) => { - if (option.ndk !== null) { - expect(output).toContain(`${SYMBOL_BLOCK.split('\n').map((line) => ` ${line}`).join('\n')}\n } // release\n`); - } - }, + check: (output) => expect(output).toContain(' minifyEnabled true\n } // release\n'), }, { name: 'A08: an orphaned symbol marker before the user\'s own ndk block takes only the marker', @@ -851,14 +841,13 @@ const anchorCases: Case[] = [ ], }, { - name: 'A09: a user line added inside Bugsee\'s symbol block refuses when the block would go', + name: 'A09: a user line added inside the old symbol block makes the block the user\'s: it stays', segments: [ u(REACT_APPLY), u('android {\n buildTypes {\n release {'), u(SYMBOL_BLOCK.replace(" debugSymbolLevel 'SYMBOL_TABLE'", " debugSymbolLevel 'SYMBOL_TABLE'\n abiFilters \"arm64-v8a\"").split('\n').map((line) => ` ${line}`).join('\n')), u(' }\n }\n}'), ], - refuse: (option) => option.ndk === null, }, { name: 'Bugsee\'s symbol block at a deeper indentation than it wrote is still exactly its block', @@ -905,19 +894,18 @@ const anchorCases: Case[] = [ segments: [u(REACT_APPLY), b(LEGACY_MARKER), u('/* note */\ndef bugseeHermesSourcemaps = "x"'), u(userAfter)], }, { - name: 'a multi-line build type whose opener holds code is refused', + name: 'a multi-line build type whose opener holds code is left as it is', segments: [u(REACT_APPLY), u('android {\n buildTypes {\n release { minifyEnabled true\n }\n }\n}')], - refuse: (option) => option.ndk !== null, + check: (output) => expect(output).not.toContain('bugsee-symbol-table:'), }, { - name: 'exactly the four marker comments then a user level line refuses when the block would go', + name: 'exactly the four marker comments then a user level line stay: they are the user\'s', segments: [ u(REACT_APPLY), u('android {\n buildTypes {\n release {'), u(SYMBOL_BLOCK.split('\n').slice(0, 4).map((line) => ` ${line}`).join('\n')), u(" ndk.debugSymbolLevel 'SYMBOL_TABLE'\n }\n }\n}"), ], - refuse: (option) => option.ndk === null, }, { name: 'a code line with a trailing comment between a legacy marker and its fingerprint is user code', @@ -948,14 +936,54 @@ const anchorCases: Case[] = [ check: (output) => expect(output).not.toContain('9.9.9'), }, { - name: 'exactly the four marker comments of the symbol block before a user ndk block refuses when the block would go', + name: 'exactly the four marker comments of the symbol block before a user ndk block stay: they are the user\'s', segments: [ u(REACT_APPLY), u('android {\n buildTypes {\n release {'), u(SYMBOL_BLOCK.split('\n').slice(0, 4).map((line) => ` ${line}`).join('\n')), u(' ndk {\n abiFilters "arm64-v8a"\n }\n }\n }\n}'), ], - refuse: (option) => option.ndk === null, + }, + { + name: 'N01: the old block in debug and release goes; the user\'s FULL in defaultConfig stays', + segments: [ + u(REACT_APPLY), + u("android {\n defaultConfig {\n ndk { debugSymbolLevel 'FULL' }\n }\n buildTypes {\n debug {\n signingConfig signingConfigs.debug"), + b(SYMBOL_BLOCK.split('\n').map((line) => ` ${line}`).join('\n')), + u(' }\n release {\n minifyEnabled true'), + b(SYMBOL_BLOCK.split('\n').map((line) => ` ${line}`).join('\n')), + u(' }\n }\n}'), + ], + check: (output) => { + expect(output).not.toContain('bugsee-symbol-table:'); + expect(output).toContain(" ndk { debugSymbolLevel 'FULL' }\n"); + expect(output).toContain(' signingConfig signingConfigs.debug\n }\n release {\n minifyEnabled true\n }\n'); + }, + }, + { + name: 'N02: the old block, CRLF, in a release that also holds the user\'s own ndk block', + segments: [ + u(REACT_APPLY), + u("android {\n buildTypes {\n release {\n ndk {\n abiFilters 'arm64-v8a'\n }"), + b(SYMBOL_BLOCK.split('\n').map((line) => ` ${line}`).join('\n')), + u(' }\n }\n}'), + ], + crlf: true, + check: (output) => { + expect(output).not.toContain('bugsee-symbol-table:'); + expect(output).toContain("abiFilters 'arm64-v8a'\r\n }\r\n }\r\n"); + }, + }, + { + name: 'N03: the user\'s own level in debug and release, no marker, is never touched', + segments: [ + u(REACT_APPLY), + u("android {\n buildTypes {\n debug {\n ndk {\n debugSymbolLevel 'NONE'\n }\n }\n release {\n ndk.debugSymbolLevel = 'FULL'\n }\n }\n}"), + ], + }, + { + name: 'N04: the old block\'s text quoted in a string is the user\'s', + segments: [u(REACT_APPLY), u(`def doc = '''\n${SYMBOL_BLOCK}\n'''`), u(userDeps)], }, { name: 'a user dependencies block whose opener is the plugin\'s own marked opener shape is kept', @@ -1041,6 +1069,10 @@ function expectAppOutcome(c: Case, source: Input, option: AppOption): void { label, (option.ndk === null ? 1 : 0) + (quoted.exclude ?? 0), ]); + // The plugin writes no debugSymbolLevel and takes the block an earlier + // version wrote: every one left is the user's own (code, comment or string). + const userText = c.segments.filter((segment) => segment.kind !== 'bugsee').map((segment) => segment.text).join('\n'); + expect([label, occurrences(once, 'debugSymbolLevel')]).toEqual([label, occurrences(userText, 'debugSymbolLevel')]); c.check?.(once, option); // CRLF files stay CRLF on every line, and a LF file gains no CR. const bareLf = once.split('\n').filter((line, i, all) => i < all.length - 1 && !line.endsWith('\r')).length; diff --git a/packages/react-native/plugin/src/__tests__/plugin.test.ts b/packages/react-native/plugin/src/__tests__/plugin.test.ts index 9b29515..c71b37a 100644 --- a/packages/react-native/plugin/src/__tests__/plugin.test.ts +++ b/packages/react-native/plugin/src/__tests__/plugin.test.ts @@ -528,7 +528,7 @@ describe('Android Gradle edits', () => { expect(ensureAppAppliesPlugin(next, versions.sdk)).toBe(next); }); - it('writes Expo SDK 57 symbol hooks and drops them when native crash reporting is off', () => { + it('writes Expo SDK 57 symbol hooks, no symbol level, and drops the NDK when native crash reporting is off', () => { const template = expoSdk57AppBuildGradle(); expect(template).toContain('hermes-compiler/package.json'); expect(template).not.toContain('hermesc-preserve-js.sh'); @@ -539,17 +539,11 @@ describe('Android Gradle edits', () => { expect(next).toContain(`implementation "com.bugsee:bugsee-android-ndk:${versions.sdk}"`); expect(next.match(/com\.bugsee\.android\.gradle/g)).toHaveLength(1); - const debug = buildTypeBody(next, 'debug'); - const release = buildTypeBody(next, 'release'); - for (const body of [debug, release]) { - expect(body.match(/debugSymbolLevel 'SYMBOL_TABLE'/g)).toHaveLength(1); - expect(body.match(/\bndk\s*\{/g)).toHaveLength(1); - expect(body).toContain('bugsee-symbol-table:'); - expect(body).toContain('AGP defaults this to NONE'); - expect(body).toContain('Maven Hermes and libreactnative.so are pre-stripped'); - expect(body).toContain('this level does not symbolicate those two'); - } - expect(next.match(/debugSymbolLevel 'SYMBOL_TABLE'/g)).toHaveLength(2); + // Gradle plugin 4.0.8 reads the unstripped libraries: no level is written. + expect(next).not.toContain('debugSymbolLevel'); + expect(next).not.toContain('bugsee-symbol-table:'); + expect(buildTypeBody(next, 'debug')).toBe(buildTypeBody(template, 'debug')); + expect(buildTypeBody(next, 'release')).toBe(buildTypeBody(template, 'release')); const hermes = next.split('\n').filter((line) => /^\s*hermesCommand\s*=/.test(line)); expect(hermes).toEqual([ @@ -668,7 +662,7 @@ describe('Android Gradle edits', () => { } }); - it('leaves a hand-written ndk block when native crash reporting is off', () => { + it('leaves a hand-written ndk block, on and off, and takes the old block an earlier prebuild wrote', () => { const template = expoSdk57AppBuildGradle().replace( ' debug {\n signingConfig signingConfigs.debug\n }', [ @@ -680,12 +674,25 @@ describe('Android Gradle edits', () => { ' }', ].join('\n'), ); - const enabled = ensureAppAppliesPlugin(template, versions.sdk); + // An earlier prebuild wrote the old block into release (debug had the user's own ndk block). + const oldBlock = [ + " // bugsee-symbol-table: AGP defaults this to NONE, so the plugin's native upload finds", + ' // nothing and skips. SYMBOL_TABLE emits symbols for code this app', + ' // builds. Maven Hermes and libreactnative.so are pre-stripped;', + ' // this level does not symbolicate those two.', + ' ndk {', + " debugSymbolLevel 'SYMBOL_TABLE'", + ' }', + ].join('\n'); + const releaseBody = buildTypeBody(template, 'release'); + const closerLine = template.lastIndexOf('\n', template.indexOf(releaseBody) + releaseBody.length) + 1; + const withOld = `${template.slice(0, closerLine)}${oldBlock}\n${template.slice(closerLine)}`; + expect(buildTypeBody(withOld, 'release')).toContain(oldBlock); + const enabled = ensureAppAppliesPlugin(withOld, versions.sdk); + // Exactly what a prebuild of the file without the old block gives. + expect(enabled).toBe(ensureAppAppliesPlugin(template, versions.sdk)); expect(buildTypeBody(enabled, 'debug')).toContain("debugSymbolLevel 'FULL'"); - expect(buildTypeBody(enabled, 'debug')).not.toContain('SYMBOL_TABLE'); - expect(buildTypeBody(enabled, 'debug')).not.toContain('bugsee-symbol-table:'); - expect(buildTypeBody(enabled, 'release')).toContain("debugSymbolLevel 'SYMBOL_TABLE'"); - expect(buildTypeBody(enabled, 'release').match(/\bndk\s*\{/g)).toHaveLength(1); + expect(enabled).not.toContain('SYMBOL_TABLE'); const off = ensureAppAppliesPlugin(enabled, null); expect(buildTypeBody(off, 'debug')).toContain("debugSymbolLevel 'FULL'"); diff --git a/packages/react-native/plugin/src/__tests__/transforms.test.ts b/packages/react-native/plugin/src/__tests__/transforms.test.ts index 31e0ada..ee2bddb 100644 --- a/packages/react-native/plugin/src/__tests__/transforms.test.ts +++ b/packages/react-native/plugin/src/__tests__/transforms.test.ts @@ -10,6 +10,7 @@ import type { XcodeProjectLike } from '../bundle-phase'; import { DSYM_POST_ACTION_SCRIPT, dsymPostActionScript } from '../dsym-script'; import { CANNOT_EDIT, + CHANGED_SYMBOL_BLOCK_NOTE, HERMES_COMMAND_UNREWRITABLE, ensureAppAppliesPlugin, ensureGradlePluginDeclared, @@ -254,16 +255,13 @@ describe('ensureAppAppliesPlugin, exactly', () => { expect(beforeHook(ensureAppAppliesPlugin(already, null))).toContain('hermesCommand = "/custom/hermesc-preserve-js.sh"'); }); - it('adds the symbol block to debug and release only, as a nested-brace-safe last entry', () => { + it('writes no symbol level into any build type, on or off', () => { const source = lines( 'android {', ' buildTypes {', ' debug {', ' ext { flag = true }', ' }', - ' staging {', - ' minifyEnabled true', - ' }', ' release {', ' minifyEnabled true', ' }', @@ -273,22 +271,16 @@ describe('ensureAppAppliesPlugin, exactly', () => { '}', '', ); - const on = ensureAppAppliesPlugin(source, '7.3.0'); - expect(beforeHook(on)).toBe( + expect(beforeHook(ensureAppAppliesPlugin(source, '7.3.0'))).toBe( lines( 'apply plugin: "com.bugsee.android.gradle"', 'android {', ' buildTypes {', ' debug {', ' ext { flag = true }', - SYMBOL_BLOCK(' '), - ' }', - ' staging {', - ' minifyEnabled true', ' }', ' release {', ' minifyEnabled true', - SYMBOL_BLOCK(' '), ' }', ' }', '}', @@ -299,121 +291,19 @@ describe('ensureAppAppliesPlugin, exactly', () => { '', ), ); - const off = ensureAppAppliesPlugin(on, null); - // The hook already ends the file, so the exclude block goes after it. - expect(off.endsWith(`\n\n${exclude}\n`)).toBe(true); - expect(beforeHook(off)).toBe( - lines( - 'apply plugin: "com.bugsee.android.gradle"', - 'android {', - ' buildTypes {', - ' debug {', - ' ext { flag = true }', - ' }', - ' staging {', - ' minifyEnabled true', - ' }', - ' release {', - ' minifyEnabled true', - ' }', - ' }', - '}', - 'dependencies {', - '}', - '', - '', - ), - ); + expect(ensureAppAppliesPlugin(source, null)).not.toContain('debugSymbolLevel'); }); - it('rewrites only its own marked NDK line; a user NDK line is left alone, on or off, and noted', () => { - const own = `apply plugin: "com.bugsee.android.gradle"\ndependencies {\n implementation "com.bugsee:bugsee-android-ndk:1.0.0" // bugsee:ndk\n implementation("a")\n}\n`; - expect(beforeHook(ensureAppAppliesPlugin(own, '7.3.0'))).toBe( - 'apply plugin: "com.bugsee.android.gradle"\ndependencies {\n implementation "com.bugsee:bugsee-android-ndk:7.3.0" // bugsee:ndk\n implementation("a")\n}\n\n', - ); - const quiet = jest.fn(); - ensureAppAppliesPlugin(own, '7.3.0', quiet); - ensureAppAppliesPlugin(own, null, quiet); - expect(quiet).not.toHaveBeenCalled(); - const pinned = 'apply plugin: "com.bugsee.android.gradle"\ndependencies {\n implementation "com.bugsee:bugsee-android-ndk:1.0.0" // pinned\n implementation("a")\n}\n'; - const log = jest.fn(); - expect(beforeHook(ensureAppAppliesPlugin(pinned, '7.3.0', log))).toBe(`${pinned}\n`); - expect(beforeHook(ensureAppAppliesPlugin(pinned, null, log))).toBe(`${pinned}\n${exclude}\n\n`); - expect(log.mock.calls).toEqual([ - ['@bugsee/react-native: android/app/build.gradle declares com.bugsee:bugsee-android-ndk itself; the plugin leaves that line alone and does not add or remove its own'], - ['@bugsee/react-native: android/app/build.gradle declares com.bugsee:bugsee-android-ndk itself; the plugin leaves that line alone and does not add or remove its own'], - ]); - // The user's artifact in a string anywhere, in any quoting, counts as theirs. - const quoted = "apply plugin: \"com.bugsee.android.gradle\"\ndef ndk = 'com.bugsee:bugsee-android-ndk:2.0.0'\ndependencies {\n implementation(ndk)\n}\n"; - expect(beforeHook(ensureAppAppliesPlugin(quoted, '7.3.0', log))).toBe(`${quoted}\n`); - // A commented-out NDK line is not the dependency: a live one is added. - const commented = 'apply plugin: "com.bugsee.android.gradle"\ndependencies {\n // implementation "com.bugsee:bugsee-android-ndk:1.0.0"\n}\n'; - expect(beforeHook(ensureAppAppliesPlugin(commented, '7.3.0'))).toBe( - `apply plugin: "com.bugsee.android.gradle"\ndependencies {\n${ndkLine}\n // implementation "com.bugsee:bugsee-android-ndk:1.0.0"\n}\n\n`, - ); - // The plugin's line never carries any other comment, so a marker-less line with the artifact is the user's. - const unmarked = `apply plugin: "com.bugsee.android.gradle"\ndependencies {\n implementation "com.bugsee:bugsee-android-ndk:1.0.0"\n}\n`; - expect(beforeHook(ensureAppAppliesPlugin(unmarked, '7.3.0', () => undefined))).toBe(`${unmarked}\n`); - }); - - it('inserts the NDK line after a dependencies opener that stands alone, at the block\'s own indentation', () => { - const tabs = 'apply plugin: "com.bugsee.android.gradle"\ndependencies { // keep sorted\n\timplementation("a")\n}\n'; - expect(beforeHook(ensureAppAppliesPlugin(tabs, '7.3.0'))).toBe( - 'apply plugin: "com.bugsee.android.gradle"\ndependencies { // keep sorted\n\timplementation "com.bugsee:bugsee-android-ndk:7.3.0" // bugsee:ndk\n\timplementation("a")\n}\n\n', - ); - for (const opener of ['dependencies { implementation("a") }', 'dependencies { implementation("a")\n}', 'foo { }; dependencies {\n}']) { - expect(() => ensureAppAppliesPlugin(`${opener}\n`, '7.3.0')).toThrow( - `${CANNOT_EDIT} android/app/build.gradle: line 1: \`${opener.split('\n')[0]}\` shares its line with other code, so the Bugsee NDK dependency cannot be added without rewriting that line. Put the brace alone on its line, or declare \`implementation "com.bugsee:bugsee-android-ndk:7.3.0"\` yourself, then run expo prebuild again`, - ); + it('leaves one-line build types and closers that share their line alone', () => { + for (const source of [ + 'android {\n buildTypes {\n release { minifyEnabled true }\n }\n}\n', + 'android {\n buildTypes {\n release {\n minifyEnabled true }\n }\n}\n', + 'android {\n buildTypes {\n release {\n /* end */ }\n }\n}\n', + ]) { + expect(beforeHook(ensureAppAppliesPlugin(source, '7.3.0'))).toBe(`apply plugin: "com.bugsee.android.gradle"\n${source}\n${ndkBlock}\n\n`); } }); - it('refuses a one-line build type rather than split the user line', () => { - const oneLine = 'android {\n buildTypes {\n release { minifyEnabled true }\n }\n}\n'; - expect(() => ensureAppAppliesPlugin(oneLine, '7.3.0')).toThrow( - `${CANNOT_EDIT} android/app/build.gradle: line 3: \`release { minifyEnabled true }\` shares its line with other code, so debugSymbolLevel 'SYMBOL_TABLE' for the release build type cannot be added without rewriting that line. Put the brace alone on its line, or set ndk { debugSymbolLevel 'SYMBOL_TABLE' } in it yourself, then run expo prebuild again`, - ); - // A closer that shares its line with code, or follows a comment on its line, is no anchor either. - expect(() => ensureAppAppliesPlugin('android {\n buildTypes {\n release {\n minifyEnabled true }\n }\n}\n', '7.3.0')).toThrow( - `${CANNOT_EDIT} android/app/build.gradle: line 4: \`minifyEnabled true }\` shares its line with other code`, - ); - expect(() => ensureAppAppliesPlugin('android {\n buildTypes {\n release {\n /* end */ }\n }\n}\n', '7.3.0')).toThrow( - `${CANNOT_EDIT} android/app/build.gradle: line 4: \`/* end */ }\` shares its line with other code`, - ); - // Off has nothing to add, so nothing to refuse. - expect(beforeHook(ensureAppAppliesPlugin(oneLine, null))).toBe( - `apply plugin: "com.bugsee.android.gradle"\n${oneLine}\n${exclude}\n\n`, - ); - // The block goes right before the closer; the user's blank line stays where it was. - const spaced = 'android {\n buildTypes {\n release {\n minifyEnabled true\n\n }\n }\n}\n'; - expect(ensureAppAppliesPlugin(spaced, '7.3.0')).toContain( - ` minifyEnabled true\n\n${SYMBOL_BLOCK(' ')}\n }\n`, - ); - }); - - it('takes only the build types directly under buildTypes', () => { - const nested = 'android {\n buildTypes {\n debug {\n release { }\n }\n }\n}\n'; - expect(beforeHook(ensureAppAppliesPlugin(nested, '7.3.0'))).toBe( - lines( - 'apply plugin: "com.bugsee.android.gradle"', - 'android {', - ' buildTypes {', - ' debug {', - ' release { }', - SYMBOL_BLOCK(' '), - ' }', - ' }', - '}', - '', - 'dependencies { // bugsee:ndk', - ndkLine, - '}', - '', - '', - ), - ); - }); - it('leaves build types that already set a symbol level or have an ndk block', () => { const source = lines( 'android {', @@ -433,12 +323,20 @@ describe('ensureAppAppliesPlugin, exactly', () => { ); }); - it('removes exactly its own symbol block, at any indentation, and nothing after it', () => { + it('removes exactly the old symbol block, at any indentation, on or off, and nothing after it', () => { const block = SYMBOL_BLOCK(' '); const file = `a()\n${block}\nb()\n`; expect(beforeHook(ensureAppAppliesPlugin(file, null))).toBe( `apply plugin: "com.bugsee.android.gradle"\na()\nb()\n\n${exclude}\n\n`, ); + expect(beforeHook(ensureAppAppliesPlugin(file, '7.3.0'))).toBe( + `apply plugin: "com.bugsee.android.gradle"\na()\nb()\n\n${ndkBlock}\n\n`, + ); + // Inside the build types an earlier prebuild wrote it into. + const inside = `android {\n buildTypes {\n debug {\n${SYMBOL_BLOCK(' ')}\n }\n release {\n minifyEnabled true\n${SYMBOL_BLOCK(' ')}\n }\n }\n}\n`; + expect(beforeHook(ensureAppAppliesPlugin(inside, '7.3.0'))).toBe( + `apply plugin: "com.bugsee.android.gradle"\nandroid {\n buildTypes {\n debug {\n }\n release {\n minifyEnabled true\n }\n }\n}\n\n${ndkBlock}\n\n`, + ); // Comment lines that only resemble the marker, or a different block after it, are the user's. const kept = '// bugsee-symbol-table: a comment, no block\nother()\n'; expect(beforeHook(ensureAppAppliesPlugin(kept, null))).toBe( @@ -454,13 +352,29 @@ describe('ensureAppAppliesPlugin, exactly', () => { expect(beforeHook(ensureAppAppliesPlugin(twoLines, null))).toBe( `apply plugin: "com.bugsee.android.gradle"\na()\nndk {\n}\n\n${exclude}\n\n`, ); - // A user line inside the block makes the plugin refuse, never delete. - const edited = `a()\n${SYMBOL_BLOCK('').replace(" debugSymbolLevel 'SYMBOL_TABLE'", " debugSymbolLevel 'SYMBOL_TABLE'\n abiFilters \"arm64-v8a\"")}\n`; - expect(() => ensureAppAppliesPlugin(edited, null)).toThrow( - `${CANNOT_EDIT} android/app/build.gradle: line 2: the Bugsee symbol-table block that starts here has been changed inside, so the plugin cannot tell its lines from yours. Restore the block as the plugin wrote it, or remove it and set ndk { debugSymbolLevel } yourself, then run expo prebuild again`, + const threeLines = `a()\n${SYMBOL_BLOCK('').split('\n').slice(0, 3).join('\n')}\nb()\n`; + expect(beforeHook(ensureAppAppliesPlugin(threeLines, null))).toBe( + `apply plugin: "com.bugsee.android.gradle"\na()\nb()\n\n${exclude}\n\n`, ); - // On, an edited block still counts as the level being set. - expect(ensureAppAppliesPlugin(`android {\n buildTypes {\n release {\n${SYMBOL_BLOCK(' ').replace("'SYMBOL_TABLE'", "'FULL'")}\n }\n }\n}\n`, '7.3.0')).not.toContain("'SYMBOL_TABLE'"); + }); + + it('leaves the old block alone, and says so, once the user changed it inside', () => { + const notes: string[] = []; + const edited = `a()\n${SYMBOL_BLOCK('').replace(" debugSymbolLevel 'SYMBOL_TABLE'", " debugSymbolLevel 'FULL'")}\n`; + for (const ndk of [null, '7.3.0']) { + notes.length = 0; + expect(ensureAppAppliesPlugin(edited, ndk, (message) => notes.push(message))).toContain(edited.slice(4)); + expect(notes).toEqual([CHANGED_SYMBOL_BLOCK_NOTE]); + } + // Exactly the four comment lines, then the user's own lines: the same. + notes.length = 0; + const fourThenOwn = `a()\n${SYMBOL_BLOCK('').split('\n').slice(0, 4).join('\n')}\nndk.debugSymbolLevel 'NONE'\n`; + expect(ensureAppAppliesPlugin(fourThenOwn, null, (message) => notes.push(message))).toContain(fourThenOwn.slice(4)); + expect(notes).toEqual([CHANGED_SYMBOL_BLOCK_NOTE]); + // The intact block says nothing. + notes.length = 0; + ensureAppAppliesPlugin(`a()\n${SYMBOL_BLOCK('')}\n`, null, (message) => notes.push(message)); + expect(notes).toEqual([]); }); it('keeps a user afterEvaluate block and adds the hook after it', () => { @@ -776,16 +690,10 @@ describe('blocks found by keyword', () => { ); }); - it('finds a build type written without a space before its brace', () => { - const next = ensureAppAppliesPlugin('android {\n buildTypes {\n debug{\n }\n }\n}\n', '7.3.0'); - expect(next).toContain(" debug{\n // bugsee-symbol-table: "); - expect(next).toContain(" ndk {\n debugSymbolLevel 'SYMBOL_TABLE'\n }\n }\n }\n}"); - }); - - it('counts any whitespace before the symbol level as already set', () => { + it('never touches a level of the user\'s', () => { const source = "android {\n buildTypes {\n release {\n ndk.debugSymbolLevel 'SYMBOL_TABLE'\n }\n }\n}\n"; expect(beforeHook(ensureAppAppliesPlugin(source, '7.3.0'))).toContain(source); - expect(ensureAppAppliesPlugin(source, '7.3.0')).not.toContain('bugsee-symbol-table:'); + expect(beforeHook(ensureAppAppliesPlugin(source, null))).toContain(source); }); it('keeps a marker comment that ends the file', () => { @@ -1242,3 +1150,50 @@ describe('hook lines, exactly', () => { expect(next).toContain(`${applied}\n${user}\n`); }); }); + +describe('Gradle edits: refusal texts, indentation and notes (mutation gaps)', () => { + const ndk = 'implementation "com.bugsee:bugsee-android-ndk:7.3.0" // bugsee:ndk'; + + it('with native crash reporting off, still notes a user NDK line it leaves alone', () => { + const notes: string[] = []; + const user = 'dependencies {\n implementation "com.bugsee:bugsee-android-ndk:1.0.0"\n}\n'; + expect(ensureAppAppliesPlugin(user, null, (message) => notes.push(message))).toContain('bugsee-android-ndk:1.0.0'); + expect(notes).toEqual([expect.stringContaining('declares com.bugsee:bugsee-android-ndk itself')]); + }); + + it('removes its own NDK line when it is the first line of the file', () => { + const own = 'implementation "com.bugsee:bugsee-android-ndk:1.0.0" // bugsee:ndk\nx()\n'; + const off = ensureAppAppliesPlugin(own, null, () => undefined); + expect(off).not.toContain('bugsee-android-ndk:1.0.0'); + expect(off).toContain('x()\n'); + }); + + it('puts its NDK line at the indentation of the block\'s first entry, after other top-level code', () => { + const next = ensureAppAppliesPlugin("x()\ndependencies {\n implementation 'a'\n}\n", '7.3.0'); + expect(next).toContain(`dependencies {\n ${ndk}\n implementation 'a'\n}`); + }); + + it('names the open comment when the dependencies opener ends inside one', () => { + expect(() => ensureAppAppliesPlugin('dependencies { /*\n*/\n}\n', '7.3.0')).toThrow( + `${CANNOT_EDIT} android/app/build.gradle: line 1: \`dependencies {\` ends inside a block comment or string that is still open, so the Bugsee NDK dependency cannot be added after it. Close the comment on that line, or declare \`implementation "com.bugsee:bugsee-android-ndk:7.3.0"\` yourself, then run expo prebuild again`, + ); + }); + + it('names the open comment when the React plugin line ends inside one', () => { + expect(() => ensureAppAppliesPlugin('x()\napply plugin: "com.facebook.react" /*\n*/\n', null)).toThrow( + `${CANNOT_EDIT} android/app/build.gradle: line 2: \`apply plugin: "com.facebook.react"\` ends inside a block comment or string that is still open, so \`apply plugin: "com.bugsee.android.gradle"\` cannot be added after it. Close the comment on that line, or add \`apply plugin: "com.bugsee.android.gradle"\` yourself, then run expo prebuild again`, + ); + }); + + it('takes a plugins block written without a space before its brace, and refuses one whose opener holds code', () => { + expect(ensureGradlePluginDeclared('plugins{\n id("x") version "1"\n}\n', '4.0.8')).toBe( + "plugins{\n id(\"x\") version \"1\"\n id 'com.bugsee.android.gradle' version '4.0.8' apply false\n}\n", + ); + expect(ensureGradlePluginDeclared('plugins {\n id("x") version "1"\n}\n', '4.0.8')).toBe( + "plugins {\n id(\"x\") version \"1\"\n id 'com.bugsee.android.gradle' version '4.0.8' apply false\n}\n", + ); + for (const source of ['def a = 1; plugins {\n id("x") version "1"\n}\n', 'plugins { id("x") version "1"\n}\n']) { + expect(() => ensureGradlePluginDeclared(source, '4.0.8')).toThrow(`${CANNOT_EDIT} android/build.gradle: line 1:`); + } + }); +}); diff --git a/packages/react-native/plugin/src/gradle.ts b/packages/react-native/plugin/src/gradle.ts index 54d5ea5..50e21d1 100644 --- a/packages/react-native/plugin/src/gradle.ts +++ b/packages/react-native/plugin/src/gradle.ts @@ -720,12 +720,14 @@ const NDK_EXCLUDE = "exclude group: 'com.bugsee', module: 'bugsee-android-ndk'"; * with the option omitted or on removes that exclude and adds the * implementation line. The wrapper `api` itself is left in place. * - * On (omitted or a version) also writes `debugSymbolLevel 'SYMBOL_TABLE'` - * on existing debug and release build types when that block is absent. - * Off removes only the block this plugin inserted. Maven Hermes and - * `libreactnative.so` are pre-stripped; the comment does not claim those - * two are symbolicated. The Hermes preserve command and the finish hook - * are the JS source-map path, so they are written either way. The hook + * `ndk.debugSymbolLevel` is never written: Bugsee Gradle plugin 4.0.8 and + * later upload native symbols from the unstripped libraries in + * `merged_native_libs`, whatever the level, which only decides what AGP packs + * for Google Play (the app's own choice). The `debugSymbolLevel + * 'SYMBOL_TABLE'` block earlier versions wrote is removed, recognised by its + * marker and exact lines only; a level of the user's is left alone. The + * Hermes preserve command and the finish hook are the JS source-map path, + * so they are written either way. The hook * applies the package's scripts/bugsee-sourcemaps.gradle, which injects the * debug id and uploads the composed map unless `bugseeUploadSourcemaps=false` * or no real token is configured. @@ -752,7 +754,7 @@ export function ensureAppAppliesPlugin( next = dropNdkExclude(next); next = ensureNdkImplementation(next, ndkVersion, log); } - next = ensureSymbolTable(next, ndkVersion !== null); + next = removeInsertedSymbolTable(next, log); return ensurePluginApplied(ensureHermesHooks(next)); }); } @@ -907,6 +909,13 @@ function dropNdkExclude(source: string): string { return lines.join('\n'); } +/** + * The block earlier versions of this plugin wrote into the debug and release + * build types, kept verbatim so it can be recognised and removed. Its text is + * a fingerprint, not documentation: `libreactnative.so` is not pre-stripped + * (the Maven AAR ships it with DWARF), and with Gradle plugin 4.0.8 the + * native upload no longer depends on the level at all. + */ const SYMBOL_TABLE_BLOCK = [ "// bugsee-symbol-table: AGP defaults this to NONE, so the plugin's native upload finds", '// nothing and skips. SYMBOL_TABLE emits symbols for code this app', @@ -917,68 +926,6 @@ const SYMBOL_TABLE_BLOCK = [ '}', ]; -interface BuildTypeSpan { - readonly name: string; - readonly open: number; - readonly close: number; -} - -function buildTypeSpans(s: Scan): BuildTypeSpan[] { - const extent = blockExtent(s, 'buildTypes'); - if (!extent) { - return []; - } - const spans: BuildTypeSpan[] = []; - let depth = 0; - for (let i = extent.bodyStart; i < extent.bodyEnd; i += 1) { - const ch = s.masked[i]; - if (ch === '{') { - if (depth === 0) { - const name = /([A-Za-z_][A-Za-z0-9_]*)\s*$/.exec(s.masked.slice(extent.bodyStart, i))?.[1]; - if (name === 'debug' || name === 'release') { - spans.push({ name, open: i, close: matchingBrace(s.masked, i) }); - } - } - depth += 1; - } else if (ch === '}') { - depth -= 1; - } - } - return spans; -} - -function insertSymbolTable(source: string, span: BuildTypeSpan): string { - const s = scan(source, APP_GRADLE); - const opener = lineIndexAt(s, span.open); - const closer = lineIndexAt(s, span.close); - // The block this plugin wrote has an `ndk {` of its own, so it is covered here too. - if ( - codeMatches(s, /debugSymbolLevel\s+(['"])SYMBOL_TABLE\1/g, span.open, span.close).length > 0 || - blockExtent(s, 'ndk', span.open, span.close) !== null - ) { - return source; - } - // The block goes last, before the closing brace's line; the opener and the - // closer must each hold nothing but their brace, or the user's line would - // have to be split. - const openerLine = s.lines[opener] as Line; - const closerLine = s.lines[closer] as Line; - if (!isOpenerLine(openerLine, new RegExp(`^${span.name}\\s*\\{$`)) || !isCloserLine(closerLine)) { - const at = isCloserLine(closerLine) ? opener : closer; - throw anchorRefusal(APP_GRADLE, s.lines[at] as Line, at + 1, `debugSymbolLevel 'SYMBOL_TABLE' for the ${span.name} build type`, "set ndk { debugSymbolLevel 'SYMBOL_TABLE' } in it yourself"); - } - const indent = `${indentOf(openerLine.raw)} `; - return insertLines(source, closer, SYMBOL_TABLE_BLOCK.map((line) => `${indent}${line}`)); -} - -function ensureSymbolTable(source: string, enabled: boolean): string { - if (!enabled) { - return removeInsertedSymbolTable(source); - } - const spans = buildTypeSpans(scan(source, APP_GRADLE)).sort((a, b) => b.open - a.open); - return spans.reduce((current, span) => insertSymbolTable(current, span), source); -} - /** How many of Bugsee's symbol-table block lines stand at `start`, in order, at the marker's indentation. */ function symbolBlockLinesAt(lines: readonly Line[], start: number): number { const indent = indentOf((lines[start] as Line).raw); @@ -1003,13 +950,17 @@ function afterLineComments(lines: readonly Line[], start: number): number { return j; } +export const CHANGED_SYMBOL_BLOCK_NOTE = + '@bugsee/react-native: android/app/build.gradle has the symbol-table block an earlier version of the plugin wrote, changed inside; it is left as you have it. Bugsee no longer needs ndk.debugSymbolLevel, so you can remove the block, or keep it for Google Play'; + /** - * Removes exactly Bugsee's symbol-table block, at whatever indentation it - * stands, and nothing after it. A block whose marker lines are intact but - * whose body was changed (a user added a line inside) is refused rather than - * cut; a stray marker loses only its own matching comment lines. + * Removes exactly the symbol-table block earlier versions wrote, at whatever + * indentation it stands, and nothing after it. A block whose comment lines + * are intact but whose body was changed (a user added or edited a line + * inside) is the user's now: it is left alone and noted. A stray marker loses + * only its own matching comment lines. */ -function removeInsertedSymbolTable(source: string): string { +function removeInsertedSymbolTable(source: string, log: (message: string) => void): string { const s = scan(source, APP_GRADLE); const kept: string[] = []; for (let i = 0; i < s.lines.length; i += 1) { @@ -1020,11 +971,9 @@ function removeInsertedSymbolTable(source: string): string { continue; } if (matched < SYMBOL_TABLE_BLOCK.length && matched >= 4) { - throw refusal( - APP_GRADLE, - `line ${i + 1}: the Bugsee symbol-table block that starts here has been changed inside, so the plugin cannot tell its lines from yours`, - 'Restore the block as the plugin wrote it, or remove it and set ndk { debugSymbolLevel } yourself, then run expo prebuild again', - ); + log(CHANGED_SYMBOL_BLOCK_NOTE); + kept.push(line.raw); + continue; } i += matched - 1; } diff --git a/packages/react-native/plugin/src/index.ts b/packages/react-native/plugin/src/index.ts index 590e102..2d38c55 100644 --- a/packages/react-native/plugin/src/index.ts +++ b/packages/react-native/plugin/src/index.ts @@ -64,11 +64,13 @@ export interface BugseePluginProps { */ uploadSymbols?: boolean; /** - * Defaults on. Writes `plugin.ndk.enabled=true` for a real token, adds - * `com.bugsee:bugsee-android-ndk`, and sets `debugSymbolLevel 'SYMBOL_TABLE'` - * on existing debug and release build types. `false` skips the flag, strips - * that direct dependency, excludes the wrapper's NDK AAR, and removes the - * symbol block this plugin inserted. JS source-map hooks stay either way. + * Defaults on. Writes `plugin.ndk.enabled=true` for a real token and adds + * `com.bugsee:bugsee-android-ndk`; the Bugsee Gradle plugin then uploads + * native symbols from the unstripped libraries, whatever + * `ndk.debugSymbolLevel` says. `false` skips the flag, strips that direct + * dependency and excludes the wrapper's NDK AAR. Either way the plugin + * writes no `debugSymbolLevel`, and removes the symbol-table block earlier + * versions wrote. JS source-map hooks stay either way. */ nativeCrashReporting?: boolean; /** Defaults to native-versions.json `android.gradlePlugin`. */ diff --git a/scripts/check-expo-prebuild.sh b/scripts/check-expo-prebuild.sh index 3496e99..08d80a8 100755 --- a/scripts/check-expo-prebuild.sh +++ b/scripts/check-expo-prebuild.sh @@ -21,6 +21,13 @@ expect() { failures=$((failures + 1)) fi } +expect_none() { + local file="$1" needle="$2" + if grep -qF -- "$needle" "$file"; then + echo "::error file=examples/expo/$file::not expected: $needle" + failures=$((failures + 1)) + fi +} CI=1 yarn expo prebuild --clean --no-install @@ -33,7 +40,8 @@ expect android/app/build.gradle 'apply plugin: "com.bugsee.android.gradle"' expect android/app/build.gradle "implementation \"com.bugsee:bugsee-android-ndk:$sdk_version\"" expect android/app/build.gradle 'scripts/hermesc-preserve-js.sh' expect android/app/build.gradle 'scripts/bugsee-sourcemaps.gradle")' -expect android/app/build.gradle "debugSymbolLevel 'SYMBOL_TABLE'" +# Gradle plugin 4.0.8 reads unstripped libraries: the config plugin writes no level. +expect_none android/app/build.gradle 'debugSymbolLevel' expect android/bugsee.properties 'No app token configured.' expect ios/BugseeExpo.xcodeproj/project.pbxproj 'scripts/bugsee-xcode.sh' expect ios/BugseeExpo.xcodeproj/xcshareddata/xcschemes/BugseeExpo.xcscheme 'xcode post-action' diff --git a/yarn.lock b/yarn.lock index 72cf3bd..d4edb4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1960,58 +1960,58 @@ __metadata: languageName: node linkType: hard -"@bugsee/cli-darwin-arm64@npm:0.7.11": - version: 0.7.11 - resolution: "@bugsee/cli-darwin-arm64@npm:0.7.11" +"@bugsee/cli-darwin-arm64@npm:0.7.12": + version: 0.7.12 + resolution: "@bugsee/cli-darwin-arm64@npm:0.7.12" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@bugsee/cli-darwin-x64@npm:0.7.11": - version: 0.7.11 - resolution: "@bugsee/cli-darwin-x64@npm:0.7.11" +"@bugsee/cli-darwin-x64@npm:0.7.12": + version: 0.7.12 + resolution: "@bugsee/cli-darwin-x64@npm:0.7.12" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@bugsee/cli-linux-arm64@npm:0.7.11": - version: 0.7.11 - resolution: "@bugsee/cli-linux-arm64@npm:0.7.11" +"@bugsee/cli-linux-arm64@npm:0.7.12": + version: 0.7.12 + resolution: "@bugsee/cli-linux-arm64@npm:0.7.12" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@bugsee/cli-linux-x64@npm:0.7.11": - version: 0.7.11 - resolution: "@bugsee/cli-linux-x64@npm:0.7.11" +"@bugsee/cli-linux-x64@npm:0.7.12": + version: 0.7.12 + resolution: "@bugsee/cli-linux-x64@npm:0.7.12" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@bugsee/cli-win32-arm64@npm:0.7.11": - version: 0.7.11 - resolution: "@bugsee/cli-win32-arm64@npm:0.7.11" +"@bugsee/cli-win32-arm64@npm:0.7.12": + version: 0.7.12 + resolution: "@bugsee/cli-win32-arm64@npm:0.7.12" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@bugsee/cli-win32-x64@npm:0.7.11": - version: 0.7.11 - resolution: "@bugsee/cli-win32-x64@npm:0.7.11" +"@bugsee/cli-win32-x64@npm:0.7.12": + version: 0.7.12 + resolution: "@bugsee/cli-win32-x64@npm:0.7.12" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@bugsee/cli@npm:0.7.11": - version: 0.7.11 - resolution: "@bugsee/cli@npm:0.7.11" +"@bugsee/cli@npm:0.7.12": + version: 0.7.12 + resolution: "@bugsee/cli@npm:0.7.12" dependencies: - "@bugsee/cli-darwin-arm64": "npm:0.7.11" - "@bugsee/cli-darwin-x64": "npm:0.7.11" - "@bugsee/cli-linux-arm64": "npm:0.7.11" - "@bugsee/cli-linux-x64": "npm:0.7.11" - "@bugsee/cli-win32-arm64": "npm:0.7.11" - "@bugsee/cli-win32-x64": "npm:0.7.11" + "@bugsee/cli-darwin-arm64": "npm:0.7.12" + "@bugsee/cli-darwin-x64": "npm:0.7.12" + "@bugsee/cli-linux-arm64": "npm:0.7.12" + "@bugsee/cli-linux-x64": "npm:0.7.12" + "@bugsee/cli-win32-arm64": "npm:0.7.12" + "@bugsee/cli-win32-x64": "npm:0.7.12" dependenciesMeta: "@bugsee/cli-darwin-arm64": optional: true @@ -2027,7 +2027,7 @@ __metadata: optional: true bin: bugsee-cli: bin/bugsee-cli.js - checksum: 10c0/1e07fd39c1ffbe7b2f205ea95075155e3986d7dea80cc9c5f536b555174846a9db68034723e8eb7ffdd9d019a7beb2b88d53d45e6443559868b53bc0ecf59a3c + checksum: 10c0/5bcc24b20ac3699dcbd010a6777dfde94b56a1bd0b8ff2f8e564de18c7f134c98a04b1ce994d02e48880b4ba0d5274730cfd18f06f3fc8392e4e780e5c8f2975 languageName: node linkType: hard @@ -2047,7 +2047,7 @@ __metadata: version: 0.0.0-use.local resolution: "@bugsee/react-native@workspace:packages/react-native" dependencies: - "@bugsee/cli": "npm:0.7.11" + "@bugsee/cli": "npm:0.7.12" "@expo/config-plugins": "npm:~57.0.9" react-native: "npm:0.87.1" peerDependencies: