diff options
Diffstat (limited to 'java')
-rw-r--r-- | java/app_import.go | 6 | ||||
-rw-r--r-- | java/app_import_test.go | 72 | ||||
-rw-r--r-- | java/app_test.go | 2 | ||||
-rw-r--r-- | java/base.go | 2 | ||||
-rw-r--r-- | java/bootclasspath_fragment.go | 4 | ||||
-rw-r--r-- | java/core-libraries/Android.bp | 4 | ||||
-rw-r--r-- | java/dexpreopt_bootjars.go | 6 | ||||
-rw-r--r-- | java/java.go | 8 | ||||
-rw-r--r-- | java/java_test.go | 2 | ||||
-rw-r--r-- | java/platform_compat_config.go | 4 | ||||
-rw-r--r-- | java/sdk_library.go | 4 | ||||
-rw-r--r-- | java/system_modules.go | 4 |
12 files changed, 99 insertions, 19 deletions
diff --git a/java/app_import.go b/java/app_import.go index b5a608412..3e5f972a4 100644 --- a/java/app_import.go +++ b/java/app_import.go @@ -204,9 +204,9 @@ func (a *AndroidAppImport) shouldUncompressDex(ctx android.ModuleContext) bool { return false } - // Uncompress dex in APKs of privileged apps - if ctx.Config().UncompressPrivAppDex() && a.Privileged() { - return true + // Uncompress dex in APKs of priv-apps if and only if DONT_UNCOMPRESS_PRIV_APPS_DEXS is false. + if a.Privileged() { + return ctx.Config().UncompressPrivAppDex() } return shouldUncompressDex(ctx, &a.dexpreopter) diff --git a/java/app_import_test.go b/java/app_import_test.go index 024a3df51..efa52c178 100644 --- a/java/app_import_test.go +++ b/java/app_import_test.go @@ -15,6 +15,7 @@ package java import ( + "fmt" "reflect" "regexp" "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) + }) + } + } + } +} diff --git a/java/app_test.go b/java/app_test.go index 56ad28d3e..07439fcd0 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -1737,7 +1737,7 @@ func TestPackageNameOverride(t *testing.T) { foo := result.ModuleForTests("foo", "android_common") - outSoongDir := result.Config.BuildDir() + outSoongDir := result.Config.SoongOutDir() outputs := foo.AllOutputs() outputMap := make(map[string]bool) diff --git a/java/base.go b/java/base.go index 8e6d1cd50..86022c3b2 100644 --- a/java/base.go +++ b/java/base.go @@ -791,7 +791,7 @@ func (j *Module) collectJavacFlags( // Manually specify build directory in case it is not under the repo root. // (javac doesn't seem to expand into symbolic links when searching for patch-module targets, so // just adding a symlink under the root doesn't help.) - patchPaths := []string{".", ctx.Config().BuildDir()} + patchPaths := []string{".", ctx.Config().SoongOutDir()} // b/150878007 // diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go index 757731632..f7561b439 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -718,8 +718,8 @@ type bootclasspathFragmentMemberType struct { android.SdkMemberTypeBase } -func (b *bootclasspathFragmentMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) { - mctx.AddVariationDependencies(nil, dependencyTag, names...) +func (b *bootclasspathFragmentMemberType) AddDependencies(ctx android.SdkDependencyContext, dependencyTag blueprint.DependencyTag, names []string) { + ctx.AddVariationDependencies(nil, dependencyTag, names...) } func (b *bootclasspathFragmentMemberType) IsInstance(module android.Module) bool { diff --git a/java/core-libraries/Android.bp b/java/core-libraries/Android.bp index 51d998a2e..b198c2456 100644 --- a/java/core-libraries/Android.bp +++ b/java/core-libraries/Android.bp @@ -24,6 +24,10 @@ // core libraries. // // Don't use this directly, use "sdk_version: core_current". +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + java_library { name: "core.current.stubs", visibility: ["//visibility:public"], diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go index 1019b4c85..946092cdb 100644 --- a/java/dexpreopt_bootjars.go +++ b/java/dexpreopt_bootjars.go @@ -500,7 +500,11 @@ func copyBootJarsToPredefinedLocations(ctx android.ModuleContext, srcBootDexJars dst := dstBootJarsByModule[name] if src == nil { - ctx.ModuleErrorf("module %s does not provide a dex boot jar", name) + if !ctx.Config().AllowMissingDependencies() { + ctx.ModuleErrorf("module %s does not provide a dex boot jar", name) + } else { + ctx.AddMissingDependencies([]string{name}) + } } else if dst == nil { ctx.ModuleErrorf("module %s is not part of the boot configuration", name) } else { diff --git a/java/java.go b/java/java.go index 4c2ca9ba2..1a052b432 100644 --- a/java/java.go +++ b/java/java.go @@ -574,8 +574,8 @@ const ( copyEverythingToSnapshot = false ) -func (mt *librarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) { - mctx.AddVariationDependencies(nil, dependencyTag, names...) +func (mt *librarySdkMemberType) AddDependencies(ctx android.SdkDependencyContext, dependencyTag blueprint.DependencyTag, names []string) { + ctx.AddVariationDependencies(nil, dependencyTag, names...) } func (mt *librarySdkMemberType) IsInstance(module android.Module) bool { @@ -875,8 +875,8 @@ type testSdkMemberType struct { android.SdkMemberTypeBase } -func (mt *testSdkMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) { - mctx.AddVariationDependencies(nil, dependencyTag, names...) +func (mt *testSdkMemberType) AddDependencies(ctx android.SdkDependencyContext, dependencyTag blueprint.DependencyTag, names []string) { + ctx.AddVariationDependencies(nil, dependencyTag, names...) } func (mt *testSdkMemberType) IsInstance(module android.Module) bool { diff --git a/java/java_test.go b/java/java_test.go index b6780c20c..8bb017f0b 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1183,7 +1183,7 @@ func checkPatchModuleFlag(t *testing.T, ctx *android.TestContext, moduleName str break } } - if expected != android.StringPathRelativeToTop(ctx.Config().BuildDir(), got) { + if expected != android.StringPathRelativeToTop(ctx.Config().SoongOutDir(), got) { t.Errorf("Unexpected patch-module flag for module %q - expected %q, but got %q", moduleName, expected, got) } } diff --git a/java/platform_compat_config.go b/java/platform_compat_config.go index 712c2a203..0d8ebac02 100644 --- a/java/platform_compat_config.go +++ b/java/platform_compat_config.go @@ -134,8 +134,8 @@ type compatConfigMemberType struct { android.SdkMemberTypeBase } -func (b *compatConfigMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) { - mctx.AddVariationDependencies(nil, dependencyTag, names...) +func (b *compatConfigMemberType) AddDependencies(ctx android.SdkDependencyContext, dependencyTag blueprint.DependencyTag, names []string) { + ctx.AddVariationDependencies(nil, dependencyTag, names...) } func (b *compatConfigMemberType) IsInstance(module android.Module) bool { diff --git a/java/sdk_library.go b/java/sdk_library.go index c50e07779..ce8f179af 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -2471,8 +2471,8 @@ type sdkLibrarySdkMemberType struct { android.SdkMemberTypeBase } -func (s *sdkLibrarySdkMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) { - mctx.AddVariationDependencies(nil, dependencyTag, names...) +func (s *sdkLibrarySdkMemberType) AddDependencies(ctx android.SdkDependencyContext, dependencyTag blueprint.DependencyTag, names []string) { + ctx.AddVariationDependencies(nil, dependencyTag, names...) } func (s *sdkLibrarySdkMemberType) IsInstance(module android.Module) bool { diff --git a/java/system_modules.go b/java/system_modules.go index d0dc74adc..fec8ebaeb 100644 --- a/java/system_modules.go +++ b/java/system_modules.go @@ -245,8 +245,8 @@ type systemModulesSdkMemberType struct { android.SdkMemberTypeBase } -func (mt *systemModulesSdkMemberType) AddDependencies(mctx android.BottomUpMutatorContext, dependencyTag blueprint.DependencyTag, names []string) { - mctx.AddVariationDependencies(nil, dependencyTag, names...) +func (mt *systemModulesSdkMemberType) AddDependencies(ctx android.SdkDependencyContext, dependencyTag blueprint.DependencyTag, names []string) { + ctx.AddVariationDependencies(nil, dependencyTag, names...) } func (mt *systemModulesSdkMemberType) IsInstance(module android.Module) bool { |