Merge "Create an installation rule to copy vdex to common arch device directory" into main

This commit is contained in:
Spandan Das
2024-08-05 16:38:53 +00:00
committed by Gerrit Code Review

View File

@@ -943,20 +943,17 @@ func packageFileForTargetImage(ctx android.ModuleContext, image *bootImageVarian
}
for _, install := range image.vdexInstalls {
if image.target.Arch.ArchType.Name != ctx.DeviceConfig().DeviceArch() {
// Note that the vdex files are identical between architectures. If the target image is
// not for the primary architecture create symlinks to share the vdex of the primary
// architecture with the other architectures.
//
// Assuming that the install path has the architecture name with it, replace the
// architecture name with the primary architecture name to find the source vdex file.
installPath, relDir, name := getModuleInstallPathInfo(ctx, install.To)
if name != "" {
srcRelDir := strings.Replace(relDir, image.target.Arch.ArchType.Name, ctx.DeviceConfig().DeviceArch(), 1)
ctx.InstallSymlink(installPath.Join(ctx, relDir), name, installPath.Join(ctx, srcRelDir, name))
}
} else {
packageFile(ctx, install)
installPath, relDir, name := getModuleInstallPathInfo(ctx, install.To)
if name == "" {
continue
}
// Note that the vdex files are identical between architectures. Copy the vdex to a no arch directory
// and create symlinks for both the primary and secondary arches.
ctx.InstallSymlink(installPath.Join(ctx, relDir), name, installPath.Join(ctx, "framework", name))
if image.target.Arch.ArchType.Name == ctx.DeviceConfig().DeviceArch() {
// Copy the vdex from the primary arch to the no-arch directory
// e.g. /system/framework/$bootjar.vdex
ctx.InstallFile(installPath.Join(ctx, "framework"), name, install.From)
}
}
}