Use aapt2 flag --rename-resources-package in soong
This change uses aapt2 flag to change the package name encoded in the
resources table for override apps.
Test: app_test.go
Bug: 147434671
Change-Id: I70a43c2163709afc90262d74f975ce14a556cf55
diff --git a/java/app.go b/java/app.go
index 215b07b..63c5bef 100755
--- a/java/app.go
+++ b/java/app.go
@@ -491,6 +491,16 @@
!a.IsForPlatform() || a.appProperties.AlwaysPackageNativeLibs
}
+func generateAaptRenamePackageFlags(packageName string) []string {
+ aaptFlags := []string{}
+ aaptFlags = append(aaptFlags, "--rename-manifest-package "+packageName)
+ // --rename-resources-package renames the package within the resources table to packageName.
+ // Note: this will *not* rename the R.java file because the base module .R
+ // package may be directly referenced in code.
+ aaptFlags = append(aaptFlags, "--rename-resources-package "+packageName)
+ return aaptFlags
+}
+
func (a *AndroidApp) OverriddenManifestPackageName() string {
return a.overriddenManifestPackageName
}
@@ -527,7 +537,7 @@
if !overridden {
manifestPackageName = *a.overridableAppProperties.Package_name
}
- aaptLinkFlags = append(aaptLinkFlags, "--rename-manifest-package "+manifestPackageName)
+ aaptLinkFlags = append(aaptLinkFlags, generateAaptRenamePackageFlags(manifestPackageName)...)
a.overriddenManifestPackageName = manifestPackageName
}
diff --git a/java/app_test.go b/java/app_test.go
index 2195afd..e3fa26e 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -1688,7 +1688,7 @@
certFlag string
lineageFlag string
overrides []string
- aaptFlag string
+ packageFlag string
logging_parent string
}{
{
@@ -1698,7 +1698,7 @@
certFlag: "build/make/target/product/security/expiredkey.x509.pem build/make/target/product/security/expiredkey.pk8",
lineageFlag: "",
overrides: []string{"qux"},
- aaptFlag: "",
+ packageFlag: "",
logging_parent: "",
},
{
@@ -1708,7 +1708,7 @@
certFlag: "cert/new_cert.x509.pem cert/new_cert.pk8",
lineageFlag: "--lineage lineage.bin",
overrides: []string{"qux", "foo"},
- aaptFlag: "",
+ packageFlag: "",
logging_parent: "bah",
},
{
@@ -1718,7 +1718,7 @@
certFlag: "build/make/target/product/security/expiredkey.x509.pem build/make/target/product/security/expiredkey.pk8",
lineageFlag: "",
overrides: []string{"qux", "foo"},
- aaptFlag: "--rename-manifest-package org.dandroid.bp",
+ packageFlag: "org.dandroid.bp",
logging_parent: "",
},
}
@@ -1766,12 +1766,11 @@
expected.logging_parent, logging_parent)
}
- // Check the package renaming flag, if exists.
+ // Check the package renaming flags, if exists.
res := variant.Output("package-res.apk")
aapt2Flags := res.Args["flags"]
- if !strings.Contains(aapt2Flags, expected.aaptFlag) {
- t.Errorf("package renaming flag, %q is missing in aapt2 link flags, %q", expected.aaptFlag, aapt2Flags)
- }
+ checkAapt2LinkFlag(t, aapt2Flags, "rename-manifest-package", expected.packageFlag)
+ checkAapt2LinkFlag(t, aapt2Flags, "rename-resources-package", expected.packageFlag)
}
}
@@ -1908,6 +1907,7 @@
res := variant.Output("package-res.apk")
aapt2Flags := res.Args["flags"]
checkAapt2LinkFlag(t, aapt2Flags, "rename-manifest-package", expected.packageFlag)
+ checkAapt2LinkFlag(t, aapt2Flags, "rename-resources-package", expected.packageFlag)
checkAapt2LinkFlag(t, aapt2Flags, "rename-instrumentation-target-package", expected.targetPackageFlag)
}
}