summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/app_test.go3
-rw-r--r--java/dexpreopt_config.go20
-rw-r--r--java/java.go26
3 files changed, 36 insertions, 13 deletions
diff --git a/java/app_test.go b/java/app_test.go
index 7e461bcb0..fc8cf8e90 100644
--- a/java/app_test.go
+++ b/java/app_test.go
@@ -399,18 +399,21 @@ func TestAndroidResources(t *testing.T) {
android_library {
name: "lib",
+ sdk_version: "current",
resource_dirs: ["lib/res"],
static_libs: ["lib2"],
}
android_library {
name: "lib2",
+ sdk_version: "current",
resource_dirs: ["lib2/res"],
}
// This library has the same resources as lib (should not lead to dupe RROs)
android_library {
name: "lib3",
+ sdk_version: "current",
resource_dirs: ["lib/res"]
}
`
diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go
index 4747c645c..4dd7cfe80 100644
--- a/java/dexpreopt_config.go
+++ b/java/dexpreopt_config.go
@@ -78,9 +78,8 @@ func systemServerClasspath(ctx android.PathContext) []string {
filepath.Join("/system/framework", m+".jar"))
}
for _, m := range global.UpdatableSystemServerJars {
- apex, jar := dexpreopt.SplitApexJarPair(m)
systemServerClasspathLocations = append(systemServerClasspathLocations,
- filepath.Join("/apex", apex, "javalib", jar+".jar"))
+ dexpreopt.GetJarLocationFromApexJarPair(m))
}
return systemServerClasspathLocations
})
@@ -111,6 +110,15 @@ func stemOf(moduleName string) string {
return moduleName
}
+func getJarsFromApexJarPairs(apexJarPairs []string) []string {
+ modules := make([]string, len(apexJarPairs))
+ for i, p := range apexJarPairs {
+ _, jar := dexpreopt.SplitApexJarPair(p)
+ modules[i] = jar
+ }
+ return modules
+}
+
// Construct a variant of the global config for dexpreopted bootclasspath jars. The variants differ
// in the list of input jars (libcore, framework, or both), in the naming scheme for the dexpreopt
// files (ART recognizes "apex" names as special), and whether to include a zip archive.
@@ -134,7 +142,7 @@ func getBootImageConfig(ctx android.PathContext, key android.OnceKey, name strin
}
if !artApexJarsOnly {
- nonFrameworkModules := concat(artModules, global.ProductUpdatableBootModules)
+ nonFrameworkModules := concat(artModules, getJarsFromApexJarPairs(global.UpdatableBootJars))
frameworkModules := android.RemoveListFromList(global.BootJars, nonFrameworkModules)
imageModules = concat(imageModules, frameworkModules)
@@ -218,7 +226,11 @@ func defaultBootclasspath(ctx android.PathContext) []string {
return ctx.Config().OnceStringSlice(defaultBootclasspathKey, func() []string {
global := dexpreoptGlobalConfig(ctx)
image := defaultBootImageConfig(ctx)
- bootclasspath := append(copyOf(image.dexLocations), global.ProductUpdatableBootLocations...)
+ updatableBootclasspath := make([]string, len(global.UpdatableBootJars))
+ for i, p := range global.UpdatableBootJars {
+ updatableBootclasspath[i] = dexpreopt.GetJarLocationFromApexJarPair(p)
+ }
+ bootclasspath := append(copyOf(image.dexLocations), updatableBootclasspath...)
return bootclasspath
})
}
diff --git a/java/java.go b/java/java.go
index 50fa135d5..9c0fcbaa0 100644
--- a/java/java.go
+++ b/java/java.go
@@ -689,7 +689,12 @@ const (
javaPlatform
)
-func getLinkType(m *Module, name string) (ret linkType, stubs bool) {
+type linkTypeContext interface {
+ android.Module
+ getLinkType(name string) (ret linkType, stubs bool)
+}
+
+func (m *Module) getLinkType(name string) (ret linkType, stubs bool) {
ver := m.sdkVersion()
switch {
case name == "core.current.stubs" || name == "core.platform.api.stubs" ||
@@ -720,16 +725,16 @@ func getLinkType(m *Module, name string) (ret linkType, stubs bool) {
}
}
-func checkLinkType(ctx android.ModuleContext, from *Module, to *Library, tag dependencyTag) {
+func checkLinkType(ctx android.ModuleContext, from *Module, to linkTypeContext, tag dependencyTag) {
if ctx.Host() {
return
}
- myLinkType, stubs := getLinkType(from, ctx.ModuleName())
+ myLinkType, stubs := from.getLinkType(ctx.ModuleName())
if stubs {
return
}
- otherLinkType, _ := getLinkType(&to.Module, ctx.OtherModuleName(to))
+ otherLinkType, _ := to.getLinkType(ctx.OtherModuleName(to))
commonMessage := "Adjust sdk_version: property of the source or target module so that target module is built with the same or smaller API set than the source."
switch myLinkType {
@@ -786,11 +791,14 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
// Handled by AndroidApp.collectAppDeps
return
}
-
- if to, ok := module.(*Library); ok {
- switch tag {
- case bootClasspathTag, libTag, staticLibTag:
- checkLinkType(ctx, j, to, tag.(dependencyTag))
+ switch module.(type) {
+ case *Library:
+ case *AndroidLibrary:
+ if to, ok := module.(linkTypeContext); ok {
+ switch tag {
+ case bootClasspathTag, libTag, staticLibTag:
+ checkLinkType(ctx, j, to, tag.(dependencyTag))
+ }
}
}
switch dep := module.(type) {