Make the package_name property configurable

Requested by a user.

Fixes: 371213057
Test: m nothing --no-skip-soong-tests
Change-Id: I4268257b03d632f068c38a572896582cddb81ecd
diff --git a/apex/apex.go b/apex/apex.go
index fd6f5b5..d7dc6d7 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -395,7 +395,7 @@
 
 	// Apex Container package name. Override value for attribute package:name in
 	// AndroidManifest.xml
-	Package_name string
+	Package_name proptools.Configurable[string]
 
 	// A txt file containing list of files that are allowed to be included in this APEX.
 	Allowed_files *string `android:"path"`
diff --git a/apex/builder.go b/apex/builder.go
index 4db20e9..371d7d5 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -1074,8 +1074,9 @@
 		}
 		return ""
 	}
-	if a.overridableProperties.Package_name != "" {
-		return a.overridableProperties.Package_name
+	packageNameFromProp := a.overridableProperties.Package_name.GetOrDefault(ctx, "")
+	if packageNameFromProp != "" {
+		return packageNameFromProp
 	}
 	manifestPackageName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(ctx.ModuleName())
 	if overridden {