diff options
author | Jaewoong Jung <jungjw@google.com> | 2019-02-27 16:26:28 -0800 |
---|---|---|
committer | Jaewoong Jung <jungjw@google.com> | 2019-02-28 15:41:45 -0800 |
commit | 4102e5dca379a33dbb4b149b5df7354e8c97181c (patch) | |
tree | ca29a97876f2b05d115b9a91df00412e18e09b50 /java | |
parent | ef36053829238e24088c578eeac08a1693177757 (diff) | |
download | android_build_soong-4102e5dca379a33dbb4b149b5df7354e8c97181c.tar.gz android_build_soong-4102e5dca379a33dbb4b149b5df7354e8c97181c.tar.bz2 android_build_soong-4102e5dca379a33dbb4b149b5df7354e8c97181c.zip |
aapt2 flag for target manifest package override
This change adds an aapt2 flag, rename-instrumentation-target-package,
when an android test's instrumention target module's manifest package
name is overridden.
Bug: 122957760
Test: app_test.go, atest DocumentsUITests
Change-Id: I7116a51ec5ec9d61a20cd28509b3af0e383730d7
Diffstat (limited to 'java')
-rw-r--r-- | java/app.go | 11 | ||||
-rw-r--r-- | java/app_test.go | 27 |
2 files changed, 38 insertions, 0 deletions
diff --git a/java/app.go b/java/app.go index c08aefd1..2ff6c982 100644 --- a/java/app.go +++ b/java/app.go @@ -93,6 +93,8 @@ type AndroidApp struct { // the install APK name is normally the same as the module name, but can be overridden with PRODUCT_PACKAGE_NAME_OVERRIDES. installApkName string + + additionalAaptFlags []string } func (a *AndroidApp) ExportedProguardFlagFiles() android.Paths { @@ -222,6 +224,8 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { aaptLinkFlags = append(aaptLinkFlags, "--rename-manifest-package "+manifestPackageName) } + aaptLinkFlags = append(aaptLinkFlags, a.additionalAaptFlags...) + a.aapt.buildActions(ctx, sdkContext(a), aaptLinkFlags...) // apps manifests are handled by aapt, don't let Module see them @@ -441,6 +445,13 @@ type AndroidTest struct { } func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) { + // Check if the instrumentation target package is overridden before generating build actions. + if a.appTestProperties.Instrumentation_for != nil { + manifestPackageName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(*a.appTestProperties.Instrumentation_for) + if overridden { + a.additionalAaptFlags = append(a.additionalAaptFlags, "--rename-instrumentation-target-package "+manifestPackageName) + } + } a.generateAndroidBuildActions(ctx) a.testConfig = tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config, a.testProperties.Test_config_template, a.manifestPath, a.testProperties.Test_suites) diff --git a/java/app_test.go b/java/app_test.go index 317c7528..1784fc3b 100644 --- a/java/app_test.go +++ b/java/app_test.go @@ -747,3 +747,30 @@ func TestPackageNameOverride(t *testing.T) { }) } } + +func TestInstrumentationTargetOverridden(t *testing.T) { + bp := ` + android_app { + name: "foo", + srcs: ["a.java"], + } + + android_test { + name: "bar", + instrumentation_for: "foo", + } + ` + config := testConfig(nil) + config.TestProductVariables.ManifestPackageNameOverrides = []string{"foo:org.dandroid.bp"} + ctx := testAppContext(config, bp, nil) + + run(t, ctx, config) + + bar := ctx.ModuleForTests("bar", "android_common") + res := bar.Output("package-res.apk") + aapt2Flags := res.Args["flags"] + e := "--rename-instrumentation-target-package org.dandroid.bp" + if !strings.Contains(aapt2Flags, e) { + t.Errorf("target package renaming flag, %q is missing in aapt2 link flags, %q", e, aapt2Flags) + } +} |