Use zip2zip for uncompress-dexs and uncompress-shared-libs
Unzipping and rezipping files causes the umask of the host machine to affect the permissions in the APK. Use the new zip2zip -0 feature to rewrite the zip file with selected files uncompressed. Bug: 69500920 Test: m checkbuild Change-Id: I82dd3aa441712772a1d1ddd6aaf5f41179facaa7
This commit is contained in:
@@ -2410,25 +2410,18 @@ endef
|
|||||||
# Uncompress dex files embedded in an apk.
|
# Uncompress dex files embedded in an apk.
|
||||||
#
|
#
|
||||||
define uncompress-dexs
|
define uncompress-dexs
|
||||||
$(hide) if (zipinfo $@ '*.dex' 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \
|
if (zipinfo $@ '*.dex' 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \
|
||||||
tmpdir=$@.tmpdir; \
|
$(ZIP2ZIP) -i $@ -o $@.tmp -0 "classes*.dex" && \
|
||||||
rm -rf $$tmpdir && mkdir $$tmpdir; \
|
mv -f $@.tmp $@ ; \
|
||||||
unzip -q $@ '*.dex' -d $$tmpdir && \
|
|
||||||
zip -qd $@ '*.dex' && \
|
|
||||||
( cd $$tmpdir && find . -type f | sort | zip -qD -X -0 ../$(notdir $@) -@ ) && \
|
|
||||||
rm -rf $$tmpdir; \
|
|
||||||
fi
|
fi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# Uncompress shared libraries embedded in an apk.
|
# Uncompress shared libraries embedded in an apk.
|
||||||
#
|
#
|
||||||
define uncompress-shared-libs
|
define uncompress-shared-libs
|
||||||
$(hide) if (zipinfo $@ $(PRIVATE_EMBEDDED_JNI_LIBS) 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \
|
if (zipinfo $@ $(PRIVATE_EMBEDDED_JNI_LIBS) 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \
|
||||||
rm -rf $(dir $@)uncompressedlibs && mkdir $(dir $@)uncompressedlibs; \
|
$(ZIP2ZIP) -i $@ -o $@.tmp $(addprefix -0 ,$(patsubst 'lib/*.so','lib/**/*.so',$(PRIVATE_EMBEDDED_JNI_LIBS))) && \
|
||||||
unzip -q $@ $(PRIVATE_EMBEDDED_JNI_LIBS) -d $(dir $@)uncompressedlibs && \
|
mv -f $@.tmp $@ ; \
|
||||||
zip -qd $@ 'lib/*.so' && \
|
|
||||||
( cd $(dir $@)uncompressedlibs && find lib -type f | sort | zip -qD -X -0 ../$(notdir $@) -@ ) && \
|
|
||||||
rm -rf $(dir $@)uncompressedlibs; \
|
|
||||||
fi
|
fi
|
||||||
endef
|
endef
|
||||||
|
|
||||||
@@ -2473,7 +2466,7 @@ $(2): $(1)
|
|||||||
endef
|
endef
|
||||||
|
|
||||||
define copy-and-uncompress-dexs
|
define copy-and-uncompress-dexs
|
||||||
$(2): $(1) $(ZIPALIGN)
|
$(2): $(1) $(ZIPALIGN) $(ZIP2ZIP)
|
||||||
@echo "Uncompress dexs in: $$@"
|
@echo "Uncompress dexs in: $$@"
|
||||||
$$(copy-file-to-target)
|
$$(copy-file-to-target)
|
||||||
$$(uncompress-dexs)
|
$$(uncompress-dexs)
|
||||||
|
@@ -620,6 +620,9 @@ endif # LOCAL_USE_AAPT2
|
|||||||
ifdef LOCAL_COMPRESSED_MODULE
|
ifdef LOCAL_COMPRESSED_MODULE
|
||||||
$(LOCAL_BUILT_MODULE) : $(MINIGZIP)
|
$(LOCAL_BUILT_MODULE) : $(MINIGZIP)
|
||||||
endif
|
endif
|
||||||
|
ifeq (true, $(LOCAL_UNCOMPRESS_DEX))
|
||||||
|
$(LOCAL_BUILT_MODULE) : $(ZIP2ZIP)
|
||||||
|
endif
|
||||||
ifneq ($(BUILD_PLATFORM_ZIP),)
|
ifneq ($(BUILD_PLATFORM_ZIP),)
|
||||||
$(LOCAL_BUILT_MODULE) : .KATI_IMPLICIT_OUTPUTS := $(dir $(LOCAL_BUILT_MODULE))package.dex.apk
|
$(LOCAL_BUILT_MODULE) : .KATI_IMPLICIT_OUTPUTS := $(dir $(LOCAL_BUILT_MODULE))package.dex.apk
|
||||||
endif
|
endif
|
||||||
@@ -685,6 +688,9 @@ endif
|
|||||||
## Rule to build the odex file
|
## Rule to build the odex file
|
||||||
ifdef LOCAL_DEX_PREOPT
|
ifdef LOCAL_DEX_PREOPT
|
||||||
$(built_odex): PRIVATE_DEX_FILE := $(built_dex)
|
$(built_odex): PRIVATE_DEX_FILE := $(built_dex)
|
||||||
|
ifeq (true, $(LOCAL_UNCOMPRESS_DEX))
|
||||||
|
$(built_odex): $(ZIP2ZIP)
|
||||||
|
endif
|
||||||
# Use pattern rule - we may have multiple built odex files.
|
# Use pattern rule - we may have multiple built odex files.
|
||||||
$(built_odex) : $(dir $(LOCAL_BUILT_MODULE))% : $(built_dex)
|
$(built_odex) : $(dir $(LOCAL_BUILT_MODULE))% : $(built_dex)
|
||||||
$(hide) mkdir -p $(dir $@) && rm -f $@
|
$(hide) mkdir -p $(dir $@) && rm -f $@
|
||||||
|
@@ -342,6 +342,7 @@ ifndef embedded_prebuilt_jni_libs
|
|||||||
embedded_prebuilt_jni_libs := 'lib/*.so'
|
embedded_prebuilt_jni_libs := 'lib/*.so'
|
||||||
endif
|
endif
|
||||||
$(built_module): PRIVATE_EMBEDDED_JNI_LIBS := $(embedded_prebuilt_jni_libs)
|
$(built_module): PRIVATE_EMBEDDED_JNI_LIBS := $(embedded_prebuilt_jni_libs)
|
||||||
|
$(built_module): $(ZIP2ZIP)
|
||||||
|
|
||||||
ifdef LOCAL_COMPRESSED_MODULE
|
ifdef LOCAL_COMPRESSED_MODULE
|
||||||
$(built_module) : $(MINIGZIP)
|
$(built_module) : $(MINIGZIP)
|
||||||
|
Reference in New Issue
Block a user