Skip to content

Add automated ABI and published-coordinate compatibility checks #89

Description

@easyhooon

Summary

Add automated compatibility checks for dari-core so Kotlin Multiplatform publication changes cannot silently break existing Android consumers.

Motivation

PR #88 moves dari-core from a single Android AAR to Kotlin Multiplatform publications. Its source-level smoke tests and manual AAR comparison provide useful confidence, but CI does not currently:

  • compare the generated Android/JVM ABI with a stable baseline or the latest released artifact;
  • compile a clean external Android consumer that resolves the existing io.github.easyhooon:dari-core:<version> coordinate from a locally published repository.

This follows up on the API compatibility requirement in #13.

Proposed Approach

  • Add an ABI baseline/check using a suitable tool such as Kotlin Binary Compatibility Validator, Metalava, or JApiCmp.
  • Publish dari-core to an isolated local Maven repository with publication signing disabled.
  • Add a minimal external Android consumer that depends on the legacy root coordinate.
  • Verify that Gradle metadata selects the dari-core-android variant and that the consumer compiles.
  • Run these checks when dari-core, Gradle configuration, or publication configuration changes.

Acceptance Criteria

  • CI fails when an existing public Android/JVM signature is removed or changed incompatibly.
  • A clean Android consumer compiles against io.github.easyhooon:dari-core:<version> from the generated local repository.
  • The test does not rely on project dependencies that bypass published metadata.
  • The compatibility workflow is documented and runs without release signing credentials.

Related

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions