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
This commit is contained in:
@@ -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{
|
||||
|
Reference in New Issue
Block a user