Merge changes I4e7aa1a3,Ic0cd2411
* changes: Fix DONT_UNCOMPRESS_PRIV_APPS_DEXS for `android_app_import`. Add tests for uncompressed dex for `android_app_import`.
This commit is contained in:
commit
2e380e7971
2 changed files with 75 additions and 3 deletions
|
@ -204,9 +204,9 @@ func (a *AndroidAppImport) shouldUncompressDex(ctx android.ModuleContext) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Uncompress dex in APKs of privileged apps
|
// Uncompress dex in APKs of priv-apps if and only if DONT_UNCOMPRESS_PRIV_APPS_DEXS is false.
|
||||||
if ctx.Config().UncompressPrivAppDex() && a.Privileged() {
|
if a.Privileged() {
|
||||||
return true
|
return ctx.Config().UncompressPrivAppDex()
|
||||||
}
|
}
|
||||||
|
|
||||||
return shouldUncompressDex(ctx, &a.dexpreopter)
|
return shouldUncompressDex(ctx, &a.dexpreopter)
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
package java
|
package java
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -656,3 +657,74 @@ func TestAndroidTestImport_Preprocessed(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAndroidTestImport_UncompressDex(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
name string
|
||||||
|
bp string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "normal",
|
||||||
|
bp: `
|
||||||
|
android_app_import {
|
||||||
|
name: "foo",
|
||||||
|
presigned: true,
|
||||||
|
apk: "prebuilts/apk/app.apk",
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "privileged",
|
||||||
|
bp: `
|
||||||
|
android_app_import {
|
||||||
|
name: "foo",
|
||||||
|
presigned: true,
|
||||||
|
privileged: true,
|
||||||
|
apk: "prebuilts/apk/app.apk",
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
test := func(t *testing.T, bp string, unbundled bool, dontUncompressPrivAppDexs bool) {
|
||||||
|
t.Helper()
|
||||||
|
|
||||||
|
result := android.GroupFixturePreparers(
|
||||||
|
prepareForJavaTest,
|
||||||
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||||
|
if unbundled {
|
||||||
|
variables.Unbundled_build = proptools.BoolPtr(true)
|
||||||
|
}
|
||||||
|
variables.UncompressPrivAppDex = proptools.BoolPtr(!dontUncompressPrivAppDexs)
|
||||||
|
}),
|
||||||
|
).RunTestWithBp(t, bp)
|
||||||
|
|
||||||
|
foo := result.ModuleForTests("foo", "android_common")
|
||||||
|
actual := foo.MaybeRule("uncompress-dex").Rule != nil
|
||||||
|
|
||||||
|
expect := !unbundled
|
||||||
|
if strings.Contains(bp, "privileged: true") {
|
||||||
|
if dontUncompressPrivAppDexs {
|
||||||
|
expect = false
|
||||||
|
} else {
|
||||||
|
// TODO(b/194504107): shouldn't priv-apps be always uncompressed unless
|
||||||
|
// DONT_UNCOMPRESS_PRIV_APPS_DEXS is true (regardless of unbundling)?
|
||||||
|
// expect = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
android.AssertBoolEquals(t, "uncompress dex", expect, actual)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, unbundled := range []bool{false, true} {
|
||||||
|
for _, dontUncompressPrivAppDexs := range []bool{false, true} {
|
||||||
|
for _, tt := range testCases {
|
||||||
|
name := fmt.Sprintf("%s,unbundled:%t,dontUncompressPrivAppDexs:%t",
|
||||||
|
tt.name, unbundled, dontUncompressPrivAppDexs)
|
||||||
|
t.Run(name, func(t *testing.T) {
|
||||||
|
test(t, tt.bp, unbundled, dontUncompressPrivAppDexs)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue