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

Commit 9874d97b authored by Ying Wang's avatar Ying Wang Committed by Android Git Automerger
Browse files

am c1be19a8: am 37c9b500: Merge "Don\'t extract jni from prebuilt apks." into mnc-dev

* commit 'c1be19a8':
  Don't extract jni from prebuilt apks.
parents 8b4b6681 c1be19a8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ LOCAL_UNSTRIPPED_PATH:=
LOCAL_MODULE_CLASS:=
LOCAL_MODULE_SUFFIX:=
LOCAL_PACKAGE_NAME:=
LOCAL_PAGE_ALIGN_JNI_SHARED_LIBRARIES:=
LOCAL_OVERRIDES_PACKAGES:=
LOCAL_EXPORT_PACKAGE_RESOURCES:=
LOCAL_MANIFEST_PACKAGE_NAME:=
+11 −11
Original line number Diff line number Diff line
@@ -2097,8 +2097,7 @@ $(hide) mkdir -p $(addprefix $(dir $@)lib/,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI))
$(foreach abi,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI),\
  $(call _add-jni-shared-libs-to-package-per-abi,$(abi),\
    $(patsubst $(abi):%,%,$(filter $(abi):%,$(PRIVATE_JNI_SHARED_LIBRARIES)))))
$(hide) (cd $(dir $@) && zip -r \
    $(if $(filter true, $(PRIVATE_PAGE_ALIGN_JNI_SHARED_LIBRARIES)),-0,) $(notdir $@) lib)
$(hide) (cd $(dir $@) && zip -r -0 $(notdir $@) lib)
$(hide) rm -rf $(dir $@)lib
endef

@@ -2144,21 +2143,22 @@ endef
define align-package
$(hide) mv $@ $@.unaligned
$(hide) $(ZIPALIGN) \
    -f \
    $(if $(filter true, $(PRIVATE_PAGE_ALIGN_JNI_SHARED_LIBRARIES)),-p,) \
    -f -p \
    4 \
    $@.unaligned $@.aligned
$(hide) mv $@.aligned $@
endef

# Uncompress shared libraries embedded in an apk.
#
define uncompress-shared-libs
$(hide) rm -rf $(dir $@)/tmpworkdir
$(hide) mv $@ $@.compressed
$(hide) mkdir $(dir $@)/tmpworkdir
$(hide) unzip $@.compressed 'lib/*.so' -d $(dir $@)/tmpworkdir
$(hide) ( cd $(dir $@)/tmpworkdir && zip -D -r -0 ../$(notdir $@).compressed lib )
$(hide) mv $@.compressed $@
$(hide) rm -rf $(dir $@)/tmpworkdir
$(hide) if unzip -l $@ $(PRIVATE_EMBEDDED_JNI_LIBS) >/dev/null ; then \
  rm -rf $(dir $@)uncompressedlibs && mkdir $(dir $@)uncompressedlibs; \
  unzip $@ $(PRIVATE_EMBEDDED_JNI_LIBS) -d $(dir $@)uncompressedlibs && \
  zip -d $@ 'lib/*.so' && \
  ( cd $(dir $@)uncompressedlibs && zip -D -r -0 ../$(notdir $@) lib ) && \
  rm -rf $(dir $@)uncompressedlibs; \
  fi
endef

define install-dex-debug
+5 −5
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@
#
# Output variables:
#   jni_shared_libraries, jni_shared_libraries_abi, jni_shared_libraries_with_abis if we are going to embed the libraries into the apk;
#   extracted_jni_libs, if we extract jni libs from prebuilt apk.
#   embedded_prebuilt_jni_libs, prebuilt jni libs embedded in prebuilt apk.
#

my_embed_jni :=
@@ -27,7 +27,7 @@ jni_shared_libraries :=
jni_shared_libraries_abis :=
# jni_shared_libraries_with_abis is a list of <abi>:<path-to-the-built-jni-lib>
jni_shared_libraries_with_abis :=
extracted_jni_libs :=
embedded_prebuilt_jni_libs :=

#######################################
# For TARGET_ARCH
@@ -51,7 +51,7 @@ jni_shared_libraries += $(my_jni_shared_libraries)
jni_shared_libraries_abis += $(my_jni_shared_libraries_abi)
jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\
    $(my_jni_shared_libraries))
extracted_jni_libs += $(my_extracted_jni_libs)
embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs)

# Include RS dynamically-generated libraries as well
# TODO: Add multilib support once RS supports generating multilib libraries.
@@ -83,11 +83,11 @@ jni_shared_libraries += $(my_jni_shared_libraries)
jni_shared_libraries_abis += $(my_jni_shared_libraries_abi)
jni_shared_libraries_with_abis += $(addprefix $(my_jni_shared_libraries_abi):,\
    $(my_jni_shared_libraries))
