Loading android/config.go +1 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,7 @@ func TestConfig(buildDir string, env map[string]string) Config { AAPTPreferredConfig: stringPtr("xhdpi"), AAPTCharacteristics: stringPtr("nosdcard"), AAPTPrebuiltDPI: []string{"xhdpi", "xxhdpi"}, UncompressPrivAppDex: boolPtr(true), }, buildDir: buildDir, Loading java/app.go +6 −5 Original line number Diff line number Diff line Loading @@ -229,15 +229,16 @@ func (a *AndroidApp) shouldUncompressDex(ctx android.ModuleContext) bool { return true } if ctx.Config().UnbundledBuild() { return false } // Uncompress dex in APKs of privileged apps // Uncompress dex in APKs of privileged apps (even for unbundled builds, they may // be preinstalled as prebuilts). if ctx.Config().UncompressPrivAppDex() && Bool(a.appProperties.Privileged) { return true } if ctx.Config().UnbundledBuild() { return false } return shouldUncompressDex(ctx, &a.dexpreopter) } Loading java/app_test.go +83 −0 Original line number Diff line number Diff line Loading @@ -1491,3 +1491,86 @@ func TestEmbedNotice(t *testing.T) { t.Errorf("mergeNotices shouldn't have run for baz") } } func TestUncompressDex(t *testing.T) { testCases := []struct { name string bp string uncompressedPlatform bool uncompressedUnbundled bool }{ { name: "normal", bp: ` android_app { name: "foo", srcs: ["a.java"], } `, uncompressedPlatform: true, uncompressedUnbundled: false, }, { name: "use_embedded_dex", bp: ` android_app { name: "foo", use_embedded_dex: true, srcs: ["a.java"], } `, uncompressedPlatform: true, uncompressedUnbundled: true, }, { name: "privileged", bp: ` android_app { name: "foo", privileged: true, srcs: ["a.java"], } `, uncompressedPlatform: true, uncompressedUnbundled: true, }, } test := func(t *testing.T, bp string, want bool, unbundled bool) { t.Helper() config := testConfig(nil) if unbundled { config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true) } ctx := testAppContext(config, bp, nil) run(t, ctx, config) foo := ctx.ModuleForTests("foo", "android_common") dex := foo.Rule("r8") uncompressedInDexJar := strings.Contains(dex.Args["zipFlags"], "-L 0") aligned := foo.MaybeRule("zipalign").Rule != nil if uncompressedInDexJar != want { t.Errorf("want uncompressed in dex %v, got %v", want, uncompressedInDexJar) } if aligned != want { t.Errorf("want aligned %v, got %v", want, aligned) } } for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { t.Run("platform", func(t *testing.T) { test(t, tt.bp, tt.uncompressedPlatform, false) }) t.Run("unbundled", func(t *testing.T) { test(t, tt.bp, tt.uncompressedUnbundled, true) }) }) } } Loading
android/config.go +1 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,7 @@ func TestConfig(buildDir string, env map[string]string) Config { AAPTPreferredConfig: stringPtr("xhdpi"), AAPTCharacteristics: stringPtr("nosdcard"), AAPTPrebuiltDPI: []string{"xhdpi", "xxhdpi"}, UncompressPrivAppDex: boolPtr(true), }, buildDir: buildDir, Loading
java/app.go +6 −5 Original line number Diff line number Diff line Loading @@ -229,15 +229,16 @@ func (a *AndroidApp) shouldUncompressDex(ctx android.ModuleContext) bool { return true } if ctx.Config().UnbundledBuild() { return false } // Uncompress dex in APKs of privileged apps // Uncompress dex in APKs of privileged apps (even for unbundled builds, they may // be preinstalled as prebuilts). if ctx.Config().UncompressPrivAppDex() && Bool(a.appProperties.Privileged) { return true } if ctx.Config().UnbundledBuild() { return false } return shouldUncompressDex(ctx, &a.dexpreopter) } Loading
java/app_test.go +83 −0 Original line number Diff line number Diff line Loading @@ -1491,3 +1491,86 @@ func TestEmbedNotice(t *testing.T) { t.Errorf("mergeNotices shouldn't have run for baz") } } func TestUncompressDex(t *testing.T) { testCases := []struct { name string bp string uncompressedPlatform bool uncompressedUnbundled bool }{ { name: "normal", bp: ` android_app { name: "foo", srcs: ["a.java"], } `, uncompressedPlatform: true, uncompressedUnbundled: false, }, { name: "use_embedded_dex", bp: ` android_app { name: "foo", use_embedded_dex: true, srcs: ["a.java"], } `, uncompressedPlatform: true, uncompressedUnbundled: true, }, { name: "privileged", bp: ` android_app { name: "foo", privileged: true, srcs: ["a.java"], } `, uncompressedPlatform: true, uncompressedUnbundled: true, }, } test := func(t *testing.T, bp string, want bool, unbundled bool) { t.Helper() config := testConfig(nil) if unbundled { config.TestProductVariables.Unbundled_build = proptools.BoolPtr(true) } ctx := testAppContext(config, bp, nil) run(t, ctx, config) foo := ctx.ModuleForTests("foo", "android_common") dex := foo.Rule("r8") uncompressedInDexJar := strings.Contains(dex.Args["zipFlags"], "-L 0") aligned := foo.MaybeRule("zipalign").Rule != nil if uncompressedInDexJar != want { t.Errorf("want uncompressed in dex %v, got %v", want, uncompressedInDexJar) } if aligned != want { t.Errorf("want aligned %v, got %v", want, aligned) } } for _, tt := range testCases { t.Run(tt.name, func(t *testing.T) { t.Run("platform", func(t *testing.T) { test(t, tt.bp, tt.uncompressedPlatform, false) }) t.Run("unbundled", func(t *testing.T) { test(t, tt.bp, tt.uncompressedUnbundled, true) }) }) } }