Don't use AppsDefaultVersionName for framework-res.apk
Some builds set AppsDefaultVersionName() to include the build
number ("P-123456"). aapt2 copies the version name of
framework-res into app manifests as compileSdkVersionCodename,
which confuses things if it contains the build number. Use the
DefaultAppTargetSdk ("P") instead.
Bug: 78324052
Test: m TARGET_BUILD_WITH_APPS_VERSION_NAME=true Dialer
aapt dump badging $OUT/system/priv-app/Dialer/Dialer.apk | grep compile
shows compileSdkVersionCodename=P
Change-Id: If67f40aae1066d4ff3bf97da1b2de2e1e250ad9c
diff --git a/java/aar.go b/java/aar.go
index 13c5369..16d82af 100644
--- a/java/aar.go
+++ b/java/aar.go
@@ -143,7 +143,16 @@
}
if !hasVersionName {
- versionName := proptools.NinjaEscape([]string{ctx.Config().AppsDefaultVersionName()})[0]
+ var versionName string
+ if ctx.ModuleName() == "framework-res" {
+ // Some builds set AppsDefaultVersionName() to include the build number ("O-123456"). aapt2 copies the
+ // version name of framework-res into app manifests as compileSdkVersionCodename, which confuses things
+ // if it contains the build number. Use the DefaultAppTargetSdk instead.
+ versionName = ctx.Config().DefaultAppTargetSdk()
+ } else {
+ versionName = ctx.Config().AppsDefaultVersionName()
+ }
+ versionName = proptools.NinjaEscape([]string{versionName})[0]
linkFlags = append(linkFlags, "--version-name ", versionName)
}