extracted_jni_libs += $(my_extracted_jni_libs)
embedded_prebuilt_jni_libs += $(my_embedded_prebuilt_jni_libs)
endif  # my_add_jni
endif  # TARGET_2ND_ARCH

jni_shared_libraries := $(strip $(jni_shared_libraries))
jni_shared_libraries_abis := $(sort $(jni_shared_libraries_abis))
jni_shared_libraries_with_abis := $(strip $(jni_shared_libraries_with_abis))
extracted_jni_libs := $(strip $(extracted_jni_libs))
embedded_prebuilt_jni_libs := $(strip $(embedded_prebuilt_jni_libs))
+4 −28
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
#
# Output variables:
#   my_jni_shared_libraries, my_jni_shared_libraries_abi, if we are going to embed the libraries into the apk;
#   my_extracted_jni_libs, if we extract jni libs from prebuilt apk.
#   my_embedded_prebuilt_jni_libs, prebuilt jni libs embedded in prebuilt apk.
#

my_jni_shared_libraries := \
@@ -19,7 +19,7 @@ my_jni_shared_libraries := \

# App-specific lib path.
my_app_lib_path := $(dir $(LOCAL_INSTALLED_MODULE))lib/$(TARGET_$(my_2nd_arch_prefix)ARCH)
my_extracted_jni_libs :=
my_embedded_prebuilt_jni_libs :=

ifdef my_embed_jni
# App explicitly requires the prebuilt NDK stl shared libraies.
@@ -76,34 +76,10 @@ endif # $(my_jni_shared_libraries) not empty
endif  # my_embed_jni

ifdef my_prebuilt_jni_libs
# Install prebuilt JNI libs to the app specific lib path.
# Files like @path/to/libfoo.so (path inside the apk) are JNI libs extracted from the prebuilt apk;
# Files like @lib/<abi>/libfoo.so (path inside the apk) are JNI libs embedded prebuilt apk;
# Files like path/to/libfoo.so (path relative to LOCAL_PATH) are prebuilts in the source tree.
my_extracted_jni_libs := $(patsubst @%,%, \
my_embedded_prebuilt_jni_libs := $(patsubst @%,%, \
    $(filter @%, $(my_prebuilt_jni_libs)))
ifdef my_extracted_jni_libs
ifndef my_prebuilt_src_file
$(error No prebuilt apk to extract prebuilt jni libraries $(my_extracted_jni_libs))
endif
ifeq ($(LOCAL_CERTIFICATE),PRESIGNED)
$(warning Extracting files using LOCAL_PREBUILT_JNI_LIBS cannot be done while)
$(warning using LOCAL_CERTIFICATE:=PRESIGNED, as this would corrupt)
$(warning the APK or waste disk space. Instead, you should delete)
$(warning LOCAL_PREBUILT_JNI_LIBS and use LOCAL_PAGE_ALIGN_JNI_SHARED_LIBRARIES:=true)
$(warning This will allow loading of shared libraries directly from the APK,)
$(warning eliminating the need to separately extract them.)
$(error Failed to build: $(LOCAL_MODULE))
endif
# We use the first jni lib file as dependency.
my_installed_prebuilt_jni := $(my_app_lib_path)/$(notdir $(firstword $(my_extracted_jni_libs)))
$(my_installed_prebuilt_jni): PRIVATE_JNI_LIBS := $(my_extracted_jni_libs)
$(my_installed_prebuilt_jni): $(my_prebuilt_src_file)
	@echo "Extract JNI libs ($@ <- $<)"
	@mkdir -p $(dir $@)
	$(hide) unzip -j -o -d $(dir $@) $< $(PRIVATE_JNI_LIBS) && touch $@

$(LOCAL_INSTALLED_MODULE) : | $(my_installed_prebuilt_jni)
endif

# prebuilt JNI exsiting as separate source files.
my_prebuilt_jni_libs := $(addprefix $(LOCAL_PATH)/, \
+0 −1
Original line number Diff line number Diff line
@@ -392,7 +392,6 @@ $(LOCAL_BUILT_MODULE): $(AAPT) | $(ZIPALIGN)
$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES := $(jni_shared_libraries_with_abis)
# PRIVATE_JNI_SHARED_LIBRARIES_ABI is a list of ABI names.
$(LOCAL_BUILT_MODULE): PRIVATE_JNI_SHARED_LIBRARIES_ABI := $(jni_shared_libraries_abis)
$(LOCAL_BUILT_MODULE): PRIVATE_PAGE_ALIGN_JNI_SHARED_LIBRARIES := $(LOCAL_PAGE_ALIGN_JNI_SHARED_LIBRARIES)
ifneq ($(TARGET_BUILD_APPS),)
    # Include all resources for unbundled apps.
    LOCAL_AAPT_INCLUDE_ALL_RESOURCES := true
Loading