Merge "Apply hiddenapi encoding to java_sdk_library .impl"
This commit is contained in:
commit
452bf39014
3 changed files with 33 additions and 7 deletions
|
@ -59,10 +59,9 @@ type hiddenAPIIntf interface {
|
|||
|
||||
var _ hiddenAPIIntf = (*hiddenAPI)(nil)
|
||||
|
||||
func (h *hiddenAPI) hiddenAPI(ctx android.ModuleContext, dexJar android.ModuleOutPath,
|
||||
func (h *hiddenAPI) hiddenAPI(ctx android.ModuleContext, name string, primary bool, dexJar android.ModuleOutPath,
|
||||
implementationJar android.Path, uncompressDex bool) android.ModuleOutPath {
|
||||
if !ctx.Config().IsEnvTrue("UNSAFE_DISABLE_HIDDENAPI_FLAGS") {
|
||||
name := ctx.ModuleName()
|
||||
|
||||
// Modules whose names are of the format <x>-hiddenapi provide hiddenapi information
|
||||
// for the boot jar module <x>. Otherwise, the module provides information for itself.
|
||||
|
@ -90,7 +89,14 @@ func (h *hiddenAPI) hiddenAPI(ctx android.ModuleContext, dexJar android.ModuleOu
|
|||
// the gathered information in the generated dex file.
|
||||
if name == bootJarName {
|
||||
hiddenAPIJar := android.PathForModuleOut(ctx, "hiddenapi", name+".jar")
|
||||
h.bootDexJarPath = dexJar
|
||||
|
||||
// More than one library with the same classes can be encoded but only one can
|
||||
// be added to the global set of flags, otherwise it will result in duplicate
|
||||
// classes which is an error. Therefore, only add the dex jar of one of them
|
||||
// to the global set of flags.
|
||||
if primary {
|
||||
h.bootDexJarPath = dexJar
|
||||
}
|
||||
hiddenAPIEncodeDex(ctx, hiddenAPIJar, dexJar, uncompressDex)
|
||||
dexJar = hiddenAPIJar
|
||||
}
|
||||
|
|
15
java/java.go
15
java/java.go
|
@ -342,6 +342,12 @@ type CompilerDeviceProperties struct {
|
|||
// otherwise provides defaults libraries to add to the bootclasspath.
|
||||
System_modules *string
|
||||
|
||||
// The name of the module as used in build configuration.
|
||||
//
|
||||
// Allows a library to separate its actual name from the name used in
|
||||
// build configuration, e.g.ctx.Config().BootJars().
|
||||
ConfigurationName *string `blueprint:"mutated"`
|
||||
|
||||
// set the name of the output
|
||||
Stem *string
|
||||
|
||||
|
@ -1631,8 +1637,11 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
|
|||
return
|
||||
}
|
||||
|
||||
configurationName := j.ConfigurationName()
|
||||
primary := configurationName == ctx.ModuleName()
|
||||
|
||||
// Hidden API CSV generation and dex encoding
|
||||
dexOutputFile = j.hiddenAPI.hiddenAPI(ctx, dexOutputFile, j.implementationJarFile,
|
||||
dexOutputFile = j.hiddenAPI.hiddenAPI(ctx, configurationName, primary, dexOutputFile, j.implementationJarFile,
|
||||
proptools.Bool(j.deviceProperties.Uncompress_dex))
|
||||
|
||||
// merge dex jar with resources if necessary
|
||||
|
@ -1909,6 +1918,10 @@ func (j *Module) Stem() string {
|
|||
return proptools.StringDefault(j.deviceProperties.Stem, j.Name())
|
||||
}
|
||||
|
||||
func (j *Module) ConfigurationName() string {
|
||||
return proptools.StringDefault(j.deviceProperties.ConfigurationName, j.BaseModuleName())
|
||||
}
|
||||
|
||||
func (j *Module) JacocoReportClassesFile() android.Path {
|
||||
return j.jacocoReportClassesFile
|
||||
}
|
||||
|
|
|
@ -1087,15 +1087,22 @@ func (module *SdkLibrary) latestRemovedApiFilegroupName(apiScope *apiScope) stri
|
|||
|
||||
// Creates the implementation java library
|
||||
func (module *SdkLibrary) createImplLibrary(mctx android.DefaultableHookContext) {
|
||||
|
||||
moduleNamePtr := proptools.StringPtr(module.BaseModuleName())
|
||||
|
||||
props := struct {
|
||||
Name *string
|
||||
Visibility []string
|
||||
Instrument bool
|
||||
Name *string
|
||||
Visibility []string
|
||||
Instrument bool
|
||||
ConfigurationName *string
|
||||
}{
|
||||
Name: proptools.StringPtr(module.implLibraryModuleName()),
|
||||
Visibility: module.sdkLibraryProperties.Impl_library_visibility,
|
||||
// Set the instrument property to ensure it is instrumented when instrumentation is required.
|
||||
Instrument: true,
|
||||
|
||||
// Make the created library behave as if it had the same name as this module.
|
||||
ConfigurationName: moduleNamePtr,
|
||||
}
|
||||
|
||||
properties := []interface{}{
|
||||
|
|
Loading…
Reference in a new issue