From 0e8a2ee17209bb858c09a0c9d858191e9b2ccb2e Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 9 Oct 2018 10:17:55 -0700 Subject: [PATCH] Remove extra JNI libs from prebuilt APKs If an APK specifies LOCAL_PREBUILT_JNI_LIBS embedded in the prebuilt APK, remove any that aren't listed. Restores the behavior from before I82dd3aa441712772a1d1ddd6aaf5f41179facaa7. Bug: 69500920 Test: m checkbuild Change-Id: I971a9c4206604c172d77144df4c0ed9a8b1c5dd0 --- core/definitions.mk | 11 +++++++---- core/prebuilt_internal.mk | 6 +++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index b57813491d..5f73fb503f 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2416,11 +2416,14 @@ define uncompress-dexs fi endef -# Uncompress shared libraries embedded in an apk. +# Uncompress shared JNI libraries embedded in an apk. # -define uncompress-shared-libs - if (zipinfo $@ $(PRIVATE_EMBEDDED_JNI_LIBS) 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \ - $(ZIP2ZIP) -i $@ -o $@.tmp $(addprefix -0 ,$(patsubst 'lib/*.so','lib/**/*.so',$(PRIVATE_EMBEDDED_JNI_LIBS))) && \ +define uncompress-prebuilt-embedded-jni-libs + if (zipinfo $@ 'lib/*.so' 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \ + $(ZIP2ZIP) -i $@ -o $@.tmp -0 'lib/**/*.so' \ + $(if $(PRIVATE_EMBEDDED_JNI_LIBS), \ + -x 'lib/**/*.so' \ + $(addprefix -X ,$(PRIVATE_EMBEDDED_JNI_LIBS))) && \ mv -f $@.tmp $@ ; \ fi endef diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk index 30a9c37fe6..809c572f31 100644 --- a/core/prebuilt_internal.mk +++ b/core/prebuilt_internal.mk @@ -335,11 +335,11 @@ ifeq ($(LOCAL_CERTIFICATE),PRESIGNED) # For PRESIGNED apks we must uncompress every .so file: # even if the .so file isn't for the current TARGET_ARCH, # we can't strip the file. -embedded_prebuilt_jni_libs := 'lib/*.so' +embedded_prebuilt_jni_libs := endif ifndef embedded_prebuilt_jni_libs # No LOCAL_PREBUILT_JNI_LIBS, uncompress all. -embedded_prebuilt_jni_libs := 'lib/*.so' +embedded_prebuilt_jni_libs := endif $(built_module): PRIVATE_EMBEDDED_JNI_LIBS := $(embedded_prebuilt_jni_libs) $(built_module): $(ZIP2ZIP) @@ -358,7 +358,7 @@ $(built_module) : .KATI_IMPLICIT_OUTPUTS := $(dir $(LOCAL_BUILT_MODULE))package. endif $(built_module) : $(my_prebuilt_src_file) | $(ZIPALIGN) $(SIGNAPK_JAR) $(transform-prebuilt-to-target) - $(uncompress-shared-libs) + $(uncompress-prebuilt-embedded-jni-libs) ifeq (true, $(LOCAL_UNCOMPRESS_DEX)) $(uncompress-dexs) endif # LOCAL_UNCOMPRESS_DEX