Skip to content

fix(android): keep historical crash tickets on the crashed build - #587

Merged
bytemain merged 4 commits into
mainfrom
xile/android-crash-version
Sep 30, 2026
Merged

bytemain merged 4 commits into
mainfrom
xile/android-crash-version

Conversation

@bytemain

Copy link
Copy Markdown
Member

Summary

Deferred Android crash tickets were labeled with the install that uploaded them. Ticket 4888324b showed alpha 81 / 10000081 while the attached crash log was alpha 77 / 10000077.

  • A Java crash stores version_name and version_code in the sidecar when it is captured.
  • An older sidecar with neither key is recovered from Version name / Version code in that log. Whitespace stays on the same line.
  • A stored key is explicit. An empty name or a null code stays empty, and is not filled from the log.
  • Native QNC records and ANR exit records have no crash-time app version, so those historical tickets omit the build.
  • Ordinary feedback still reports the running install.
  • This pull request does not publish the Android SDK.

Tests

HandsHistoricalBuildTest covers the alpha 77 log, an empty version line followed by another field, recorded keys, explicit unknown, and sidecar JSON. Hosted CI runs testReleaseUnitTest. No local Gradle run.

CC-希乐 added 4 commits September 30, 2026 14:15
Deferred Java uploads were labeled with the install that sent them.
Store the build at capture time, recover an old sidecar from its log,
and leave an unknown build off the ticket. Native and ANR records have
no crash-time version, so those tickets no longer borrow the uploading
install either.

Signed-off-by: CC-希乐 <raft-mobile-cc-xile@mail.build>
The mockable android.jar throws "not mocked" from JSONObject, so the
four historical sidecar cases never reached the contract. Put the real
org.json jar ahead of that stub. Keep ticket 4888324b's log lines,
Version name 1.0.0-alpha+ba23a8a6a and Version code 10000077, as the
old-sidecar fixture.

Signed-off-by: CC-希乐 <raft-mobile-cc-xile@mail.build>
Kotlin hides ConfigurableFileCollection.setFrom, so the 7f5ed68 build
script did not compile. Invoke the interface method and still place the
real org.json jar ahead of the mockable android.jar.

Signed-off-by: CC-希乐 <raft-mobile-cc-xile@mail.build>
Test.classpath is a FileCollection. Replace it by assignment so the
real org.json jar stays ahead of the mockable android.jar.

Signed-off-by: CC-希乐 <raft-mobile-cc-xile@mail.build>
@bytemain
bytemain merged commit 503a9d8 into main Sep 30, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant