Repository navigation
Conversation
This was referenced Oct 23, 2026
- Use pluginManager.withPlugin across com.android.application, com.android.library, com.android.test, and com.android.dynamic-feature (#62, #91) - Support unitTest and androidTest manifest placeholder injection across AGP 8.0-8.2 (HasUnitTest/HasAndroidTest) and AGP 8.3+/9.x (nestedComponents) (#41, #89, #96, #104) - Guard variant.buildConfigFields behind isBuildConfigEnabled so projects with buildFeatures.buildConfig=false emit zero warnings (#87) - Fix empty string ("") and backslash escaping in addParenthesisIfNeeded (#72, #81, #99) - Add 5-level property precedence with combined <variantName>.properties and module-local file fallback (#59) - Use Gradle Provider API (providers.fileContents) for Configuration Cache and Isolated Projects compatibility - Set kotlin.stdlib.default.dependency=false and compileOnly(libs.kotlin.stdlib) for zero runtime dependency leakage - Configure MavenPublication POM metadata (#28) - Add 3-tier automated test suite: 12 unit tests (SecretsPluginTest), 6 real-AGP Gradle TestKit functional tests (SecretsPluginFunctionalTest), and sample-app integration test (SecretsInjectionTest)
dkhawk
force-pushed
the
feat/modernize-plugin
branch
from
October 23, 2026 15:29
a9c18c4 to
9e30bdd
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Modernizes
secrets-gradle-pluginfor Gradle 8.x/9.x and Android Gradle Plugin (AGP) 8.x/9.x while preserving backwards compatibility, and adds a 3-tier automated test suite (including real-AGP Gradle TestKit functional tests).Key Changes
extensions.findByType(...)lookups withproject.pluginManager.withPlugin(...)acrosscom.android.application,com.android.library,com.android.test, andcom.android.dynamic-featuresoplugins {}block ordering never silently no-ops.variant.nestedComponents(AGP 8.3+/9.x) andHasUnitTest/HasAndroidTest(AGP 8.0–8.2) so:processDebugUnitTestManifest(Robolectric /isIncludeAndroidResources = true) and:processDebugAndroidTestManifestreceive all secret placeholders.buildFeatures.buildConfig = falseGuard (Warning in log : Accessing value buildConfigFields in variant has no effect as the feature buildConfig is disabled. #87): Checksproject.isBuildConfigEnabled(component)before touchingvariant.buildConfigFields, eliminating AGP warnings whenbuildConfigis disabled while still injecting manifest placeholders.buildConfig truewhich is required for BuildConfig generation #72, File leak inloadPropertiesFile()function within Extensions.kt #81, Create devcontainer.json"ghcr.io/wxw-matt/devcontainer-features/scrip… #99): FixesString.addParenthesisIfNeeded()for empty strings (""->"") and escapes backslashes (\->\\) so Windows file paths compile cleanly inBuildConfig.java.defaultPropertiesFileName<propertiesFileName<${variant.buildType}.properties<${variant.flavorName}.properties<${variant.name}.properties, with fallback from the root project directory to the module directory.project.providers.fileContents(...)androotDir/projectDirso Gradle tracks secret files as configuration inputs and invalidates the configuration cache automatically when secrets rotate.com.android.tools.build:gradle-apiwithkotlin.stdlib.default.dependency=falseandcompileOnly(libs.kotlin.stdlib), and configuresMavenPublicationPOM metadata.SecretsPluginTest(12 unit tests)SecretsPluginFunctionalTest(6 real-AGP Gradle TestKitGradleRunnerend-to-end tests):sample-appSecretsInjectionTestintegration testFixes #28
Fixes #41
Fixes #59
Fixes #62
Fixes #81
Fixes #87
Fixes #89
Fixes #91
Fixes #96
Fixes #104