Enforce apex.min_sdk_version for bundled builds
Previously, when Q-targeting apexes are bundled-built, they are built against the latest stubs. It was because unwinder is linked dynamically in R and APIs are provided by libc while Q apexes should run on Q where libc doesn't provide those APIs. To make Q apexes run on Q device, libc++ should be linked with static unwinder. But, because libc++ with static unwinder may cause problem on HWASAN build, Q apexes were built against the latest stubs for bundled build. However, Q apexes should be built against Q stubs. Now, only for HWASAN builds, Q apexes are built against the latest stubs (and native modules are not linked with static unwinder). Bug: 151912436 Test: TARGET_SANITIZE=hwaddress m => Q apexes(media, resolv, ..) are linked with the latest stubs m => Q apexes are linked with Q stubs, and Q apexes' libc++ is linked with static unwinder Change-Id: If32f1b547e6d93e3955c7521eec8aef5851f908c
This commit is contained in:
@@ -92,12 +92,10 @@ type ApexModule interface {
|
||||
// APEX as this module
|
||||
DepIsInSameApex(ctx BaseModuleContext, dep Module) bool
|
||||
|
||||
// Returns the highest version which is <= min_sdk_version.
|
||||
// For example, with min_sdk_version is 10 and versionList is [9,11]
|
||||
// it returns 9.
|
||||
ChooseSdkVersion(versionList []string, useLatest bool) (string, error)
|
||||
|
||||
ShouldSupportAndroid10() bool
|
||||
// Returns the highest version which is <= maxSdkVersion.
|
||||
// For example, with maxSdkVersion is 10 and versionList is [9,11]
|
||||
// it returns 9 as string
|
||||
ChooseSdkVersion(versionList []string, maxSdkVersion int) (string, error)
|
||||
}
|
||||
|
||||
type ApexProperties struct {
|
||||
@@ -189,22 +187,14 @@ func (m *ApexModuleBase) DepIsInSameApex(ctx BaseModuleContext, dep Module) bool
|
||||
return true
|
||||
}
|
||||
|
||||
func (m *ApexModuleBase) ChooseSdkVersion(versionList []string, useLatest bool) (string, error) {
|
||||
if useLatest {
|
||||
return versionList[len(versionList)-1], nil
|
||||
}
|
||||
minSdkVersion := m.ApexProperties.Info.MinSdkVersion
|
||||
func (m *ApexModuleBase) ChooseSdkVersion(versionList []string, maxSdkVersion int) (string, error) {
|
||||
for i := range versionList {
|
||||
ver, _ := strconv.Atoi(versionList[len(versionList)-i-1])
|
||||
if ver <= minSdkVersion {
|
||||
if ver <= maxSdkVersion {
|
||||
return versionList[len(versionList)-i-1], nil
|
||||
}
|
||||
}
|
||||
return "", fmt.Errorf("min_sdk_version is set %v, but not found in %v", minSdkVersion, versionList)
|
||||
}
|
||||
|
||||
func (m *ApexModuleBase) ShouldSupportAndroid10() bool {
|
||||
return !m.IsForPlatform() && (m.ApexProperties.Info.MinSdkVersion <= SdkVersion_Android10)
|
||||
return "", fmt.Errorf("not found a version(<=%d) in versionList: %v", maxSdkVersion, versionList)
|
||||
}
|
||||
|
||||
func (m *ApexModuleBase) checkApexAvailableProperty(mctx BaseModuleContext) {
|
||||
|
Reference in New Issue
Block a user