Make manifest and APK agree on uncompressed native libs
Only put uncompressed native libs in an APK if the min_sdk_version
supports it (>= 23, Marshmallow), and set
android:extractNativeLibs="false" in the AndroidManifest.xml so
that the platform won't extract them anyways.
Bug: 117618214
Test: m checkbuild
Change-Id: I760017e48bf3c6b618aabde0982df45995765d48
diff --git a/java/android_manifest.go b/java/android_manifest.go
index 36f24ff..6d4399d 100644
--- a/java/android_manifest.go
+++ b/java/android_manifest.go
@@ -15,12 +15,13 @@
package java
import (
- "android/soong/java/config"
+ "fmt"
"strings"
"github.com/google/blueprint"
"android/soong/android"
+ "android/soong/java/config"
)
var manifestFixerRule = pctx.AndroidStaticRule("manifestFixer",
@@ -43,11 +44,22 @@
"libs")
func manifestMerger(ctx android.ModuleContext, manifest android.Path, sdkContext sdkContext,
- staticLibManifests android.Paths, isLibrary bool) android.Path {
+ staticLibManifests android.Paths, isLibrary bool, uncompressedJNI bool) android.Path {
var args []string
if isLibrary {
args = append(args, "--library")
+ } else {
+ minSdkVersion, err := sdkVersionToNumber(ctx, sdkContext.minSdkVersion())
+ if err != nil {
+ ctx.ModuleErrorf("invalid minSdkVersion: %s", err)
+ }
+ if minSdkVersion >= 23 {
+ args = append(args, fmt.Sprintf("--extract-native-libs=%v", !uncompressedJNI))
+ } else if uncompressedJNI {
+ ctx.ModuleErrorf("module attempted to store uncompressed native libraries, but minSdkVersion=%d doesn't support it",
+ minSdkVersion)
+ }
}
// Inject minSdkVersion into the manifest