Uncompress dex in unbundled privileged apps
Mainline builds privileged apps unbundled and then uses them as prebuilts, so they need to respect the privileged flag when deciding whether or not to uncompress the dex. Bug: 135772877 Test: TestUncompressDex Change-Id: I91da7116b779ae35c0617ef77dbcb9788902370c
This commit is contained in:
@@ -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)
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user