Merge "Add support for including py_binary and *_go_binary in apexs"
diff --git a/java/app.go b/java/app.go
index c08aefd..2ff6c98 100644
--- a/java/app.go
+++ b/java/app.go
@@ -93,6 +93,8 @@
// 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 @@
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 @@
}
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 317c752..1784fc3 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -747,3 +747,30 @@
})
}
}
+
+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)
+ }
+}
diff --git a/java/sdk_library.go b/java/sdk_library.go
index f2df49b..df4e08b 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -607,6 +607,10 @@
dir := filepath.Join("prebuilts", "sdk", v, api)
jar := filepath.Join(dir, module.BaseModuleName()+".jar")
jarPath := android.ExistentPathForSource(ctx, jar)
+ if !jarPath.Valid() {
+ ctx.PropertyErrorf("sdk_library", "invalid sdk version %q, %q does not exist", v, jar)
+ return nil
+ }
return android.Paths{jarPath.Path()}
}