Merge "Apply apimapper instrument tool on android tests" into main

This commit is contained in:
Yihan Dong
2024-09-04 00:52:09 +00:00
committed by Gerrit Code Review
3 changed files with 48 additions and 0 deletions

View File

@@ -233,6 +233,10 @@ type CommonProperties struct {
// Contributing api surface of the stub module. Is not visible to bp modules, and should
// only be set for stub submodules generated by the java_sdk_library
Stub_contributing_api *string `blueprint:"mutated"`
// If true, enable the "ApiMapper" tool on the output jar. "ApiMapper" is a tool to inject
// bytecode to log API calls.
ApiMapper bool `blueprint:"mutated"`
}
// Properties that are specific to device modules. Host module factories should not add these when
@@ -739,6 +743,10 @@ func (j *Module) shouldInstrument(ctx android.BaseModuleContext) bool {
ctx.DeviceConfig().JavaCoverageEnabledForPath(ctx.ModuleDir())
}
func (j *Module) shouldApiMapper() bool {
return j.properties.ApiMapper
}
func (j *Module) shouldInstrumentStatic(ctx android.BaseModuleContext) bool {
return j.properties.Supports_static_instrumentation &&
j.shouldInstrument(ctx) &&
@@ -767,6 +775,10 @@ func (j *Module) setInstrument(value bool) {
j.properties.Instrument = value
}
func (j *Module) setApiMapper(value bool) {
j.properties.ApiMapper = value
}
func (j *Module) SdkVersion(ctx android.EarlyModuleContext) android.SdkSpec {
return android.SdkSpecFrom(ctx, String(j.deviceProperties.Sdk_version))
}
@@ -1598,6 +1610,18 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
outputFile = ravenizerOutput
}
if j.shouldApiMapper() {
inputFile := outputFile
apiMapperFile := android.PathForModuleOut(ctx, "apimapper", jarName)
ctx.Build(pctx, android.BuildParams{
Rule: apimapper,
Description: "apimapper",
Input: inputFile,
Output: apiMapperFile,
})
outputFile = apiMapperFile
}
// Check package restrictions if necessary.
if len(j.properties.Permitted_packages) > 0 {
// Time stamp file created by the package check rule.