summaryrefslogtreecommitdiff
path: root/java/hiddenapi.go
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2021-05-14 01:13:55 +0100
committer Paul Duffin <paulduffin@google.com> 2021-05-14 01:45:42 +0100
commit001e606e5c92067467ced8c3f83fd6bf341e6eae (patch)
treea3784b885430f6d0ce4ea62000ef87b680c3fda7 /java/hiddenapi.go
parentf4600f6e6af978fe162dcdc0ade8651c050f9cce (diff)
Populate hiddenAPI structure even when not active
The modular hidden API processing needs access to the classesJarPaths and bootDexJarPath fields of the hiddenAPI structure even if the modules are not themselves considered to be active participants in the existing hidden API processing. This change moves the initialization of those fields to before inactive modules are ignored. Bug: 179354495 Test: m art-module-sdk out/soong/hiddenapi/hiddenapi-flags.csv Change-Id: I06f96d39d0b413295d3e2af50453ebe7e4d3e9c8
Diffstat (limited to 'java/hiddenapi.go')
-rw-r--r--java/hiddenapi.go30
1 files changed, 17 insertions, 13 deletions
diff --git a/java/hiddenapi.go b/java/hiddenapi.go
index a34044f32..ea2a851c0 100644
--- a/java/hiddenapi.go
+++ b/java/hiddenapi.go
@@ -208,12 +208,13 @@ func isModuleInBootClassPath(ctx android.BaseModuleContext, module android.Modul
func (h *hiddenAPI) hiddenAPIExtractAndEncode(ctx android.ModuleContext, dexJar android.OutputPath,
implementationJar android.Path, uncompressDex bool) android.OutputPath {
+ // Call before checking if this is active as it will update the hiddenAPI structure.
+ h.hiddenAPIExtractInformation(ctx, dexJar, implementationJar)
+
if !h.active {
return dexJar
}
- h.hiddenAPIExtractInformation(ctx, dexJar, implementationJar)
-
hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", h.configurationName+".jar").OutputPath
// Create a copy of the dex jar which has been encoded with hiddenapi flags.
@@ -231,6 +232,20 @@ func (h *hiddenAPI) hiddenAPIExtractAndEncode(ctx android.ModuleContext, dexJar
// It also makes the dex jar available for use when generating the
// hiddenAPISingletonPathsStruct.stubFlags.
func (h *hiddenAPI) hiddenAPIExtractInformation(ctx android.ModuleContext, dexJar, classesJar android.Path) {
+
+ // Save the classes jars even if this is not active as they may be used by modular hidden API
+ // processing.
+ classesJars := android.Paths{classesJar}
+ ctx.VisitDirectDepsWithTag(hiddenApiAnnotationsTag, func(dep android.Module) {
+ javaInfo := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo)
+ classesJars = append(classesJars, javaInfo.ImplementationJars...)
+ })
+ h.classesJarPaths = classesJars
+
+ // Save the unencoded dex jar so it can be used when generating the
+ // hiddenAPISingletonPathsStruct.stubFlags file.
+ h.bootDexJarPath = dexJar
+
if !h.active {
return
}
@@ -242,13 +257,6 @@ func (h *hiddenAPI) hiddenAPIExtractInformation(ctx android.ModuleContext, dexJa
return
}
- classesJars := android.Paths{classesJar}
- ctx.VisitDirectDepsWithTag(hiddenApiAnnotationsTag, func(dep android.Module) {
- javaInfo := ctx.OtherModuleProvider(dep, JavaInfoProvider).(JavaInfo)
- classesJars = append(classesJars, javaInfo.ImplementationJars...)
- })
- h.classesJarPaths = classesJars
-
stubFlagsCSV := hiddenAPISingletonPaths(ctx).stubFlags
flagsCSV := android.PathForModuleOut(ctx, "hiddenapi", "flags.csv")
@@ -289,10 +297,6 @@ func (h *hiddenAPI) hiddenAPIExtractInformation(ctx android.ModuleContext, dexJa
Inputs(classesJars)
rule.Build("merged-hiddenapi-index", "Merged Hidden API index")
h.indexCSVPath = indexCSV
-
- // Save the unencoded dex jar so it can be used when generating the
- // hiddenAPISingletonPathsStruct.stubFlags file.
- h.bootDexJarPath = dexJar
}
var hiddenAPIEncodeDexRule = pctx.AndroidStaticRule("hiddenAPIEncodeDex", blueprint.RuleParams{