Loading java/aar.go +6 −0 Original line number Diff line number Diff line Loading @@ -1161,11 +1161,17 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.rTxt = extractedAARDir.Join(ctx, "R.txt") a.assetsPackage = android.PathForModuleOut(ctx, "assets.zip") a.proguardFlags = extractedAARDir.Join(ctx, "proguard.txt") transitiveProguardFlags, transitiveUnconditionalExportedFlags := collectDepProguardSpecInfo(ctx) android.SetProvider(ctx, ProguardSpecInfoProvider, ProguardSpecInfo{ ProguardFlagsFiles: android.NewDepSet[android.Path]( android.POSTORDER, android.Paths{a.proguardFlags}, transitiveProguardFlags, ), UnconditionallyExportedProguardFlags: android.NewDepSet[android.Path]( android.POSTORDER, nil, transitiveUnconditionalExportedFlags, ), }) Loading java/app_test.go +42 −12 Original line number Diff line number Diff line Loading @@ -3625,7 +3625,10 @@ func TestExportedProguardFlagFiles(t *testing.T) { android_app { name: "foo", sdk_version: "current", static_libs: ["lib1"], static_libs: [ "lib1", "lib3", ], } android_library { Loading @@ -3633,24 +3636,51 @@ func TestExportedProguardFlagFiles(t *testing.T) { sdk_version: "current", optimize: { proguard_flags_files: ["lib1proguard.cfg"], }, static_libs: ["lib2"], } } `) m := ctx.ModuleForTests("foo", "android_common") hasLib1Proguard := false for _, s := range m.Rule("java.r8").Implicits.Strings() { if s == "lib1proguard.cfg" { hasLib1Proguard = true break android_library { name: "lib2", sdk_version: "current", optimize: { proguard_flags_files: ["lib2proguard.cfg"], } } android_library_import { name: "lib3", sdk_version: "current", aars: ["lib3.aar"], static_libs: ["lib4"], } if !hasLib1Proguard { t.Errorf("App does not use library proguard config") android_library { name: "lib4", sdk_version: "current", optimize: { proguard_flags_files: ["lib4proguard.cfg"], } } `) m := ctx.ModuleForTests("foo", "android_common") r8 := m.Rule("java.r8") implicits := r8.Implicits.RelativeToTop().Strings() android.AssertStringListContains(t, "r8 implicits", implicits, "lib1proguard.cfg") android.AssertStringListContains(t, "r8 implicits", implicits, "lib2proguard.cfg") android.AssertStringListContains(t, "r8 implicits", implicits, "lib4proguard.cfg") android.AssertStringListContains(t, "r8 implicits", implicits, "out/soong/.intermediates/lib3/android_common/aar/proguard.txt") flags := r8.Args["r8Flags"] android.AssertStringDoesContain(t, "r8 flags", flags, "-include lib1proguard.cfg") android.AssertStringDoesContain(t, "r8 flags", flags, "-include lib2proguard.cfg") android.AssertStringDoesContain(t, "r8 flags", flags, "-include lib4proguard.cfg") android.AssertStringDoesContain(t, "r8 flags", flags, "-include out/soong/.intermediates/lib3/android_common/aar/proguard.txt") } func TestTargetSdkVersionManifestFixer(t *testing.T) { platform_sdk_codename := "Tiramisu" platform_sdk_version := 33 Loading java/base.go +7 −4 Original line number Diff line number Diff line Loading @@ -1757,10 +1757,7 @@ func (j *Module) useCompose() bool { return android.InList("androidx.compose.runtime_runtime", j.properties.Static_libs) } func (j *Module) collectProguardSpecInfo(ctx android.ModuleContext) ProguardSpecInfo { transitiveUnconditionalExportedFlags := []*android.DepSet[android.Path]{} transitiveProguardFlags := []*android.DepSet[android.Path]{} func collectDepProguardSpecInfo(ctx android.ModuleContext) (transitiveProguardFlags, transitiveUnconditionalExportedFlags []*android.DepSet[android.Path]) { ctx.VisitDirectDeps(func(m android.Module) { depProguardInfo, _ := android.OtherModuleProvider(ctx, m, ProguardSpecInfoProvider) depTag := ctx.OtherModuleDependencyTag(m) Loading @@ -1775,6 +1772,12 @@ func (j *Module) collectProguardSpecInfo(ctx android.ModuleContext) ProguardSpec } }) return transitiveProguardFlags, transitiveUnconditionalExportedFlags } func (j *Module) collectProguardSpecInfo(ctx android.ModuleContext) ProguardSpecInfo { transitiveProguardFlags, transitiveUnconditionalExportedFlags := collectDepProguardSpecInfo(ctx) directUnconditionalExportedFlags := android.Paths{} proguardFlagsForThisModule := android.PathsForModuleSrc(ctx, j.dexProperties.Optimize.Proguard_flags_files) exportUnconditionally := proptools.Bool(j.dexProperties.Optimize.Export_proguard_flags_files) Loading Loading
java/aar.go +6 −0 Original line number Diff line number Diff line Loading @@ -1161,11 +1161,17 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { a.rTxt = extractedAARDir.Join(ctx, "R.txt") a.assetsPackage = android.PathForModuleOut(ctx, "assets.zip") a.proguardFlags = extractedAARDir.Join(ctx, "proguard.txt") transitiveProguardFlags, transitiveUnconditionalExportedFlags := collectDepProguardSpecInfo(ctx) android.SetProvider(ctx, ProguardSpecInfoProvider, ProguardSpecInfo{ ProguardFlagsFiles: android.NewDepSet[android.Path]( android.POSTORDER, android.Paths{a.proguardFlags}, transitiveProguardFlags, ), UnconditionallyExportedProguardFlags: android.NewDepSet[android.Path]( android.POSTORDER, nil, transitiveUnconditionalExportedFlags, ), }) Loading
java/app_test.go +42 −12 Original line number Diff line number Diff line Loading @@ -3625,7 +3625,10 @@ func TestExportedProguardFlagFiles(t *testing.T) { android_app { name: "foo", sdk_version: "current", static_libs: ["lib1"], static_libs: [ "lib1", "lib3", ], } android_library { Loading @@ -3633,24 +3636,51 @@ func TestExportedProguardFlagFiles(t *testing.T) { sdk_version: "current", optimize: { proguard_flags_files: ["lib1proguard.cfg"], }, static_libs: ["lib2"], } } `) m := ctx.ModuleForTests("foo", "android_common") hasLib1Proguard := false for _, s := range m.Rule("java.r8").Implicits.Strings() { if s == "lib1proguard.cfg" { hasLib1Proguard = true break android_library { name: "lib2", sdk_version: "current", optimize: { proguard_flags_files: ["lib2proguard.cfg"], } } android_library_import { name: "lib3", sdk_version: "current", aars: ["lib3.aar"], static_libs: ["lib4"], } if !hasLib1Proguard { t.Errorf("App does not use library proguard config") android_library { name: "lib4", sdk_version: "current", optimize: { proguard_flags_files: ["lib4proguard.cfg"], } } `) m := ctx.ModuleForTests("foo", "android_common") r8 := m.Rule("java.r8") implicits := r8.Implicits.RelativeToTop().Strings() android.AssertStringListContains(t, "r8 implicits", implicits, "lib1proguard.cfg") android.AssertStringListContains(t, "r8 implicits", implicits, "lib2proguard.cfg") android.AssertStringListContains(t, "r8 implicits", implicits, "lib4proguard.cfg") android.AssertStringListContains(t, "r8 implicits", implicits, "out/soong/.intermediates/lib3/android_common/aar/proguard.txt") flags := r8.Args["r8Flags"] android.AssertStringDoesContain(t, "r8 flags", flags, "-include lib1proguard.cfg") android.AssertStringDoesContain(t, "r8 flags", flags, "-include lib2proguard.cfg") android.AssertStringDoesContain(t, "r8 flags", flags, "-include lib4proguard.cfg") android.AssertStringDoesContain(t, "r8 flags", flags, "-include out/soong/.intermediates/lib3/android_common/aar/proguard.txt") } func TestTargetSdkVersionManifestFixer(t *testing.T) { platform_sdk_codename := "Tiramisu" platform_sdk_version := 33 Loading
java/base.go +7 −4 Original line number Diff line number Diff line Loading @@ -1757,10 +1757,7 @@ func (j *Module) useCompose() bool { return android.InList("androidx.compose.runtime_runtime", j.properties.Static_libs) } func (j *Module) collectProguardSpecInfo(ctx android.ModuleContext) ProguardSpecInfo { transitiveUnconditionalExportedFlags := []*android.DepSet[android.Path]{} transitiveProguardFlags := []*android.DepSet[android.Path]{} func collectDepProguardSpecInfo(ctx android.ModuleContext) (transitiveProguardFlags, transitiveUnconditionalExportedFlags []*android.DepSet[android.Path]) { ctx.VisitDirectDeps(func(m android.Module) { depProguardInfo, _ := android.OtherModuleProvider(ctx, m, ProguardSpecInfoProvider) depTag := ctx.OtherModuleDependencyTag(m) Loading @@ -1775,6 +1772,12 @@ func (j *Module) collectProguardSpecInfo(ctx android.ModuleContext) ProguardSpec } }) return transitiveProguardFlags, transitiveUnconditionalExportedFlags } func (j *Module) collectProguardSpecInfo(ctx android.ModuleContext) ProguardSpecInfo { transitiveProguardFlags, transitiveUnconditionalExportedFlags := collectDepProguardSpecInfo(ctx) directUnconditionalExportedFlags := android.Paths{} proguardFlagsForThisModule := android.PathsForModuleSrc(ctx, j.dexProperties.Optimize.Proguard_flags_files) exportUnconditionally := proptools.Bool(j.dexProperties.Optimize.Export_proguard_flags_files) Loading