Skip to content

Conversation

@grablack
Copy link
Contributor

@grablack grablack commented Dec 1, 2025

  • Add version override properties in gradle.properties for matrix testing
  • Wire version overrides in library/build.gradle with helper function
  • Add dependency constraints for AndroidX and Material (using prefer() for now)
  • Enable dependency locking for reproducible builds
  • Change OkHttp from api to implementation (not exposed in public API)
  • Add resolution strategy to handle transitive conflicts gracefully
  • Create docs/androidx-compatibility.md with compatibility guide
  • Add CI workflow for AndroidX compatibility matrix testing
  • Update README with AndroidX compatibility section
  • Generate and commit dependency lockfile

Description

Screenshots

Testing instructions

- Add version override properties in gradle.properties for matrix testing
- Wire version overrides in library/build.gradle with helper function
- Add dependency constraints for AndroidX and Material (using prefer() for now)
- Enable dependency locking for reproducible builds
- Change OkHttp from api to implementation (not exposed in public API)
- Add resolution strategy to handle transitive conflicts gracefully
- Create docs/androidx-compatibility.md with compatibility guide
- Add CI workflow for AndroidX compatibility matrix testing
- Update README with AndroidX compatibility section
- Generate and commit dependency lockfile
@grablack grablack changed the title Implement AndroidX dependency tightening and compatibility testing refactor - Implement AndroidX dependency tightening and compatibility testing Dec 1, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Dec 1, 2025

Code Coverage

Total Project Coverage 54.57%

- Update constraints to use strictly() with version ranges after CI validation
- Set minimum safe versions based on matrix testing results:
  - androidx.core:core-ktx >= 1.8.0
  - androidx.appcompat:appcompat >= 1.4.2
  - androidx.activity:activity-compose >= 1.6.1
  - com.google.android.material:material >= 1.8.0
- Update documentation with validated minimum versions and test results
- All version combinations passed CI matrix testing
- Change Material from 'api' to 'implementation' to stop forcing version on consumers
- Consumers must now add their own Material dependency (>= 1.8.0)
- Use minimum safe versions in dependency declarations to maximize compatibility
- Remove strictly() constraints (only affected SDK builds, not consumers)
- Update documentation with new consumer requirements

This significantly reduces version conflicts for merchant apps:
- Material no longer forced from SDK
- Core KTX uses 1.8.0 (down from 1.10.1)
- AppCompat uses 1.4.2 (down from 1.6.1)
- Gradle can resolve to consumer's preferred versions
- Changed Material dependency from 'implementation' to 'api' to allow consumers to automatically use the version they specify.
- Updated documentation to reflect that Material Components (1.8.0) are now provided by the SDK, minimizing version conflicts.
- Clarified that Gradle will resolve to the higher version if the consumer's app uses a newer version.
- Removed previous requirement for consumers to manually add Material dependency, streamlining integration.
- Added steps to update the lockfile for version overrides and baseline versions in the CI workflow.
- Ensured that the lockfile reflects the specified AndroidX and Material versions for consistent builds.
- Adjusted the Compose BOM version in the CI workflow to reflect the minimum safe version of 2023.03.00, ensuring compatibility with stable APIs.
- Updated documentation to indicate the tested versions of the Compose BOM, clarifying the minimum safe version for users.
- Disabled ViewBinding in the build configuration to prevent consumers from needing to align ViewBinding/AGP versions.
- Updated documentation to reflect the removal of ViewBinding, simplifying integration for merchant apps.
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.

2 participants