aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorJiyong Park <jiyong@google.com>2019-08-19 14:56:02 +0900
committerJiyong Park <jiyong@google.com>2019-08-29 13:57:32 +0900
commitb7c639e0b3593eaf58393ee679732eeeb357865d (patch)
tree006a19b0077df2e019e704b15763bfa5b65172c8 /java
parent63cce391665117abc509b9938aaac0b1ce780b8e (diff)
downloadbuild_soong-b7c639e0b3593eaf58393ee679732eeeb357865d.tar.gz
build_soong-b7c639e0b3593eaf58393ee679732eeeb357865d.tar.bz2
build_soong-b7c639e0b3593eaf58393ee679732eeeb357865d.zip
Prepare to be able to put framework-res in srcs
This change introduces two changes required to put framework-res explicitly in srcs property, without relying on the build system to specially add framework-res as a dependency to framework-minus-apex, etc. 1) R.java and Manifest.java generated from aapt were packaged to the file R.jar directly under the gen directory. With this change, the file becomes android/R.srcjar under the gen directory. 2) android_app module now overrides OutputFileProducer interface so that it can recognize "{.aapt.srcjar}" tag to reference the generated srcjar file. Being able to put framework-res in srcs allows us to pass all the source files (both in the source tree and the ones generates) via a filegroup. Previously, the source files could only be passed via the java_library module type. This caused a circular dependency problem when the java library was used as an input (src_libs) of the droiddoc module. Using filegroup eliminates the circular dependency. Bug: 70046217 Test: m Merged-In: I9ab6116bcc6fa3da60933d427575463b05ae69b4 (cherry picked from commit 94f37f33ed9dc5c7ad6ff901f5aa613970513ead) Change-Id: I9ab6116bcc6fa3da60933d427575463b05ae69b4
Diffstat (limited to 'java')
-rw-r--r--java/aar.go6
-rw-r--r--java/app.go9
2 files changed, 13 insertions, 2 deletions
diff --git a/java/aar.go b/java/aar.go
index a4e6f910..f5d7e976 100644
--- a/java/aar.go
+++ b/java/aar.go
@@ -249,7 +249,8 @@ func (a *aapt) buildActions(ctx android.ModuleContext, sdkContext sdkContext, ex
}
packageRes := android.PathForModuleOut(ctx, "package-res.apk")
- srcJar := android.PathForModuleGen(ctx, "R.jar")
+ // the subdir "android" is required to be filtered by package names
+ srcJar := android.PathForModuleGen(ctx, "android", "R.srcjar")
proguardOptionsFile := android.PathForModuleGen(ctx, "proguard.options")
rTxt := android.PathForModuleOut(ctx, "R.txt")
// This file isn't used by Soong, but is generated for exporting
@@ -620,7 +621,8 @@ func (a *AARImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
aapt2CompileZip(ctx, flata, aar, "res", compileFlags)
a.exportPackage = android.PathForModuleOut(ctx, "package-res.apk")
- srcJar := android.PathForModuleGen(ctx, "R.jar")
+ // the subdir "android" is required to be filtered by package names
+ srcJar := android.PathForModuleGen(ctx, "android", "R.srcjar")
proguardOptionsFile := android.PathForModuleGen(ctx, "proguard.options")
rTxt := android.PathForModuleOut(ctx, "R.txt")
a.extraAaptPackagesFile = android.PathForModuleOut(ctx, "extra_packages")
diff --git a/java/app.go b/java/app.go
index 7df4358d..0af89fd2 100644
--- a/java/app.go
+++ b/java/app.go
@@ -539,6 +539,15 @@ func (a *AndroidApp) getCertString(ctx android.BaseModuleContext) string {
return String(a.overridableAppProperties.Certificate)
}
+// For OutputFileProducer interface
+func (a *AndroidApp) OutputFiles(tag string) (android.Paths, error) {
+ switch tag {
+ case ".aapt.srcjar":
+ return []android.Path{a.aaptSrcJar}, nil
+ }
+ return a.Library.OutputFiles(tag)
+}
+
// android_app compiles sources and Android resources into an Android application package `.apk` file.
func AndroidAppFactory() android.Module {
module := &AndroidApp{}