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
Merged-In: If32f1b547e6d93e3955c7521eec8aef5851f908c
Change-Id: If32f1b547e6d93e3955c7521eec8aef5851f908c
(cherry picked from commit 7406660685
)
Exempt-From-Owner-Approval: cp from internal
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 {
|
||||
@@ -193,22 +191,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