summaryrefslogtreecommitdiff
path: root/filesystem
diff options
context:
space:
mode:
author Spandan Das <spandandas@google.com> 2025-03-19 20:52:27 +0000
committer Spandan Das <spandandas@google.com> 2025-03-19 20:53:34 +0000
commit99e7dc152aa61b2013d7a9088c60deecff4da295 (patch)
tree8e32b2215bd15aec21043bac50c2bef93b681c14 /filesystem
parent21643c6a89a2ece5cd9a16535a46e10162f585ba (diff)
Handle android_app_set in Soong built apkcerts.txt
android_app_set modules contain presigned apks, and uses `extract_apks` to create an entry for each split apk in `LOCAL_APK_CERTS`, which then gets concatenated to apkcerts.txt when built using Make. This logic was previously not handled correctly in the new Soong implementation, causing build errors in partner workspaces. Bug: 396131789 Test: In partner-workspace, built the soong generated apkcerts.txt file Change-Id: I7dd0dcd6c992660d5a7e7d484b5d83dc06e051f3
Diffstat (limited to 'filesystem')
-rw-r--r--filesystem/android_device.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/filesystem/android_device.go b/filesystem/android_device.go
index 443e80e67..690b9e1be 100644
--- a/filesystem/android_device.go
+++ b/filesystem/android_device.go
@@ -1046,6 +1046,7 @@ func (a *androidDevice) buildApkCertsInfo(ctx android.ModuleContext, allInstalle
}
apkCerts := []string{}
+ var apkCertsFiles android.Paths
for _, installedModule := range allInstalledModules {
partition := ""
if commonInfo, ok := android.OtherModuleProvider(ctx, installedModule, android.CommonModuleInfoProvider); ok {
@@ -1054,7 +1055,11 @@ func (a *androidDevice) buildApkCertsInfo(ctx android.ModuleContext, allInstalle
ctx.ModuleErrorf("%s does not set CommonModuleInfoKey", installedModule.Name())
}
if info, ok := android.OtherModuleProvider(ctx, installedModule, java.AppInfoProvider); ok {
- apkCerts = append(apkCerts, formatLine(info.Certificate, info.InstallApkName+".apk", partition))
+ if info.AppSet {
+ apkCertsFiles = append(apkCertsFiles, info.ApkCertsFile)
+ } else {
+ apkCerts = append(apkCerts, formatLine(info.Certificate, info.InstallApkName+".apk", partition))
+ }
} else if info, ok := android.OtherModuleProvider(ctx, installedModule, java.AppInfosProvider); ok {
for _, certInfo := range info {
// Partition information of apk-in-apex is not exported to the legacy Make packaging system.
@@ -1075,7 +1080,14 @@ func (a *androidDevice) buildApkCertsInfo(ctx android.ModuleContext, allInstalle
}
}
+ apkCertsInfoWithoutAppSets := android.PathForModuleOut(ctx, "apkcerts_without_app_sets.txt")
+ android.WriteFileRuleVerbatim(ctx, apkCertsInfoWithoutAppSets, strings.Join(apkCerts, "\n")+"\n")
apkCertsInfo := android.PathForModuleOut(ctx, "apkcerts.txt")
- android.WriteFileRuleVerbatim(ctx, apkCertsInfo, strings.Join(apkCerts, "\n")+"\n")
+ ctx.Build(pctx, android.BuildParams{
+ Rule: android.Cat,
+ Description: "combine apkcerts.txt",
+ Output: apkCertsInfo,
+ Inputs: append(apkCertsFiles, apkCertsInfoWithoutAppSets),
+ })
return apkCertsInfo
}