Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09dfe673 authored by Nicolas Geoffray's avatar Nicolas Geoffray
Browse files

Make privileged apps always keep uncompressed dex files.

To ensure the verified boot work does not make ART run
dex code uncompressed in memory, make the build system
generate uncompressed dex files in APKs.

The alignment of STORE files in an APK is already handled.

bug: 30972906
bug: 63920015

Test: doing zipinfo on the produced apks after build.
Change-Id: I0ccdeae5d674b2a409a1343c4a14699c7bf0defb
parent f38900dc
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -659,6 +659,15 @@ $(LOCAL_MODULE)-$(h_or_hc_or_t)$(my_32_64_bit_suffix) : $(my_all_targets)
endif
endif

###########################################################
# Ensure privileged applications always have LOCAL_PRIVILEGED_MODULE
###########################################################
ifndef LOCAL_PRIVILEGED_MODULE
  ifneq (,$(filter $(TARGET_OUT_APPS_PRIVILEGED)/% $(TARGET_OUT_VENDOR_APPS_PRIVILEGED)/%,$(my_module_path)))
    LOCAL_PRIVILEGED_MODULE := true
  endif
endif

###########################################################
## NOTICE files
###########################################################
+12 −0
Original line number Diff line number Diff line
@@ -2717,6 +2717,18 @@ define remove-timestamps-from-package
$(hide) $(ZIPTIME) $@
endef

# Uncompress dex files embedded in an apk.
#
define uncompress-dexs
$(hide) if (zipinfo $@ '*.dex' 2>/dev/null | grep -v ' stor ' >/dev/null) ; then \
  rm -rf $(dir $@)uncompresseddexs && mkdir $(dir $@)uncompresseddexs; \
  unzip $@ '*.dex' -d $(dir $@)uncompresseddexs && \
  zip -d $@ '*.dex' && \
  ( cd $(dir $@)uncompresseddexs && find -type f | sort | zip -D -X -0 ../$(notdir $@) -@ ) && \
  rm -rf $(dir $@)uncompresseddexs; \
  fi
endef

# Uncompress shared libraries embedded in an apk.
#
define uncompress-shared-libs
+4 −0
Original line number Diff line number Diff line
@@ -606,6 +606,10 @@ ifneq ($(BUILD_PLATFORM_ZIP),)
	@# Keep a copy of apk with classes.dex unstripped
	$(hide) cp -f $@ $(dir $@)package.dex.apk
endif  # BUILD_PLATFORM_ZIP
ifeq (true,$(LOCAL_PRIVILEGED_MODULE))
	@# No need to align, sign-package below will do it.
	$(uncompress-dexs)
endif  # LOCAL_PRIVILEGED_MODULE
ifneq (nostripping,$(LOCAL_DEX_PREOPT))
	$(call dexpreopt-remove-classes.dex,$@)
endif
+3 −0
Original line number Diff line number Diff line
@@ -341,6 +341,9 @@ $(built_module): PRIVATE_EMBEDDED_JNI_LIBS := $(embedded_prebuilt_jni_libs)
$(built_module) : $(my_prebuilt_src_file) | $(ZIPALIGN) $(SIGNAPK_JAR)
	$(transform-prebuilt-to-target)
	$(uncompress-shared-libs)
ifeq (true,$(LOCAL_PRIVILEGED_MODULE))
	$(uncompress-dexs)
endif  # LOCAL_PRIVILEGED_MODULE
ifdef LOCAL_DEX_PREOPT
ifneq ($(BUILD_PLATFORM_ZIP),)
	@# Keep a copy of apk with classes.dex unstripped