diff options
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 41 |
1 files changed, 28 insertions, 13 deletions
diff --git a/java/java.go b/java/java.go index 1c455f9c8..31c6afec8 100644 --- a/java/java.go +++ b/java/java.go @@ -420,6 +420,7 @@ var ( proguardRaiseTag = dependencyTag{name: "proguard-raise"} certificateTag = dependencyTag{name: "certificate"} instrumentationForTag = dependencyTag{name: "instrumentation_for"} + usesLibTag = dependencyTag{name: "uses-library"} ) type sdkDep struct { @@ -517,7 +518,8 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { if j.hasSrcExt(".kt") { // TODO(ccross): move this to a mutator pass that can tell if generated sources contain // Kotlin files - ctx.AddVariationDependencies(nil, kotlinStdlibTag, "kotlin-stdlib") + ctx.AddVariationDependencies(nil, kotlinStdlibTag, + "kotlin-stdlib", "kotlin-stdlib-jdk7", "kotlin-stdlib-jdk8") if len(j.properties.Plugins) > 0 { ctx.AddVariationDependencies(nil, kotlinAnnotationsTag, "kotlin-annotations") } @@ -639,7 +641,7 @@ func getLinkType(m *Module, name string) (ret linkType, stubs bool) { switch { case name == "core.current.stubs" || name == "core.platform.api.stubs" || name == "stub-annotations" || name == "private-stub-annotations-jar" || - name == "core-lambda-stubs": + name == "core-lambda-stubs" || name == "core-generated-annotation-stubs": return javaCore, true case ver == "core_current": return javaCore, false @@ -793,7 +795,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { deps.staticResourceJars = append(deps.staticResourceJars, dep.(*AndroidApp).exportPackage) } case kotlinStdlibTag: - deps.kotlinStdlib = dep.HeaderJars() + deps.kotlinStdlib = append(deps.kotlinStdlib, dep.HeaderJars()...) case kotlinAnnotationsTag: deps.kotlinAnnotations = dep.HeaderJars() } @@ -854,7 +856,7 @@ func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext sd ret = javaVersion } else if ctx.Device() && sdk <= 23 { ret = "1.7" - } else if ctx.Device() && sdk <= 28 || !ctx.Config().TargetOpenJDK9() { + } else if ctx.Device() && sdk <= 29 || !ctx.Config().TargetOpenJDK9() { ret = "1.8" } else if ctx.Device() && sdkContext.sdkVersion() != "" && sdk == android.FutureApiLevel { // TODO(ccross): once we generate stubs we should be able to use 1.9 for sdk_version: "current" @@ -962,7 +964,9 @@ func (j *Module) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaB return flags } -func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path) { +func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { + + hasSrcs := false j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl.Export_include_dirs) @@ -978,10 +982,15 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path } srcFiles = j.genSources(ctx, srcFiles, flags) + if len(srcFiles) > 0 { + hasSrcs = true + } srcJars := srcFiles.FilterByExt(".srcjar") srcJars = append(srcJars, deps.srcJars...) - srcJars = append(srcJars, extraSrcJars...) + if aaptSrcJar != nil { + srcJars = append(srcJars, aaptSrcJar) + } // Collect source files from compiledJavaSrcs, compiledSrcJars and filter out Exclude_srcs // that IDEInfo struct will use @@ -1170,7 +1179,10 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path j.resourceJar = resourceJars[0] } - jars = append(jars, deps.staticJars...) + if len(deps.staticJars) > 0 { + jars = append(jars, deps.staticJars...) + hasSrcs = true + } manifest := j.overrideManifest if !manifest.Valid() && j.properties.Manifest != nil { @@ -1281,7 +1293,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path j.implementationAndResourcesJar = implementationAndResourcesJar - if ctx.Device() && (Bool(j.properties.Installable) || Bool(j.deviceProperties.Compile_dex)) { + if ctx.Device() && hasSrcs && + (Bool(j.properties.Installable) || Bool(j.deviceProperties.Compile_dex)) { // Dex compilation var dexOutputFile android.ModuleOutPath dexOutputFile = j.compileDex(ctx, flags, outputFile, jarName) @@ -1289,9 +1302,11 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path return } - // Hidden API CSV generation and dex encoding - dexOutputFile = j.hiddenAPI.hiddenAPI(ctx, dexOutputFile, j.implementationJarFile, - j.deviceProperties.UncompressDex) + if !ctx.Config().UnbundledBuild() { + // Hidden API CSV generation and dex encoding + dexOutputFile = j.hiddenAPI.hiddenAPI(ctx, dexOutputFile, j.implementationJarFile, + j.deviceProperties.UncompressDex) + } // merge dex jar with resources if necessary if j.resourceJar != nil { @@ -1380,7 +1395,7 @@ func (j *Module) compileJavaHeader(ctx android.ModuleContext, srcFiles, srcJars // since we have to strip META-INF/TRANSITIVE dir from turbine.jar combinedJar := android.PathForModuleOut(ctx, "turbine-combined", jarName) TransformJarsToJar(ctx, combinedJar, "for turbine", jars, android.OptionalPath{}, - false, nil, []string{"META-INF"}) + false, nil, []string{"META-INF/TRANSITIVE"}) headerJar = combinedJar if j.expandJarjarRules != nil { @@ -1515,7 +1530,7 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) { j.dexpreopter.isInstallable = Bool(j.properties.Installable) j.dexpreopter.uncompressedDex = shouldUncompressDex(ctx, &j.dexpreopter) j.deviceProperties.UncompressDex = j.dexpreopter.uncompressedDex - j.compile(ctx) + j.compile(ctx, nil) if (Bool(j.properties.Installable) || ctx.Host()) && !android.DirectlyInAnyApex(ctx, ctx.ModuleName()) { j.installFile = ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"), |