Use system server jar module stem instead of its name

In the case a system server jar is added as a prebuilt
its Name() will prepend prebuilt_ to the module name.

By itself this doesn't cause any issue, but the format
of PRODUCT_SYSTEM_SERVER_JARS expects the second part
to match the "installed" jar and depending on that it
fills the AllPlatformSystemServerJars, that now can't be
indexed by the Name() of the prebuilt module.

To solve the issue use the module stem as GetSystemServerDexLocation
will construct a path based on that.

Test: m, prebuilt felix-services passes dexpreopt check
Change-Id: I7e61b958bb1772109446e56bad7a51dd81e8659e
This commit is contained in:
Luca Stefani 2025-03-07 17:41:33 +01:00 committed by Michael Bestas
parent 56a9345693
commit 52c50e8c08
No known key found for this signature in database

View file

@ -100,7 +100,12 @@ func (m *dexpreoptSystemserverCheck) GenerateAndroidBuildActions(ctx android.Mod
if systemServerJar.InstallInSystemExt() && ctx.Config().InstallApexSystemServerDexpreoptSamePartition() {
partition = ctx.DeviceConfig().SystemExtPath() // system_ext
}
dexLocation := dexpreopt.GetSystemServerDexLocation(ctx, global, systemServerJar.Name())
var dexLocation string
if m, ok := systemServerJar.(ModuleWithStem); ok {
dexLocation = dexpreopt.GetSystemServerDexLocation(ctx, global, m.Stem())
} else {
ctx.PropertyErrorf("dexpreopt_systemserver_check", "%v is not a ModuleWithStem", systemServerJar.Name())
}
odexLocation := dexpreopt.ToOdexPath(dexLocation, targets[0].Arch.ArchType, partition)
odexPath := getInstallPath(ctx, odexLocation)
vdexPath := getInstallPath(ctx, pathtools.ReplaceExtension(odexLocation, "vdex"))