soong: Support system_server jars from apexes
Allow system_server jars delivered via apex. Regular system_server jars are located in /system/framework folder. But, jars delivered via apex are mounted at /apex/<module_name>/javalib. Bug: 144722612 Bug: 141785760 Test: Compiles Change-Id: Ia40bb91d2e05b2601a52eac28a985fe2d8da3481
This commit is contained in:
@@ -44,9 +44,10 @@ type GlobalConfig struct {
|
|||||||
ProductUpdatableBootModules []string
|
ProductUpdatableBootModules []string
|
||||||
ProductUpdatableBootLocations []string
|
ProductUpdatableBootLocations []string
|
||||||
|
|
||||||
SystemServerJars []string // jars that form the system server
|
SystemServerJars []string // jars that form the system server
|
||||||
SystemServerApps []string // apps that are loaded into system server
|
SystemServerApps []string // apps that are loaded into system server
|
||||||
SpeedApps []string // apps that should be speed optimized
|
UpdatableSystemServerJars []string // jars within apex that are loaded into system server
|
||||||
|
SpeedApps []string // apps that should be speed optimized
|
||||||
|
|
||||||
PreoptFlags []string // global dex2oat flags that should be used if no module-specific dex2oat flags are specified
|
PreoptFlags []string // global dex2oat flags that should be used if no module-specific dex2oat flags are specified
|
||||||
|
|
||||||
@@ -285,6 +286,7 @@ func GlobalConfigForTests(ctx android.PathContext) GlobalConfig {
|
|||||||
ProductUpdatableBootLocations: nil,
|
ProductUpdatableBootLocations: nil,
|
||||||
SystemServerJars: nil,
|
SystemServerJars: nil,
|
||||||
SystemServerApps: nil,
|
SystemServerApps: nil,
|
||||||
|
UpdatableSystemServerJars: nil,
|
||||||
SpeedApps: nil,
|
SpeedApps: nil,
|
||||||
PreoptFlags: nil,
|
PreoptFlags: nil,
|
||||||
DefaultCompilerFilter: "",
|
DefaultCompilerFilter: "",
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
package java
|
package java
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -65,6 +66,16 @@ func setDexpreoptTestGlobalConfig(config android.Config, globalConfig dexpreopt.
|
|||||||
var dexpreoptGlobalConfigKey = android.NewOnceKey("DexpreoptGlobalConfig")
|
var dexpreoptGlobalConfigKey = android.NewOnceKey("DexpreoptGlobalConfig")
|
||||||
var dexpreoptTestGlobalConfigKey = android.NewOnceKey("TestDexpreoptGlobalConfig")
|
var dexpreoptTestGlobalConfigKey = android.NewOnceKey("TestDexpreoptGlobalConfig")
|
||||||
|
|
||||||
|
// Expected format for apexJarValue = <apex name>:<jar name>
|
||||||
|
func splitApexJarPair(apexJarValue string) (string, string) {
|
||||||
|
var apexJarPair []string = strings.SplitN(apexJarValue, ":", 2)
|
||||||
|
if apexJarPair == nil || len(apexJarPair) != 2 {
|
||||||
|
panic(fmt.Errorf("malformed apexJarValue: %q, expected format: <apex>:<jar>",
|
||||||
|
apexJarValue))
|
||||||
|
}
|
||||||
|
return apexJarPair[0], apexJarPair[1]
|
||||||
|
}
|
||||||
|
|
||||||
// systemServerClasspath returns the on-device locations of the modules in the system server classpath. It is computed
|
// systemServerClasspath returns the on-device locations of the modules in the system server classpath. It is computed
|
||||||
// once the first time it is called for any ctx.Config(), and returns the same slice for all future calls with the same
|
// once the first time it is called for any ctx.Config(), and returns the same slice for all future calls with the same
|
||||||
// ctx.Config().
|
// ctx.Config().
|
||||||
@@ -77,6 +88,11 @@ func systemServerClasspath(ctx android.PathContext) []string {
|
|||||||
systemServerClasspathLocations = append(systemServerClasspathLocations,
|
systemServerClasspathLocations = append(systemServerClasspathLocations,
|
||||||
filepath.Join("/system/framework", m+".jar"))
|
filepath.Join("/system/framework", m+".jar"))
|
||||||
}
|
}
|
||||||
|
for _, m := range global.UpdatableSystemServerJars {
|
||||||
|
apex, jar := splitApexJarPair(m)
|
||||||
|
systemServerClasspathLocations = append(systemServerClasspathLocations,
|
||||||
|
filepath.Join("/apex", apex, "javalib", jar + ".jar"))
|
||||||
|
}
|
||||||
return systemServerClasspathLocations
|
return systemServerClasspathLocations
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user