Add API compatilibility flags to the exportable stubs
The API compatibility flags allow the APIs that have moved between API surfaces to be correctly represented in the stub artifacts by passing the previously released set of APIs and removed APIs. These information should be passed to metalava when generating the exportable stubs, so that the APIs that move between the API surfaces are not blocked in the hiddenapi flags. Test: patch to 24Q3-beta-release, lunch sdk-trunk_staging-eng && m sdk dist and ensure that the expected methods are not blocked in the hiddenapi flags Bug: 330753520 Change-Id: I030b0a46b09f0cea026fedc879f10d4edfd38ac3
This commit is contained in:
parent
8426848ade
commit
472f73fdac
1 changed files with 22 additions and 14 deletions
|
@ -687,6 +687,23 @@ func (d *Droidstubs) apiLevelsGenerationFlags(ctx android.ModuleContext, cmd *an
|
|||
}
|
||||
}
|
||||
|
||||
func (d *Droidstubs) apiCompatibilityFlags(ctx android.ModuleContext, cmd *android.RuleBuilderCommand, stubsType StubsType) {
|
||||
if len(d.Javadoc.properties.Out) > 0 {
|
||||
ctx.PropertyErrorf("out", "out property may not be combined with check_api")
|
||||
}
|
||||
|
||||
apiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Last_released.Api_file))
|
||||
removedApiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Last_released.Removed_api_file))
|
||||
|
||||
cmd.FlagWithInput("--check-compatibility:api:released ", apiFile)
|
||||
cmd.FlagWithInput("--check-compatibility:removed:released ", removedApiFile)
|
||||
|
||||
baselineFile := android.OptionalPathForModuleSrc(ctx, d.properties.Check_api.Last_released.Baseline_file)
|
||||
if baselineFile.Valid() {
|
||||
cmd.FlagWithInput("--baseline:compatibility:released ", baselineFile.Path())
|
||||
}
|
||||
}
|
||||
|
||||
func metalavaUseRbe(ctx android.ModuleContext) bool {
|
||||
return ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_METALAVA")
|
||||
}
|
||||
|
@ -831,6 +848,10 @@ func (d *Droidstubs) commonMetalavaStubCmd(ctx android.ModuleContext, rule *andr
|
|||
d.inclusionAnnotationsFlags(ctx, cmd)
|
||||
d.apiLevelsAnnotationsFlags(ctx, cmd, params.stubConfig.stubsType, params.apiVersionsXml)
|
||||
|
||||
if params.stubConfig.doCheckReleased {
|
||||
d.apiCompatibilityFlags(ctx, cmd, params.stubConfig.stubsType)
|
||||
}
|
||||
|
||||
d.expandArgs(ctx, cmd)
|
||||
|
||||
for _, o := range d.Javadoc.properties.Out {
|
||||
|
@ -989,25 +1010,12 @@ func (d *Droidstubs) everythingOptionalCmd(ctx android.ModuleContext, cmd *andro
|
|||
|
||||
// Add "check released" options. (Detect incompatible API changes from the last public release)
|
||||
if doCheckReleased {
|
||||
if len(d.Javadoc.properties.Out) > 0 {
|
||||
ctx.PropertyErrorf("out", "out property may not be combined with check_api")
|
||||
}
|
||||
|
||||
apiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Last_released.Api_file))
|
||||
removedApiFile := android.PathForModuleSrc(ctx, String(d.properties.Check_api.Last_released.Removed_api_file))
|
||||
baselineFile := android.OptionalPathForModuleSrc(ctx, d.properties.Check_api.Last_released.Baseline_file)
|
||||
updatedBaselineOutput := android.PathForModuleOut(ctx, Everything.String(), "last_released_baseline.txt")
|
||||
|
||||
d.checkLastReleasedApiTimestamp = android.PathForModuleOut(ctx, Everything.String(), "check_last_released_api.timestamp")
|
||||
|
||||
cmd.FlagWithInput("--check-compatibility:api:released ", apiFile)
|
||||
cmd.FlagWithInput("--check-compatibility:removed:released ", removedApiFile)
|
||||
|
||||
if baselineFile.Valid() {
|
||||
cmd.FlagWithInput("--baseline:compatibility:released ", baselineFile.Path())
|
||||
updatedBaselineOutput := android.PathForModuleOut(ctx, Everything.String(), "last_released_baseline.txt")
|
||||
cmd.FlagWithOutput("--update-baseline:compatibility:released ", updatedBaselineOutput)
|
||||
}
|
||||
|
||||
// Note this string includes quote ($' ... '), which decodes the "\n"s.
|
||||
msg := `$'\n******************************\n` +
|
||||
`You have tried to change the API from what has been previously released in\n` +
|
||||
|
|
Loading…
Reference in a new issue