diff options
Diffstat (limited to 'java/app.go')
-rwxr-xr-x | java/app.go | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/java/app.go b/java/app.go index 0ec2502b..d9376540 100755 --- a/java/app.go +++ b/java/app.go @@ -542,7 +542,7 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) { dexJarFile := a.dexBuildActions(ctx) - jniLibs, certificateDeps := collectAppDeps(ctx, a.shouldEmbedJnis(ctx)) + jniLibs, certificateDeps := collectAppDeps(ctx, a.shouldEmbedJnis(ctx), !Bool(a.appProperties.Jni_uses_platform_apis)) jniJarFile := a.jniBuildActions(jniLibs, ctx) if ctx.Failed() { @@ -592,7 +592,8 @@ func (a *AndroidApp) generateAndroidBuildActions(ctx android.ModuleContext) { } } -func collectAppDeps(ctx android.ModuleContext, shouldCollectRecursiveNativeDeps bool) ([]jniLib, []Certificate) { +func collectAppDeps(ctx android.ModuleContext, shouldCollectRecursiveNativeDeps bool, + checkNativeSdkVersion bool) ([]jniLib, []Certificate) { var jniLibs []jniLib var certificates []Certificate seenModulePaths := make(map[string]bool) @@ -614,6 +615,18 @@ func collectAppDeps(ctx android.ModuleContext, shouldCollectRecursiveNativeDeps } seenModulePaths[path.String()] = true + if checkNativeSdkVersion { + if app, ok := ctx.Module().(interface{ sdkVersion() sdkSpec }); ok { + if app.sdkVersion().specified() && + app.sdkVersion().kind != sdkCorePlatform && + dep.SdkVersion() == "" { + ctx.PropertyErrorf("jni_libs", + "JNI dependency %q uses platform APIs, but this module does not", + otherName) + } + } + } + if lib.Valid() { jniLibs = append(jniLibs, jniLib{ name: ctx.OtherModuleName(module), @@ -1133,7 +1146,7 @@ func (a *AndroidAppImport) generateAndroidBuildActions(ctx android.ModuleContext ctx.ModuleErrorf("One and only one of certficate, presigned, and default_dev_cert properties must be set") } - _, certificates := collectAppDeps(ctx, false) + _, certificates := collectAppDeps(ctx, false, false) // TODO: LOCAL_EXTRACT_APK/LOCAL_EXTRACT_DPI_APK // TODO: LOCAL_PACKAGE_SPLITS @@ -1405,7 +1418,7 @@ func (r *RuntimeResourceOverlay) GenerateAndroidBuildActions(ctx android.ModuleC r.aapt.buildActions(ctx, r, "--no-resource-deduping", "--no-resource-removal") // Sign the built package - _, certificates := collectAppDeps(ctx, false) + _, certificates := collectAppDeps(ctx, false, false) certificates = processMainCert(r.ModuleBase, String(r.properties.Certificate), certificates, ctx) signed := android.PathForModuleOut(ctx, "signed", r.Name()+".apk") SignAppPackage(ctx, signed, r.aapt.exportPackage, certificates, nil) |