Vendor apex sets "vndkVersion" when it uses vndk libs
Vendor apex with "use_vndk_as_stable:true" sets the dependency in "requireNativeLibs: ":vndk"". But this isn't enough because the APEX won't work if VNDK version mismatches. Now, when a vendor apex uses VNDK libs, "vndkVersion" is set as well in apex_manifest so that apexd can abort the installation/staging when device's VNDK version mimatches. Bug: 222620439 Test: VendorApexHostTestCases Test: built vendor apex how has "vndkVersion" field in its apex_manifest Change-Id: If03340c230efe854ab932cdf472c276f7646ad0c
This commit is contained in:
parent
c7e4dcf1e8
commit
d045ebca4c
2 changed files with 22 additions and 7 deletions
23
apex/apex.go
23
apex/apex.go
|
@ -734,12 +734,14 @@ func (a *apexBundle) combineProperties(ctx android.BottomUpMutatorContext) {
|
|||
}
|
||||
}
|
||||
|
||||
// getImageVariation returns the image variant name for this apexBundle. In most cases, it's simply
|
||||
// android.CoreVariation, but gets complicated for the vendor APEXes and the VNDK APEX.
|
||||
func (a *apexBundle) getImageVariation(ctx android.BottomUpMutatorContext) string {
|
||||
deviceConfig := ctx.DeviceConfig()
|
||||
// getImageVariationPair returns a pair for the image variation name as its
|
||||
// prefix and suffix. The prefix indicates whether it's core/vendor/product and the
|
||||
// suffix indicates the vndk version when it's vendor or product.
|
||||
// getImageVariation can simply join the result of this function to get the
|
||||
// image variation name.
|
||||
func (a *apexBundle) getImageVariationPair(deviceConfig android.DeviceConfig) (string, string) {
|
||||
if a.vndkApex {
|
||||
return cc.VendorVariationPrefix + a.vndkVersion(deviceConfig)
|
||||
return cc.VendorVariationPrefix, a.vndkVersion(deviceConfig)
|
||||
}
|
||||
|
||||
var prefix string
|
||||
|
@ -757,10 +759,17 @@ func (a *apexBundle) getImageVariation(ctx android.BottomUpMutatorContext) strin
|
|||
vndkVersion = deviceConfig.PlatformVndkVersion()
|
||||
}
|
||||
if vndkVersion != "" {
|
||||
return prefix + vndkVersion
|
||||
return prefix, vndkVersion
|
||||
}
|
||||
|
||||
return android.CoreVariation // The usual case
|
||||
return android.CoreVariation, "" // The usual case
|
||||
}
|
||||
|
||||
// getImageVariation returns the image variant name for this apexBundle. In most cases, it's simply
|
||||
// android.CoreVariation, but gets complicated for the vendor APEXes and the VNDK APEX.
|
||||
func (a *apexBundle) getImageVariation(ctx android.BottomUpMutatorContext) string {
|
||||
prefix, vndkVersion := a.getImageVariationPair(ctx.DeviceConfig())
|
||||
return prefix + vndkVersion
|
||||
}
|
||||
|
||||
func (a *apexBundle) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
|
|
|
@ -235,6 +235,12 @@ func (a *apexBundle) buildManifest(ctx android.ModuleContext, provideNativeLibs,
|
|||
optCommands = append(optCommands, "-a jniLibs "+strings.Join(jniLibs, " "))
|
||||
}
|
||||
|
||||
if android.InList(":vndk", requireNativeLibs) {
|
||||
if _, vndkVersion := a.getImageVariationPair(ctx.DeviceConfig()); vndkVersion != "" {
|
||||
optCommands = append(optCommands, "-v vndkVersion "+vndkVersion)
|
||||
}
|
||||
}
|
||||
|
||||
manifestJsonFullOut := android.PathForModuleOut(ctx, "apex_manifest_full.json")
|
||||
defaultVersion := android.DefaultUpdatableModuleVersion
|
||||
if override := ctx.Config().Getenv("OVERRIDE_APEX_MANIFEST_DEFAULT_VERSION"); override != "" {
|
||||
|
|
Loading…
Reference in a new issue