Update sdk_version check for jni_libs of updatable apps
With aosp/1640364, all variants of a cc_* module use min_sdk_version as
the version part of the clang triple. Therefore, checking
min_sdk_version of jni_libs should be sufficient to ensure that there is
no unintended access to symbols in newer Android versions
Test: go test ./java
Test: TH
Bug: 155209650
Bug: 209409604
Change-Id: I6c064f8a6ea12c8aa40165a9063380306a180c9b
Merged-In: I6c064f8a6ea12c8aa40165a9063380306a180c9b
(cherry picked from commit 2e8c044b2c
)
This commit is contained in:
10
java/app.go
10
java/app.go
@@ -305,10 +305,6 @@ func (a *AndroidApp) checkAppSdkVersions(ctx android.ModuleContext) {
|
||||
|
||||
// If an updatable APK sets min_sdk_version, min_sdk_vesion of JNI libs should match with it.
|
||||
// This check is enforced for "updatable" APKs (including APK-in-APEX).
|
||||
// b/155209650: until min_sdk_version is properly supported, use sdk_version instead.
|
||||
// because, sdk_version is overridden by min_sdk_version (if set as smaller)
|
||||
// and sdkLinkType is checked with dependencies so we can be sure that the whole dependency tree
|
||||
// will meet the requirements.
|
||||
func (a *AndroidApp) checkJniLibsSdkVersion(ctx android.ModuleContext, minSdkVersion android.ApiLevel) {
|
||||
// It's enough to check direct JNI deps' sdk_version because all transitive deps from JNI deps are checked in cc.checkLinkType()
|
||||
ctx.VisitDirectDeps(func(m android.Module) {
|
||||
@@ -319,10 +315,10 @@ func (a *AndroidApp) checkJniLibsSdkVersion(ctx android.ModuleContext, minSdkVer
|
||||
// The domain of cc.sdk_version is "current" and <number>
|
||||
// We can rely on android.SdkSpec to convert it to <number> so that "current" is
|
||||
// handled properly regardless of sdk finalization.
|
||||
jniSdkVersion, err := android.SdkSpecFrom(ctx, dep.SdkVersion()).EffectiveVersion(ctx)
|
||||
jniSdkVersion, err := android.SdkSpecFrom(ctx, dep.MinSdkVersion()).EffectiveVersion(ctx)
|
||||
if err != nil || minSdkVersion.LessThan(jniSdkVersion) {
|
||||
ctx.OtherModuleErrorf(dep, "sdk_version(%v) is higher than min_sdk_version(%v) of the containing android_app(%v)",
|
||||
dep.SdkVersion(), minSdkVersion, ctx.ModuleName())
|
||||
ctx.OtherModuleErrorf(dep, "min_sdk_version(%v) is higher than min_sdk_version(%v) of the containing android_app(%v)",
|
||||
dep.MinSdkVersion(), minSdkVersion, ctx.ModuleName())
|
||||
return
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user