Add an Override_apex_available
property for APEX
This property allows an APEX bundle to ignore the apex_available rules defined in its dependencies, effectively allowing it to use any APEX as its dependency. Bug: 269660351 Test: m Change-Id: Ib2797e04438ad908ac10b256dce07a7819e836b3
This commit is contained in:
12
apex/apex.go
12
apex/apex.go
@@ -141,6 +141,9 @@ type apexBundleProperties struct {
|
||||
// Default: true.
|
||||
Installable *bool
|
||||
|
||||
// Whether this APEX ignores the apex_available list defined in its dependencies.
|
||||
Override_apex_available *bool
|
||||
|
||||
// If set true, VNDK libs are considered as stable libs and are not included in this APEX.
|
||||
// Should be only used in non-system apexes (e.g. vendor: true). Default is false.
|
||||
Use_vndk_as_stable *bool
|
||||
@@ -1513,6 +1516,10 @@ func (a *apexBundle) UsePlatformApis() bool {
|
||||
return proptools.BoolDefault(a.properties.Platform_apis, false)
|
||||
}
|
||||
|
||||
func (a *apexBundle) OverrideApexAvailable() bool {
|
||||
return proptools.BoolDefault(a.properties.Override_apex_available, false)
|
||||
}
|
||||
|
||||
// getCertString returns the name of the cert that should be used to sign this APEX. This is
|
||||
// basically from the "certificate" property, but could be overridden by the device config.
|
||||
func (a *apexBundle) getCertString(ctx android.BaseModuleContext) string {
|
||||
@@ -3040,6 +3047,11 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) {
|
||||
return
|
||||
}
|
||||
|
||||
// Ignore availability when `override_apex_available` is true.
|
||||
if a.OverrideApexAvailable() {
|
||||
return
|
||||
}
|
||||
|
||||
a.WalkPayloadDeps(ctx, func(ctx android.ModuleContext, from blueprint.Module, to android.ApexModule, externalDep bool) bool {
|
||||
// As soon as the dependency graph crosses the APEX boundary, don't go further.
|
||||
if externalDep {
|
||||
|
Reference in New Issue
Block a user