Merge "Allow for overriding container packagename for an Apex."
diff --git a/apex/apex.go b/apex/apex.go
index c010d4e..9c856ee 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -1353,6 +1353,10 @@
 
 	// Logging Parent value
 	Logging_parent string
+
+	// Apex Container Package Name.
+	// Override value for attribute package:name in AndroidManifest.xml
+	Package_name string
 }
 
 type apexPackaging int
diff --git a/apex/apex_test.go b/apex/apex_test.go
index b8e8878..babc27b 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -3664,6 +3664,7 @@
 			apps: ["override_app"],
 			overrides: ["unknownapex"],
 			logging_parent: "com.foo.bar",
+			package_name: "test.overridden.package",
 		}
 
 		apex_key {
@@ -3715,7 +3716,7 @@
 	}
 
 	optFlags := apexRule.Args["opt_flags"]
-	ensureContains(t, optFlags, "--override_apk_package_name com.android.myapex")
+	ensureContains(t, optFlags, "--override_apk_package_name test.overridden.package")
 
 	data := android.AndroidMkDataForTest(t, config, "", apexBundle)
 	var builder strings.Builder
diff --git a/apex/builder.go b/apex/builder.go
index 552d907..40adfca 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -658,6 +658,9 @@
 		}
 		return ""
 	}
+	if a.overridableProperties.Package_name != "" {
+		return a.overridableProperties.Package_name
+	}
 	manifestPackageName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(ctx.ModuleName())
 	if overridden {
 		return manifestPackageName