diff options
Diffstat (limited to 'java')
-rw-r--r-- | java/app_test.go | 3 | ||||
-rw-r--r-- | java/dexpreopt_config.go | 20 | ||||
-rw-r--r-- | java/java.go | 26 |
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) { |