Revert^2 "Always embed jni libs and store uncompressed"
a71b90cf810cfdd2bc74e7fcf7a2741fce14ff4f
Change-Id: I1c071c5449fa04adb14d17774f882e6adbff196b
diff --git a/java/app.go b/java/app.go
index 50d1a2f..0170ea1 100644
--- a/java/app.go
+++ b/java/app.go
@@ -90,20 +90,17 @@
Stl *string `android:"arch_variant"`
// Store native libraries uncompressed in the APK and set the android:extractNativeLibs="false" manifest
- // flag so that they are used from inside the APK at runtime. Defaults to true for android_test modules unless
- // sdk_version or min_sdk_version is set to a version that doesn't support it (<23), defaults to true for
- // android_app modules that are embedded to APEXes, defaults to false for other module types where the native
- // libraries are generally preinstalled outside the APK.
+ // flag so that they are used from inside the APK at runtime. This property is respected only for
+ // APKs built using android_test or android_test_helper_app. For other APKs, this property is ignored
+ // and native libraries are always embedded compressed.
Use_embedded_native_libs *bool
// Store dex files uncompressed in the APK and set the android:useEmbeddedDex="true" manifest attribute so that
// they are used from inside the APK at runtime.
Use_embedded_dex *bool
- // Forces native libraries to always be packaged into the APK,
- // Use_embedded_native_libs still selects whether they are stored uncompressed and aligned or compressed.
- // True for android_test* modules.
- AlwaysPackageNativeLibs bool `blueprint:"mutated"`
+ // Allows compressing of embedded native libs. Only for android_test and android_test_helper_app.
+ AllowCompressingNativeLibs bool `blueprint:"mutated"`
// If set, find and merge all NOTICE files that this module and its dependencies have and store
// it in the APK as an asset.
@@ -403,14 +400,20 @@
// Returns true if the native libraries should be stored in the APK uncompressed and the
// extractNativeLibs application flag should be set to false in the manifest.
func (a *AndroidApp) useEmbeddedNativeLibs(ctx android.ModuleContext) bool {
+ var useEmbedded bool
+ if a.appProperties.AllowCompressingNativeLibs {
+ useEmbedded = BoolDefault(a.appProperties.Use_embedded_native_libs, true)
+ } else {
+ useEmbedded = true // always uncompress for non-test apps
+ }
+
minSdkVersion, err := a.MinSdkVersion(ctx).EffectiveVersion(ctx)
if err != nil {
ctx.PropertyErrorf("min_sdk_version", "invalid value %q: %s", a.MinSdkVersion(ctx), err)
}
+ supported := minSdkVersion.FinalOrFutureInt() >= 23
- apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider)
- return (minSdkVersion.FinalOrFutureInt() >= 23 && Bool(a.appProperties.Use_embedded_native_libs)) ||
- !apexInfo.IsForPlatform()
+ return useEmbedded && supported
}
// Returns whether this module should have the dex file stored uncompressed in the APK.
@@ -433,9 +436,8 @@
}
func (a *AndroidApp) shouldEmbedJnis(ctx android.BaseModuleContext) bool {
- apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider)
- return ctx.Config().UnbundledBuild() || Bool(a.appProperties.Use_embedded_native_libs) ||
- !apexInfo.IsForPlatform() || a.appProperties.AlwaysPackageNativeLibs
+ // Always!
+ return true
}
func generateAaptRenamePackageFlags(packageName string, renameResourcesPackage bool) []string {
@@ -1400,8 +1402,7 @@
module.Module.properties.Instrument = true
module.Module.properties.Supports_static_instrumentation = true
module.Module.properties.Installable = proptools.BoolPtr(true)
- module.appProperties.Use_embedded_native_libs = proptools.BoolPtr(true)
- module.appProperties.AlwaysPackageNativeLibs = true
+ module.appProperties.AllowCompressingNativeLibs = true
module.Module.dexpreopter.isTest = true
module.Module.linter.properties.Lint.Test = proptools.BoolPtr(true)
@@ -1456,8 +1457,7 @@
module.Module.dexProperties.Optimize.EnabledByDefault = true
module.Module.properties.Installable = proptools.BoolPtr(true)
- module.appProperties.Use_embedded_native_libs = proptools.BoolPtr(true)
- module.appProperties.AlwaysPackageNativeLibs = true
+ module.appProperties.AllowCompressingNativeLibs = true
module.Module.dexpreopter.isTest = true
module.Module.linter.properties.Lint.Test = proptools.BoolPtr(true)