Loading java/aar.go +8 −0 Original line number Original line Diff line number Diff line Loading @@ -104,6 +104,9 @@ type aaptProperties struct { // Filter only specified product and ignore other products // Filter only specified product and ignore other products Filter_product *string `blueprint:"mutated"` Filter_product *string `blueprint:"mutated"` // Names of aconfig_declarations modules that specify aconfig flags that the module depends on. Flags_packages []string } } type aapt struct { type aapt struct { Loading Loading @@ -804,6 +807,10 @@ func (a *AndroidLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { a.aapt.deps(ctx, sdkDep) a.aapt.deps(ctx, sdkDep) } } a.usesLibrary.deps(ctx, false) a.usesLibrary.deps(ctx, false) for _, aconfig_declaration := range a.aaptProperties.Flags_packages { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration) } } } func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { Loading @@ -817,6 +824,7 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) sdkContext: android.SdkContext(a), sdkContext: android.SdkContext(a), classLoaderContexts: a.classLoaderContexts, classLoaderContexts: a.classLoaderContexts, enforceDefaultTargetSdkVersion: false, enforceDefaultTargetSdkVersion: false, aconfigTextFiles: getAconfigFilePaths(ctx), }, }, ) ) Loading java/aar_test.go +47 −0 Original line number Original line Diff line number Diff line Loading @@ -81,3 +81,50 @@ func TestAarImportProducesJniPackages(t *testing.T) { }) }) } } } } func TestLibraryFlagsPackages(t *testing.T) { result := android.GroupFixturePreparers( prepareForJavaTest, ).RunTestWithBp(t, ` android_library { name: "foo", srcs: ["a.java"], sdk_version: "current", flags_packages: [ "bar", "baz", ], } aconfig_declarations { name: "bar", package: "com.example.package.bar", srcs: [ "bar.aconfig", ], } aconfig_declarations { name: "baz", package: "com.example.package.baz", srcs: [ "baz.aconfig", ], } `) foo := result.ModuleForTests("foo", "android_common") // android_library module depends on aconfig_declarations listed in flags_packages android.AssertBoolEquals(t, "foo expected to depend on bar", true, CheckModuleHasDependency(t, result.TestContext, "foo", "android_common", "bar")) android.AssertBoolEquals(t, "foo expected to depend on baz", true, CheckModuleHasDependency(t, result.TestContext, "foo", "android_common", "baz")) aapt2LinkRule := foo.Rule("android/soong/java.aapt2Link") linkInFlags := aapt2LinkRule.Args["inFlags"] android.AssertStringDoesContain(t, "aapt2 link command expected to pass feature flags arguments", linkInFlags, "--feature-flags @out/soong/.intermediates/bar/intermediate.txt --feature-flags @out/soong/.intermediates/baz/intermediate.txt", ) } java/app.go +20 −20 Original line number Original line Diff line number Diff line Loading @@ -169,9 +169,6 @@ type overridableAppProperties struct { // binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed // binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed // from PRODUCT_PACKAGES. // from PRODUCT_PACKAGES. Overrides []string Overrides []string // Names of aconfig_declarations modules that specify aconfig flags that the app depends on. Flags_packages []string } } type AndroidApp struct { type AndroidApp struct { Loading Loading @@ -290,6 +287,10 @@ func (a *AndroidApp) DepsMutator(ctx android.BottomUpMutatorContext) { } } a.usesLibrary.deps(ctx, sdkDep.hasFrameworkLibs()) a.usesLibrary.deps(ctx, sdkDep.hasFrameworkLibs()) for _, aconfig_declaration := range a.aaptProperties.Flags_packages { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration) } } } func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutatorContext) { func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutatorContext) { Loading Loading @@ -317,10 +318,6 @@ func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutato `must be names of android_app_certificate modules in the form ":module"`) `must be names of android_app_certificate modules in the form ":module"`) } } } } for _, aconfig_declaration := range a.overridableAppProperties.Flags_packages { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration) } } } func (a *AndroidTestHelperApp) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (a *AndroidTestHelperApp) GenerateAndroidBuildActions(ctx android.ModuleContext) { Loading Loading @@ -457,6 +454,21 @@ func (a *AndroidApp) renameResourcesPackage() bool { return proptools.BoolDefault(a.overridableAppProperties.Rename_resources_package, true) return proptools.BoolDefault(a.overridableAppProperties.Rename_resources_package, true) } } func getAconfigFilePaths(ctx android.ModuleContext) (aconfigTextFilePaths android.Paths) { ctx.VisitDirectDepsWithTag(aconfigDeclarationTag, func(dep android.Module) { if provider, ok := android.OtherModuleProvider(ctx, dep, android.AconfigDeclarationsProviderKey); ok { aconfigTextFilePaths = append(aconfigTextFilePaths, provider.IntermediateDumpOutputPath) } else { ctx.ModuleErrorf("Only aconfig_declarations module type is allowed for "+ "flags_packages property, but %s is not aconfig_declarations module type", dep.Name(), ) } }) return aconfigTextFilePaths } func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { usePlatformAPI := proptools.Bool(a.Module.deviceProperties.Platform_apis) usePlatformAPI := proptools.Bool(a.Module.deviceProperties.Platform_apis) if ctx.Module().(android.SdkContext).SdkVersion(ctx).Kind == android.SdkModule { if ctx.Module().(android.SdkContext).SdkVersion(ctx).Kind == android.SdkModule { Loading Loading @@ -507,18 +519,6 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { a.aapt.defaultManifestVersion = android.DefaultUpdatableModuleVersion a.aapt.defaultManifestVersion = android.DefaultUpdatableModuleVersion } } var aconfigTextFilePaths android.Paths ctx.VisitDirectDepsWithTag(aconfigDeclarationTag, func(dep android.Module) { if provider, ok := android.OtherModuleProvider(ctx, dep, android.AconfigDeclarationsProviderKey); ok { aconfigTextFilePaths = append(aconfigTextFilePaths, provider.IntermediateDumpOutputPath) } else { ctx.ModuleErrorf("Only aconfig_declarations module type is allowed for "+ "flags_packages property, but %s is not aconfig_declarations module type", dep.Name(), ) } }) a.aapt.buildActions(ctx, a.aapt.buildActions(ctx, aaptBuildActionOptions{ aaptBuildActionOptions{ sdkContext: android.SdkContext(a), sdkContext: android.SdkContext(a), Loading @@ -526,7 +526,7 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { excludedLibs: a.usesLibraryProperties.Exclude_uses_libs, excludedLibs: a.usesLibraryProperties.Exclude_uses_libs, enforceDefaultTargetSdkVersion: a.enforceDefaultTargetSdkVersion(), enforceDefaultTargetSdkVersion: a.enforceDefaultTargetSdkVersion(), extraLinkFlags: aaptLinkFlags, extraLinkFlags: aaptLinkFlags, aconfigTextFiles: aconfigTextFilePaths, aconfigTextFiles: getAconfigFilePaths(ctx), }, }, ) ) Loading Loading
java/aar.go +8 −0 Original line number Original line Diff line number Diff line Loading @@ -104,6 +104,9 @@ type aaptProperties struct { // Filter only specified product and ignore other products // Filter only specified product and ignore other products Filter_product *string `blueprint:"mutated"` Filter_product *string `blueprint:"mutated"` // Names of aconfig_declarations modules that specify aconfig flags that the module depends on. Flags_packages []string } } type aapt struct { type aapt struct { Loading Loading @@ -804,6 +807,10 @@ func (a *AndroidLibrary) DepsMutator(ctx android.BottomUpMutatorContext) { a.aapt.deps(ctx, sdkDep) a.aapt.deps(ctx, sdkDep) } } a.usesLibrary.deps(ctx, false) a.usesLibrary.deps(ctx, false) for _, aconfig_declaration := range a.aaptProperties.Flags_packages { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration) } } } func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { Loading @@ -817,6 +824,7 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) sdkContext: android.SdkContext(a), sdkContext: android.SdkContext(a), classLoaderContexts: a.classLoaderContexts, classLoaderContexts: a.classLoaderContexts, enforceDefaultTargetSdkVersion: false, enforceDefaultTargetSdkVersion: false, aconfigTextFiles: getAconfigFilePaths(ctx), }, }, ) ) Loading
java/aar_test.go +47 −0 Original line number Original line Diff line number Diff line Loading @@ -81,3 +81,50 @@ func TestAarImportProducesJniPackages(t *testing.T) { }) }) } } } } func TestLibraryFlagsPackages(t *testing.T) { result := android.GroupFixturePreparers( prepareForJavaTest, ).RunTestWithBp(t, ` android_library { name: "foo", srcs: ["a.java"], sdk_version: "current", flags_packages: [ "bar", "baz", ], } aconfig_declarations { name: "bar", package: "com.example.package.bar", srcs: [ "bar.aconfig", ], } aconfig_declarations { name: "baz", package: "com.example.package.baz", srcs: [ "baz.aconfig", ], } `) foo := result.ModuleForTests("foo", "android_common") // android_library module depends on aconfig_declarations listed in flags_packages android.AssertBoolEquals(t, "foo expected to depend on bar", true, CheckModuleHasDependency(t, result.TestContext, "foo", "android_common", "bar")) android.AssertBoolEquals(t, "foo expected to depend on baz", true, CheckModuleHasDependency(t, result.TestContext, "foo", "android_common", "baz")) aapt2LinkRule := foo.Rule("android/soong/java.aapt2Link") linkInFlags := aapt2LinkRule.Args["inFlags"] android.AssertStringDoesContain(t, "aapt2 link command expected to pass feature flags arguments", linkInFlags, "--feature-flags @out/soong/.intermediates/bar/intermediate.txt --feature-flags @out/soong/.intermediates/baz/intermediate.txt", ) }
java/app.go +20 −20 Original line number Original line Diff line number Diff line Loading @@ -169,9 +169,6 @@ type overridableAppProperties struct { // binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed // binaries would be installed by default (in PRODUCT_PACKAGES) the other binary will be removed // from PRODUCT_PACKAGES. // from PRODUCT_PACKAGES. Overrides []string Overrides []string // Names of aconfig_declarations modules that specify aconfig flags that the app depends on. Flags_packages []string } } type AndroidApp struct { type AndroidApp struct { Loading Loading @@ -290,6 +287,10 @@ func (a *AndroidApp) DepsMutator(ctx android.BottomUpMutatorContext) { } } a.usesLibrary.deps(ctx, sdkDep.hasFrameworkLibs()) a.usesLibrary.deps(ctx, sdkDep.hasFrameworkLibs()) for _, aconfig_declaration := range a.aaptProperties.Flags_packages { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration) } } } func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutatorContext) { func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutatorContext) { Loading Loading @@ -317,10 +318,6 @@ func (a *AndroidApp) OverridablePropertiesDepsMutator(ctx android.BottomUpMutato `must be names of android_app_certificate modules in the form ":module"`) `must be names of android_app_certificate modules in the form ":module"`) } } } } for _, aconfig_declaration := range a.overridableAppProperties.Flags_packages { ctx.AddDependency(ctx.Module(), aconfigDeclarationTag, aconfig_declaration) } } } func (a *AndroidTestHelperApp) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (a *AndroidTestHelperApp) GenerateAndroidBuildActions(ctx android.ModuleContext) { Loading Loading @@ -457,6 +454,21 @@ func (a *AndroidApp) renameResourcesPackage() bool { return proptools.BoolDefault(a.overridableAppProperties.Rename_resources_package, true) return proptools.BoolDefault(a.overridableAppProperties.Rename_resources_package, true) } } func getAconfigFilePaths(ctx android.ModuleContext) (aconfigTextFilePaths android.Paths) { ctx.VisitDirectDepsWithTag(aconfigDeclarationTag, func(dep android.Module) { if provider, ok := android.OtherModuleProvider(ctx, dep, android.AconfigDeclarationsProviderKey); ok { aconfigTextFilePaths = append(aconfigTextFilePaths, provider.IntermediateDumpOutputPath) } else { ctx.ModuleErrorf("Only aconfig_declarations module type is allowed for "+ "flags_packages property, but %s is not aconfig_declarations module type", dep.Name(), ) } }) return aconfigTextFilePaths } func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { usePlatformAPI := proptools.Bool(a.Module.deviceProperties.Platform_apis) usePlatformAPI := proptools.Bool(a.Module.deviceProperties.Platform_apis) if ctx.Module().(android.SdkContext).SdkVersion(ctx).Kind == android.SdkModule { if ctx.Module().(android.SdkContext).SdkVersion(ctx).Kind == android.SdkModule { Loading Loading @@ -507,18 +519,6 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { a.aapt.defaultManifestVersion = android.DefaultUpdatableModuleVersion a.aapt.defaultManifestVersion = android.DefaultUpdatableModuleVersion } } var aconfigTextFilePaths android.Paths ctx.VisitDirectDepsWithTag(aconfigDeclarationTag, func(dep android.Module) { if provider, ok := android.OtherModuleProvider(ctx, dep, android.AconfigDeclarationsProviderKey); ok { aconfigTextFilePaths = append(aconfigTextFilePaths, provider.IntermediateDumpOutputPath) } else { ctx.ModuleErrorf("Only aconfig_declarations module type is allowed for "+ "flags_packages property, but %s is not aconfig_declarations module type", dep.Name(), ) } }) a.aapt.buildActions(ctx, a.aapt.buildActions(ctx, aaptBuildActionOptions{ aaptBuildActionOptions{ sdkContext: android.SdkContext(a), sdkContext: android.SdkContext(a), Loading @@ -526,7 +526,7 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { excludedLibs: a.usesLibraryProperties.Exclude_uses_libs, excludedLibs: a.usesLibraryProperties.Exclude_uses_libs, enforceDefaultTargetSdkVersion: a.enforceDefaultTargetSdkVersion(), enforceDefaultTargetSdkVersion: a.enforceDefaultTargetSdkVersion(), extraLinkFlags: aaptLinkFlags, extraLinkFlags: aaptLinkFlags, aconfigTextFiles: aconfigTextFilePaths, aconfigTextFiles: getAconfigFilePaths(ctx), }, }, ) ) Loading