summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Roshan Pius <rpius@google.com> 2019-11-21 12:36:53 -0800
committer Roshan Pius <rpius@google.com> 2019-11-22 12:47:11 -0800
commit9b51a4078a80b815a888c0846c76cf9e21b0196a (patch)
treedd84b817afdd07e201c7352d12fb2ca5a57e2d86
parent126c57b52d93fc8c86ae438a9fb39ad704b38479 (diff)
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
-rw-r--r--dexpreopt/config.go8
-rw-r--r--java/dexpreopt_config.go16
2 files changed, 21 insertions, 3 deletions
diff --git a/dexpreopt/config.go b/dexpreopt/config.go
index 9215eff3f..f38d89297 100644
--- a/dexpreopt/config.go
+++ b/dexpreopt/config.go
@@ -44,9 +44,10 @@ type GlobalConfig struct {
ProductUpdatableBootModules []string
ProductUpdatableBootLocations []string
- SystemServerJars []string // jars that form the system server
- SystemServerApps []string // apps that are loaded into system server
- SpeedApps []string // apps that should be speed optimized
+ SystemServerJars []string // jars that form the system server
+ SystemServerApps []string // apps that are loaded into system server
+ 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
@@ -285,6 +286,7 @@ func GlobalConfigForTests(ctx android.PathContext) GlobalConfig {
ProductUpdatableBootLocations: nil,
SystemServerJars: nil,
SystemServerApps: nil,
+ UpdatableSystemServerJars: nil,
SpeedApps: nil,
PreoptFlags: nil,
DefaultCompilerFilter: "",
diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go
index a6661b33d..15f11e11c 100644
--- a/java/dexpreopt_config.go
+++ b/java/dexpreopt_config.go
@@ -15,6 +15,7 @@
package java
import (
+ "fmt"
"path/filepath"
"strings"
@@ -65,6 +66,16 @@ func setDexpreoptTestGlobalConfig(config android.Config, globalConfig dexpreopt.
var dexpreoptGlobalConfigKey = android.NewOnceKey("DexpreoptGlobalConfig")
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
// 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().
@@ -77,6 +88,11 @@ func systemServerClasspath(ctx android.PathContext) []string {
systemServerClasspathLocations = append(systemServerClasspathLocations,
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
})
}