Add property Exportable to aconfig_declarations

Only when aconfig_declarations explicitly set this property true,
its flags will be repackaged.

If a java_aconfig_library has mode "exported", its corresponding
aconfig_declarations must have exportable prop set to true.

Test: Added unit tests and CI

Bug: 310504781

Ignore-AOSP-First: this change will be cherry picked to aosp
Change-Id: Ie9526e3755a6e7d142b377d5dd85a1bc60ffabc5
This commit is contained in:
Zi Wang
2024-02-07 16:13:31 -08:00
parent babff88cb8
commit e4527f3010
5 changed files with 42 additions and 6 deletions

View File

@@ -91,6 +91,12 @@ func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) GenerateSourceJarBuild
if !isModeSupported(mode) {
ctx.PropertyErrorf("mode", "%q is not a supported mode", mode)
}
// TODO: uncomment this part after internal clean up
//if mode == "exported" && !declarations.Exportable {
// // if mode is exported, the corresponding aconfig_declaration must mark its
// // exportable property true
// ctx.PropertyErrorf("mode", "exported mode requires its aconfig_declaration has exportable prop true")
//}
ctx.Build(pctx, android.BuildParams{
Rule: javaRule,
@@ -102,12 +108,15 @@ func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) GenerateSourceJarBuild
},
})
// Mark our generated code as possibly needing jarjar repackaging
// TODO: Maybe control this with a property?
module.AddJarJarRenameRule(declarations.Package+".Flags", "")
module.AddJarJarRenameRule(declarations.Package+".FeatureFlags", "")
module.AddJarJarRenameRule(declarations.Package+".FeatureFlagsImpl", "")
module.AddJarJarRenameRule(declarations.Package+".FakeFeatureFlagsImpl", "")
if declarations.Exportable {
// Mark our generated code as possibly needing jarjar repackaging
// The repackaging only happens when the corresponding aconfig_declaration
// has property exportable true
module.AddJarJarRenameRule(declarations.Package+".Flags", "")
module.AddJarJarRenameRule(declarations.Package+".FeatureFlags", "")
module.AddJarJarRenameRule(declarations.Package+".FeatureFlagsImpl", "")
module.AddJarJarRenameRule(declarations.Package+".FakeFeatureFlagsImpl", "")
}
return srcJarPath
}