From 0f59903d098b271011a252e4231d67c927c04642 Mon Sep 17 00:00:00 2001 From: Jerome Gaillard Date: Thu, 10 Oct 2019 19:29:11 +0100 Subject: [PATCH] Update droidstubs build target This allows to use Metalava to generate metadata files useful for Android Studio as part of a droidstubs target. Once those files have been created in a new metadata folder, they are zipped to make it easier to transfer them into the out/target/common/obj/PACKAGING folder where they can then be picked up by the SDK build to be included there. Bug: 142480924 Test: m sdk Change-Id: I4be1c9e78369c65ee9cd94706c6d20ab0df6b797 --- java/androidmk.go | 3 +++ java/droiddoc.go | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/java/androidmk.go b/java/androidmk.go index 5067e2f43..58b9b80f3 100644 --- a/java/androidmk.go +++ b/java/androidmk.go @@ -534,6 +534,9 @@ func (dstubs *Droidstubs) AndroidMkEntries() android.AndroidMkEntries { if dstubs.jdiffDocZip != nil { entries.SetPath("LOCAL_DROIDDOC_JDIFF_DOC_ZIP", dstubs.jdiffDocZip) } + if dstubs.metadataZip != nil { + entries.SetPath("LOCAL_DROIDDOC_METADATA_ZIP", dstubs.metadataZip) + } apiFilePrefix := "INTERNAL_PLATFORM_" if String(dstubs.properties.Api_tag_name) != "" { apiFilePrefix += String(dstubs.properties.Api_tag_name) + "_" diff --git a/java/droiddoc.go b/java/droiddoc.go index 8a283cd59..025beab5c 100644 --- a/java/droiddoc.go +++ b/java/droiddoc.go @@ -1193,6 +1193,9 @@ type Droidstubs struct { jdiffDocZip android.WritablePath jdiffStubsSrcJar android.WritablePath + + metadataZip android.WritablePath + metadataDir android.WritablePath } // droidstubs passes sources files through Metalava to generate stub .java files that only contain the API to be @@ -1304,7 +1307,8 @@ func (d *Droidstubs) stubsFlags(ctx android.ModuleContext, cmd *android.RuleBuil } if Bool(d.properties.Write_sdk_values) { - cmd.FlagWithArg("--sdk-values ", android.PathForModuleOut(ctx, "out").String()) + d.metadataDir = android.PathForModuleOut(ctx, "metadata") + cmd.FlagWithArg("--sdk-values ", d.metadataDir.String()) } if Bool(d.properties.Create_doc_stubs) { @@ -1511,6 +1515,18 @@ func (d *Droidstubs) GenerateAndroidBuildActions(ctx android.ModuleContext) { FlagWithOutput("-o ", d.Javadoc.stubsSrcJar). FlagWithArg("-C ", stubsDir.String()). FlagWithArg("-D ", stubsDir.String()) + + if Bool(d.properties.Write_sdk_values) { + d.metadataZip = android.PathForModuleOut(ctx, ctx.ModuleName()+"-metadata.zip") + rule.Command(). + BuiltTool(ctx, "soong_zip"). + Flag("-write_if_changed"). + Flag("-d"). + FlagWithOutput("-o ", d.metadataZip). + FlagWithArg("-C ", d.metadataDir.String()). + FlagWithArg("-D ", d.metadataDir.String()) + } + rule.Restat() zipSyncCleanupCmd(rule, srcJarDir)