Repository navigation
build(samples): [Sample Tests 45] Move the Android sample to its own build - #6392
Merged
runningcode merged 20 commits intoNov 6, 2026
Merged
Conversation
This was referenced Oct 27, 2026
Merged
Merged
📲 Install BuildsAndroid
|
runningcode
force-pushed
the
no/samples-build-groundwork
branch
from
October 27, 2026 14:33
5ef89c4 to
c18fe91
Compare
runningcode
force-pushed
the
no/android-sample-own-build
branch
from
October 27, 2026 14:33
f28da1f to
63b12f6
Compare
runningcode
force-pushed
the
no/android-sample-own-build
branch
from
October 27, 2026 15:08
63b12f6 to
e4a9b5a
Compare
runningcode
force-pushed
the
no/samples-build-groundwork
branch
from
October 27, 2026 15:08
c18fe91 to
95d364c
Compare
runningcode
force-pushed
the
no/android-sample-own-build
branch
from
October 28, 2026 10:09
e4a9b5a to
c44fa03
Compare
runningcode
force-pushed
the
no/samples-build-groundwork
branch
2 times, most recently
from
October 28, 2026 10:38
1bd946c to
fa34787
Compare
runningcode
force-pushed
the
no/android-sample-own-build
branch
from
October 28, 2026 10:38
c44fa03 to
b454372
Compare
runningcode
force-pushed
the
no/samples-build-groundwork
branch
from
October 28, 2026 16:32
fa34787 to
e796595
Compare
runningcode
force-pushed
the
no/android-sample-own-build
branch
from
October 28, 2026 16:32
b454372 to
0da6737
Compare
The Android sample is now a standalone Gradle build that includes the SDK build. It depends on io.sentry:* coordinates, which Gradle substitutes with the SDK's projects, so there is nothing to publish first. The SDK build doesn't include it back, so the sample's plugins (KSP, SQLDelight, Room, CameraX) no longer load in the SDK build. The macrobenchmark moves into the sample's build, because AGP requires a benchmark and the app it targets to be in the same build. Root check and spotlessApply no longer reach the sample, so preMerge runs the sample build's check, and the format workflow runs its spotlessApply. That check covers what the root check ran for it: lint, unit tests, SQLDelight migrations and spotless. Run it with ./gradlew -p sentry-samples/sentry-samples-android <task>. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Instead of adding it to `make preMerge`, which the SDK's Build job runs, a new Samples workflow runs the Android sample build's `check` as its own job. A broken sample then fails its own check, it runs in parallel with the SDK build, and the Build job doesn't get longer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he Samples workflow Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…les workflow The head-SHA ref only matters for build.yml's snapshot upload, and the repository has had no submodules since #3189. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ld's gradle.properties, gradlew, gradle/wrapper and gradle/gradle-daemon-jvm.properties are now symlinks to the SDK build's files. Both builds pick the same daemon JDK and JVM arguments, so they can share a daemon, and the sample reads the SDK version from the versionName property instead of parsing the root file. The copied gradle.properties had drifted from the root one (-Xmx6g and CrashOnOutOfMemoryError instead of -Xmx8g and HeapDumpOnOutOfMemoryError). Dependabot also scans the sample build, so the Develocity plugins in its settings stay current. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The samples and integration test builds have no unit tests, and phoenix-actions/test-reporting fails the job when it finds no JUnit XML, even with fail-on-error set to false. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
runningcode
force-pushed
the
no/android-sample-own-build
branch
from
November 5, 2026 16:06
1992d3b to
d5f25ea
Compare
The root spotlessApply can't reach the Android sample, because the SDK build doesn't include it. make format runs spotlessApply in the root and in the sample build, and the format workflow, AGENTS.md, CONTRIBUTING.md and the create-java-pr skill use it. CONTRIBUTING.md already documented make format, which #4476 removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
runningcode
marked this pull request as ready for review
November 5, 2026 16:45
runningcode
requested review from
markushi and
romtsn
and removed request for
a team
November 5, 2026 16:45
The sample's settings now add versionName to the catalog as libs.versions.sentry, as the other separate builds do, and use the root build's Develocity plugin version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sentry-uitest-android, sentry-uitest-android-critical and test-app-size are now a standalone Gradle build that includes the SDK build, like the Android sample. They depend on io.sentry:* coordinates, which Gradle substitutes with the SDK's projects, including the unpublished sentry-test-support. The SDK build doesn't include them back, so SAGP, errorprone's uitest checks and their AndroidX test dependencies no longer load in the SDK build. AGP stays shared: a composite build can only use one AGP version, so the AGP matrix job's VERSION_AGP still applies to both builds. Root check and spotlessApply no longer reach these apps, so preMerge runs this build's check, which covers what the root check ran for them: lint, detekt and spotless. The format workflow runs its spotlessApply, and the AGP matrix, UI test and size workflows call it with -p. APK paths don't change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…workflow Adds the integration tests build to the Samples workflow's matrix instead of a `make preMerge` target. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With the Android sample and integration tests in their own builds, no project in the SDK build applies the Sentry Android Gradle Plugin. The root no longer declares it or looks it up in mavenLocal when useSagp is set; those builds declare it and handle useSagp themselves. The root keeps the AGP declaration: the SDK's Android modules apply com.android.library without a version and get AGP from it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uild's gradle.properties, gradlew, gradle/wrapper and gradle/gradle-daemon-jvm.properties are now symlinks to the SDK build's files, as in the Android sample. The copied gradle.properties had drifted from the root one (-Xmx6g and CrashOnOutOfMemoryError), and the build had no wrapper or daemon JDK pin. The SDK version now comes from the shared versionName property instead of parsing the root file. The root drops android.experimental.lint.version. It equals the lint bundled with AGP 9.4.0, so it changes nothing for the SDK build, and sentry-uitest-android's warningsAsErrors fails on it once the integration tests share the root gradle.properties. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adding or removing a project then changes only its own line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… versions current The integration tests' settings use the root build's Develocity plugin version, and Dependabot also scans their build, as it does the Android sample's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ettings Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
romtsn
reviewed
Nov 6, 2026
Contributor
There was a problem hiding this comment.
I noticed we repeat some of this logic across the rest of the PR stack -- should we perhaps extract it into a shared settings plugin in build-logic?
romtsn
approved these changes
Nov 6, 2026
romtsn
left a comment
Contributor
There was a problem hiding this comment.
LGTM, just one suggestion could be done in a follow-up
…own-build build(samples): [Sample Tests 46] Move the Android integration tests to their own build
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Stack (Sample Tests)
main)📜 Description
I had my clanker make a nice little visual of what these changes look like. For context, in the before picture we had just the
SDK buildin blue and thebuild-logicin grey. The sample builds were a part of the blue SDK build. We're now pulling them out so that we can isolate the versions.Since we have separate builds tasks need to be invoked separately now. You can't run spotless for the whole build anymore in a single gradle invocation.
💡 Motivation and Context
Part of the Linear project "Separate sample projects and tests from build." (JAVA-626): untie the SDK build from the versions used to test. This takes over from #6047, without that PR's include from the root build back into the sample. Including it back would put the sample's plugins and versions into the SDK build again.
💚 How did you test it?
Passes CI
📝 Checklist
sendDefaultPIIis enabled.🔮 Next steps
#6393 moves the Android integration tests to their own build.
#skip-changelog
🤖 Generated with Claude Code