Google's OSS Licenses plugin flags its task as
notCompatibleWithConfigurationCache(), which causes the entire
configuration cache to be discarded on each build that triggers it.
The plugin also does not support edge-to-edge and uses old AppCompat UI.
This replaces the plugin with cashapp/licensee, which:
- Is configuration-cache compatible
- Has no runtime dependency (build-time only Gradle plugin)
- Enables a Compose-based licenses screen with Material 3 support
- Adds license validation via an allow-list
Changes:
- Replace oss-licenses-plugin with cashapp/licensee in Gradle config
- Remove play-services-oss-licenses runtime dependency
- Remove OssLicensesMenuActivity/OssLicensesActivity declarations
- Add licensee configuration with allowed SPDX licenses
- Add Gradle task to copy licensee artifacts.json to app assets
- Create Compose LicensesScreen to display license data
- Update SettingsDialog to navigate to new LicensesScreen
Fixes#1022
Test: ./gradlew installDemoDebug, manual verification of licenses screen
Updated string resource identifiers in the `SettingsDialogTest` to follow the `feature_settings_impl_` prefix convention. This aligns the test resources with the recent module renaming.
The `feature:settings:api` module has been renamed to `feature:settings:impl` to better reflect its role as an implementation module.
This change includes:
* Updating module paths and namespaces.
* Moving all related files, including source code, resources, and tests, to the new `impl` directory.
* Updating dependencies and project configurations in Gradle scripts and README files to point to the new module path.
* Renaming string resources to include the `_impl` suffix for clarity.
* Updating the AndroidX Lifecycle dependency to version 2.10.0.
This is a followup cleanup of #1163 that was partially addressed by #1140.
- Remove unused `projects.core.testing` dependencies (or replace with direct dependencies).
- Introduce `androidx.compose.ui.test` bundle.
- Remove `NiaTestRunner` from the default config, forcing consumers to depend on it, even when not used.
- Reduce the visibility of multiple Hilt `Module`s and implementations of public interfaces
- Correctly configure the visibility of dependencies:
- `api` when it's part of it's public `api`
- `implementation` when it's part of it's internal `implementation`
- Remove unnecessary dependencies in build.gradle.kts files
- Remove unnecessary dependencies provided by plugins
- Remove unnecessary applied plugins (i.e. roborazzi)
- Sort dependencies in `build.gradle.kts`
- Delete unused entries in `libs.versions.toml`