Add future_updatable to the apex module
The new property is used to mimic some of the build behaviors that currently are applied only when an APEX is `updatable: true`. This property is helpful to minimize the sudden impact (e.g. change in size) when an APEX becomes updatable. Currently, the behavior that this property mimics is the disabling of the size optimization. Bug: 207336449 Test: m Change-Id: I500306afa1221625fda3e89a8d12d5d341791a1f
This commit is contained in:
17
apex/apex.go
17
apex/apex.go
@@ -130,6 +130,13 @@ type apexBundleProperties struct {
|
||||
// symlinking to the system libs. Default is true.
|
||||
Updatable *bool
|
||||
|
||||
// Marks that this APEX is designed to be updatable in the future, although it's not
|
||||
// updatable yet. This is used to mimic some of the build behaviors that are applied only to
|
||||
// updatable APEXes. Currently, this disables the size optimization, so that the size of
|
||||
// APEX will not increase when the APEX is actually marked as truly updatable. Default is
|
||||
// false.
|
||||
Future_updatable *bool
|
||||
|
||||
// Whether this APEX can use platform APIs or not. Can be set to true only when `updatable:
|
||||
// false`. Default is false.
|
||||
Platform_apis *bool
|
||||
@@ -1306,6 +1313,10 @@ func (a *apexBundle) Updatable() bool {
|
||||
return proptools.BoolDefault(a.properties.Updatable, true)
|
||||
}
|
||||
|
||||
func (a *apexBundle) FutureUpdatable() bool {
|
||||
return proptools.BoolDefault(a.properties.Future_updatable, false)
|
||||
}
|
||||
|
||||
func (a *apexBundle) UsePlatformApis() bool {
|
||||
return proptools.BoolDefault(a.properties.Platform_apis, false)
|
||||
}
|
||||
@@ -2105,10 +2116,11 @@ func (a *apexBundle) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
}
|
||||
|
||||
forced := ctx.Config().ForceApexSymlinkOptimization()
|
||||
updatable := a.Updatable() || a.FutureUpdatable()
|
||||
|
||||
// We don't need the optimization for updatable APEXes, as it might give false signal
|
||||
// to the system health when the APEXes are still bundled (b/149805758).
|
||||
if !forced && a.Updatable() && a.properties.ApexType == imageApex {
|
||||
if !forced && updatable && a.properties.ApexType == imageApex {
|
||||
a.linkToSystemLib = false
|
||||
}
|
||||
|
||||
@@ -2380,6 +2392,9 @@ func (a *apexBundle) checkUpdatable(ctx android.ModuleContext) {
|
||||
if a.SocSpecific() || a.DeviceSpecific() {
|
||||
ctx.PropertyErrorf("updatable", "vendor APEXes are not updatable")
|
||||
}
|
||||
if a.FutureUpdatable() {
|
||||
ctx.PropertyErrorf("future_updatable", "Already updatable. Remove `future_updatable: true:`")
|
||||
}
|
||||
a.checkJavaStableSdkVersion(ctx)
|
||||
a.checkClasspathFragments(ctx)
|
||||
}
|
||||
|
Reference in New Issue
Block a user