Repository navigation
test: add Java and Kotlin consumer fixtures built against the published artifacts - #848
nickolas-dimitrakas wants to merge 1 commit into
Conversation
📦 SDK Size Impact ReportWhat the SDK adds to a minified release APK. Measured against an empty baseline app. Unlike the Rokt kit, android-core ships no Compose and no resources, so there is nothing here that a host app would already provide. mParticle Core SDK
➡️ SDK size impact change is minimal. Raw measurementsTarget branch: {"baseline_dex_bytes": 0, "baseline_download_bytes": 2512, "baseline_install_bytes": 7528, "core_dex_bytes": 218884, "core_download_bytes": 122936, "core_install_bytes": 130189}This PR: {"baseline_dex_bytes": 0, "baseline_download_bytes": 2511, "baseline_install_bytes": 7528, "core_dex_bytes": 218884, "core_download_bytes": 122933, "core_install_bytes": 130183} |
c36984d to
b7711a1
Compare
📦 SDK Size Impact ReportWhat the SDK adds to a minified release APK. Measured against a Compose + Material3 reference app, so these are the costs on top of an app that already ships Compose. The reference app's dependencies are a documented convention, not a measured average: see mParticle Core + Rokt kit
Rokt SDK+ umbrella (adds the payment extension)
➡️ SDK size impact change is minimal. Raw measurementsTarget branch: {"baseline_dex_bytes": 1829108, "baseline_download_bytes": 1240062, "baseline_install_bytes": 1300934, "kit_dex_bytes": 4274892, "kit_download_bytes": 2596898, "kit_install_bytes": 2674686, "sdkplus_dex_bytes": 9305380, "sdkplus_download_bytes": 7989542, "sdkplus_install_bytes": 8165359}This PR: {"baseline_dex_bytes": 1829108, "baseline_download_bytes": 1240062, "baseline_install_bytes": 1300934, "kit_dex_bytes": 4274892, "kit_download_bytes": 2596899, "kit_install_bytes": 2674686, "sdkplus_dex_bytes": 9305380, "sdkplus_download_bytes": 7989544, "sdkplus_install_bytes": 8165359} |
PR SummaryLow Risk Overview Both fixtures resolve Integrates a new fixture build step into the CI Reviewed by Cursor Bugbot for commit 6486216. Bugbot is set up for automated code reviews on this repo. Configure here. |
7eb34ef to
ca72427
Compare
42a659c to
68ca013
Compare
…ed artifacts Add compat/java-consumer and compat/kotlin-consumer, two unpublished library modules that compile the documented API and a full KitIntegration listener set against the com.mparticle:android-core and android-kit-base artifacts in mavenLocal, resolved only from there so the version under review is the one exercised. The module build in settings.gradle compiles against source and cannot see what R8 or retained Kotlin metadata does to the published surface; these fixtures fail instead. The Kit Compatibility Test job builds them right after publishing core to mavenLocal. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
68ca013 to
6486216
Compare
Summary
Adds two small, unpublished
com.android.librarymodules undercompat/that compile against the publishedcom.mparticle:android-core(R8-minified) andcom.mparticle:android-kit-baseartifacts the way an integrating app and a third-party kit do:java-consumerfrom Java andkotlin-consumerfrom Kotlin withallWarningsAsErrors. Each exercises the documented API and aKitIntegrationsubclass that implements every listener interface. Nothing runs; the modules exist to fail to compile when the shipped API changes in a way the module build cannot see.settings-compat.gradlekeeps the modules out of the main build, like the kits.com.mparticleonly frommavenLocal()at the version under review, mirroringKitPlugin.configureRepositories, so the previous Maven Central release can never be picked up by mistake../gradlew -c settings-compat.gradle assembleDebugafter the kit release tests, where core has already been published to Maven Local.compat/README.mdexplains the purpose and how to run the fixtures locally.Finding
Compiling the Kotlin fixture against the published 6.1.2 AAR fails on
CoreCallbacks.KitListener.Companionand.EMPTYwithUnresolved reference 'Companion'. R8 renames the companion object toKitListener$bwhile the retainedkotlin.Metadatastill namesCompanion, so Kotlin consumers cannot resolve it (Java consumers can, sinceEMPTYsurvives as a static field on the interface). The probe was removed from the fixture so the module builds; the fix is a ProGuard-rules change and will come as its own pull request.Verification
./gradlew publishMavenPublicationToMavenLocal -PVERSION=6.1.2, then./gradlew -c settings-compat.gradle assembleDebug -PVERSION=6.1.2: passes with no warnings../gradlew -c settings-compat.gradle ktlintCheck: passes.~/.m2) fails resolution, confirming Central is excluded forcom.mparticle.Follow-ups
./gradlew -c settings-compat.gradle ktlintCheckto the Kotlin Lint Checks job so fixture formatting is enforced in CI.JAVA_VERSIONingradle.propertiesrather than a literal.🤖 Generated with Claude Code