forked from openkylin/platform_build
Merge "DO NOT MERGE: Merge Oreo MR1 into master"
This commit is contained in:
commit
5f03da0404
|
@ -126,6 +126,9 @@ endif
|
|||
# prop.default
|
||||
ifdef property_overrides_split_enabled
|
||||
INSTALLED_DEFAULT_PROP_TARGET := $(TARGET_OUT)/etc/prop.default
|
||||
INSTALLED_DEFAULT_PROP_OLD_TARGET := $(TARGET_ROOT_OUT)/default.prop
|
||||
ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DEFAULT_PROP_OLD_TARGET)
|
||||
$(INSTALLED_DEFAULT_PROP_OLD_TARGET): $(INSTALLED_DEFAULT_PROP_TARGET)
|
||||
else
|
||||
# legacy path
|
||||
INSTALLED_DEFAULT_PROP_TARGET := $(TARGET_ROOT_OUT)/default.prop
|
||||
|
@ -161,7 +164,7 @@ $(INSTALLED_DEFAULT_PROP_TARGET): $(intermediate_system_build_prop)
|
|||
$(hide) build/tools/post_process_props.py $@
|
||||
ifdef property_overrides_split_enabled
|
||||
$(hide) mkdir -p $(TARGET_ROOT_OUT)
|
||||
$(hide) ln -sf system/etc/prop.default $(TARGET_ROOT_OUT)/default.prop
|
||||
$(hide) ln -sf system/etc/prop.default $(INSTALLED_DEFAULT_PROP_OLD_TARGET)
|
||||
endif
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
|
@ -467,8 +470,10 @@ package-stats: $(PACKAGE_STATS_FILE)
|
|||
# -----------------------------------------------------------------
|
||||
# Cert-to-package mapping. Used by the post-build signing tools.
|
||||
# Use a macro to add newline to each echo command
|
||||
define _apkcerts_echo_with_newline
|
||||
$(hide) echo $(1)
|
||||
define _apkcerts_write_line
|
||||
$(hide) echo -n 'name="$(1).apk" certificate="$2" private_key="$3"' >> $5
|
||||
$(if $(4), $(hide) echo -n ' compressed="$4"' >> $5)
|
||||
$(hide) echo '' >> $5
|
||||
|
||||
endef
|
||||
|
||||
|
@ -488,12 +493,8 @@ $(APKCERTS_FILE):
|
|||
@rm -f $@
|
||||
$(foreach p,$(PACKAGES),\
|
||||
$(if $(PACKAGES.$(p).EXTERNAL_KEY),\
|
||||
$(call _apkcerts_echo_with_newline,\
|
||||
'name="$(p).apk" certificate="EXTERNAL" \
|
||||
private_key=""' >> $@),\
|
||||
$(call _apkcerts_echo_with_newline,\
|
||||
'name="$(p).apk" certificate="$(PACKAGES.$(p).CERTIFICATE)" \
|
||||
private_key="$(PACKAGES.$(p).PRIVATE_KEY)"' >> $@)))
|
||||
$(call _apkcerts_write_line,$(p),"EXTERNAL","",$(PACKAGES.$(p).COMPRESSED),$@),\
|
||||
$(call _apkcerts_write_line,$(p),$(PACKAGES.$(p).CERTIFICATE),$(PACKAGES.$(p).PRIVATE_KEY),$(PACKAGES.$(p).COMPRESSED),$@)))
|
||||
# In case value of PACKAGES is empty.
|
||||
$(hide) touch $@
|
||||
|
||||
|
@ -2100,6 +2101,14 @@ $(INSTALLED_VBMETAIMAGE_TARGET): \
|
|||
vbmetaimage-nodeps:
|
||||
$(build-vbmetaimage-target)
|
||||
|
||||
else ifeq (true,$(BOARD_BUILD_DISABLED_VBMETAIMAGE))
|
||||
BUILT_DISABLED_VBMETAIMAGE := $(PRODUCT_OUT)/vbmeta.img
|
||||
|
||||
INSTALLED_VBMETAIMAGE_TARGET := $(BUILT_DISABLED_VBMETAIMAGE)
|
||||
$(INSTALLED_VBMETAIMAGE_TARGET): $(AVBTOOL)
|
||||
$(hide) $(AVBTOOL) make_vbmeta_image \
|
||||
--flag 2 --padding_size 4096 --output $@
|
||||
|
||||
endif # BOARD_AVB_ENABLE
|
||||
|
||||
# -----------------------------------------------------------------
|
||||
|
|
|
@ -34,10 +34,12 @@ ifdef my_full_libs_manifest_files
|
|||
main_android_manifest := $(full_android_manifest)
|
||||
full_android_manifest := $(intermediates.COMMON)/AndroidManifest.xml
|
||||
$(full_android_manifest): PRIVATE_LIBS_MANIFESTS := $(my_full_libs_manifest_files)
|
||||
$(full_android_manifest): $(ANDROID_MANIFEST_MERGER_CLASSPATH)
|
||||
$(full_android_manifest) : $(main_android_manifest) $(my_full_libs_manifest_deps)
|
||||
@echo "Merge android manifest files: $@ <-- $< $(PRIVATE_LIBS_MANIFESTS)"
|
||||
@mkdir -p $(dir $@)
|
||||
$(hide) $(ANDROID_MANIFEST_MERGER) --main $< --libs $(PRIVATE_LIBS_MANIFESTS) \
|
||||
$(hide) $(ANDROID_MANIFEST_MERGER) --main $< \
|
||||
--libs $(call normalize-path-list,$(PRIVATE_LIBS_MANIFESTS)) \
|
||||
--out $@
|
||||
|
||||
endif
|
||||
|
|
|
@ -18,4 +18,4 @@
|
|||
# (like "CRB01"). It must be a single word, and is
|
||||
# capitalized by convention.
|
||||
|
||||
export BUILD_ID=OC-DR1
|
||||
export BUILD_ID=OC-MR1
|
||||
|
|
|
@ -35,6 +35,7 @@ LOCAL_CLANG_LDFLAGS:=
|
|||
LOCAL_CLASSPATH:=
|
||||
LOCAL_COMPATIBILITY_SUITE:=
|
||||
LOCAL_COMPATIBILITY_SUPPORT_FILES:=
|
||||
LOCAL_COMPRESSED_MODULE:=
|
||||
LOCAL_CONLYFLAGS:=
|
||||
LOCAL_COPY_HEADERS:=
|
||||
LOCAL_COPY_HEADERS_TO:=
|
||||
|
|
|
@ -687,7 +687,14 @@ FINDBUGS_DIR := external/owasp/sanitizer/tools/findbugs/bin
|
|||
FINDBUGS := $(FINDBUGS_DIR)/findbugs
|
||||
|
||||
# Tool to merge AndroidManifest.xmls
|
||||
ANDROID_MANIFEST_MERGER := $(JAVA) -classpath prebuilts/devtools/tools/lib/manifest-merger.jar com.android.manifmerger.Main merge
|
||||
ANDROID_MANIFEST_MERGER_CLASSPATH := \
|
||||
prebuilts/gradle-plugin/com/android/tools/build/manifest-merger/26.0.0-beta2/manifest-merger-26.0.0-beta2.jar \
|
||||
prebuilts/gradle-plugin/com/android/tools/sdk-common/26.0.0-beta2/sdk-common-26.0.0-beta2.jar \
|
||||
prebuilts/gradle-plugin/com/android/tools/common/26.0.0-beta2/common-26.0.0-beta2.jar \
|
||||
prebuilts/misc/common/guava/guava-21.0.jar
|
||||
ANDROID_MANIFEST_MERGER := $(JAVA) \
|
||||
-classpath $(subst $(space),:,$(strip $(ANDROID_MANIFEST_MERGER_CLASSPATH))) \
|
||||
com.android.manifmerger.Merger
|
||||
|
||||
COLUMN:= column
|
||||
|
||||
|
@ -761,6 +768,14 @@ $(foreach req,$(requirements),$(eval $(req)_OVERRIDE ?=))
|
|||
|
||||
requirements :=
|
||||
|
||||
ifdef PRODUCT_SHIPPING_API_LEVEL
|
||||
ifneq ($(call math_gt_or_eq,$(PRODUCT_SHIPPING_API_LEVEL),27),)
|
||||
ifneq ($(TARGET_USES_MKE2FS),true)
|
||||
$(error When PRODUCT_SHIPPING_API_LEVEL >= 27, TARGET_USES_MKE2FS must be true)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# The default key if not set as LOCAL_CERTIFICATE
|
||||
ifdef PRODUCT_DEFAULT_DEV_CERTIFICATE
|
||||
DEFAULT_SYSTEM_DEV_CERTIFICATE := $(PRODUCT_DEFAULT_DEV_CERTIFICATE)
|
||||
|
@ -796,8 +811,14 @@ endif
|
|||
|
||||
ifeq ($(strip $(PRODUCT_COMPATIBILITY_MATRIX_LEVEL)),legacy)
|
||||
FRAMEWORK_COMPATIBILITY_MATRIX_FILE := hardware/interfaces/compatibility_matrix.legacy.xml
|
||||
else ifeq ($(call math_gt_or_eq,$(PRODUCT_COMPATIBILITY_MATRIX_LEVEL),27),)
|
||||
else ifeq ($(call math_gt_or_eq,$(PRODUCT_COMPATIBILITY_MATRIX_LEVEL),26),)
|
||||
# All PRODUCT_FULL_TREBLE devices with shipping API levels < 26 get the level 26 manifest
|
||||
# as that is the first.
|
||||
FRAMEWORK_COMPATIBILITY_MATRIX_FILE := hardware/interfaces/compatibility_matrix.26.xml
|
||||
else ifeq ($(call math_gt_or_eq,$(PRODUCT_COMPATIBILITY_MATRIX_LEVEL),28),)
|
||||
# All shipping API levels with released compatibility matrices get the corresponding matrix.
|
||||
FRAMEWORK_COMPATIBILITY_MATRIX_FILE := \
|
||||
hardware/interfaces/compatibility_matrix.$(PRODUCT_COMPATIBILITY_MATRIX_LEVEL).xml
|
||||
else
|
||||
FRAMEWORK_COMPATIBILITY_MATRIX_FILE := hardware/interfaces/compatibility_matrix.current.xml
|
||||
endif
|
||||
|
|
|
@ -2558,6 +2558,15 @@ $(hide) if ! $(ZIPALIGN) -c $(ZIPALIGN_PAGE_ALIGN_FLAGS) 4 $@ >/dev/null ; then
|
|||
fi
|
||||
endef
|
||||
|
||||
# Compress a package using the standard gzip algorithm.
|
||||
define compress-package
|
||||
$(hide) \
|
||||
mv $@ $@.uncompressed; \
|
||||
$(MINIGZIP) -c $@.uncompressed > $@.compressed; \
|
||||
rm -f $@.uncompressed; \
|
||||
mv $@.compressed $@;
|
||||
endef
|
||||
|
||||
# Remove dynamic timestamps from packages
|
||||
#
|
||||
define remove-timestamps-from-package
|
||||
|
|
|
@ -65,17 +65,10 @@ built_installed_odex :=
|
|||
built_installed_vdex :=
|
||||
built_installed_art :=
|
||||
|
||||
ifdef LOCAL_DEX_PREOPT
|
||||
|
||||
ifeq (false,$(WITH_DEX_PREOPT_GENERATE_PROFILE))
|
||||
LOCAL_DEX_PREOPT_GENERATE_PROFILE := false
|
||||
endif
|
||||
|
||||
ifdef LOCAL_VENDOR_MODULE
|
||||
ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE))
|
||||
$(error profiles are not supported for vendor modules)
|
||||
endif
|
||||
else
|
||||
ifndef LOCAL_DEX_PREOPT_GENERATE_PROFILE
|
||||
# If LOCAL_DEX_PREOPT_GENERATE_PROFILE is not defined, default it based on the existence of the
|
||||
# profile class listing. TODO: Use product specific directory here.
|
||||
|
@ -83,14 +76,54 @@ my_classes_directory := $(PRODUCT_DEX_PREOPT_PROFILE_DIR)
|
|||
LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING := $(my_classes_directory)/$(LOCAL_MODULE).prof.txt
|
||||
ifneq (,$(wildcard $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)))
|
||||
# Profile listing exists, use it to generate the profile.
|
||||
ifeq ($(LOCAL_DEX_PREOPT_APP_IMAGE),)
|
||||
LOCAL_DEX_PREOPT_APP_IMAGE := true
|
||||
endif
|
||||
LOCAL_DEX_PREOPT_GENERATE_PROFILE := true
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE))
|
||||
|
||||
ifdef LOCAL_VENDOR_MODULE
|
||||
$(call pretty-error, Internal error: profiles are not supported for vendor modules)
|
||||
else
|
||||
LOCAL_DEX_PREOPT_APP_IMAGE := true
|
||||
endif
|
||||
|
||||
ifndef LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING
|
||||
$(call pretty-error,Must have specified class listing (LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING))
|
||||
endif
|
||||
ifeq (,$(dex_preopt_profile_src_file))
|
||||
$(call pretty-error, Internal error: dex_preopt_profile_src_file must be set)
|
||||
endif
|
||||
my_built_profile := $(dir $(LOCAL_BUILT_MODULE))/profile.prof
|
||||
my_dex_location := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE))
|
||||
# Remove compressed APK extension.
|
||||
my_dex_location := $(patsubst %.gz,%,$(my_dex_location))
|
||||
$(my_built_profile): PRIVATE_BUILT_MODULE := $(dex_preopt_profile_src_file)
|
||||
$(my_built_profile): PRIVATE_DEX_LOCATION := $(my_dex_location)
|
||||
$(my_built_profile): PRIVATE_SOURCE_CLASSES := $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)
|
||||
$(my_built_profile): $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)
|
||||
$(my_built_profile): $(PROFMAN)
|
||||
$(my_built_profile): $(dex_preopt_profile_src_file)
|
||||
$(my_built_profile):
|
||||
$(hide) mkdir -p $(dir $@)
|
||||
ANDROID_LOG_TAGS="*:e" $(PROFMAN) \
|
||||
--create-profile-from=$(PRIVATE_SOURCE_CLASSES) \
|
||||
--apk=$(PRIVATE_BUILT_MODULE) \
|
||||
--dex-location=$(PRIVATE_DEX_LOCATION) \
|
||||
--reference-profile-file=$@
|
||||
dex_preopt_profile_src_file:=
|
||||
# Remove compressed APK extension.
|
||||
my_installed_profile := $(patsubst %.gz,%,$(LOCAL_INSTALLED_MODULE)).prof
|
||||
# my_installed_profile := $(LOCAL_INSTALLED_MODULE).prof
|
||||
$(eval $(call copy-one-file,$(my_built_profile),$(my_installed_profile)))
|
||||
build_installed_profile:=$(my_built_profile):$(my_installed_profile)
|
||||
else
|
||||
build_installed_profile:=
|
||||
my_installed_profile :=
|
||||
endif
|
||||
|
||||
ifdef LOCAL_DEX_PREOPT
|
||||
|
||||
dexpreopt_boot_jar_module := $(filter $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE))
|
||||
ifdef dexpreopt_boot_jar_module
|
||||
# For libart, the boot jars' odex files are replaced by $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE).
|
||||
|
@ -146,32 +179,9 @@ installed_art := $(strip $(installed_art))
|
|||
|
||||
ifdef built_odex
|
||||
ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE))
|
||||
ifndef LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING
|
||||
$(call pretty-error,Must have specified class listing (LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING))
|
||||
endif
|
||||
my_built_profile := $(dir $(LOCAL_BUILT_MODULE))/profile.prof
|
||||
my_dex_location := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE))
|
||||
$(built_odex): $(my_built_profile)
|
||||
$(built_odex): PRIVATE_PROFILE_PREOPT_FLAGS := --profile-file=$(my_built_profile)
|
||||
$(my_built_profile): PRIVATE_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
|
||||
$(my_built_profile): PRIVATE_DEX_LOCATION := $(my_dex_location)
|
||||
$(my_built_profile): PRIVATE_SOURCE_CLASSES := $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)
|
||||
$(my_built_profile): $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)
|
||||
$(my_built_profile): $(PROFMAN)
|
||||
$(my_built_profile): $(LOCAL_BUILT_MODULE)
|
||||
$(my_built_profile):
|
||||
$(hide) mkdir -p $(dir $@)
|
||||
ANDROID_LOG_TAGS="*:e" $(PROFMAN) \
|
||||
--create-profile-from=$(PRIVATE_SOURCE_CLASSES) \
|
||||
--apk=$(PRIVATE_BUILT_MODULE) \
|
||||
--dex-location=$(PRIVATE_DEX_LOCATION) \
|
||||
--reference-profile-file=$@
|
||||
my_installed_profile := $(LOCAL_INSTALLED_MODULE).prof
|
||||
$(eval $(call copy-one-file,$(my_built_profile),$(my_installed_profile)))
|
||||
build_installed_profile:=$(my_built_profile):$(my_installed_profile)
|
||||
else
|
||||
build_installed_profile:=
|
||||
my_installed_profile :=
|
||||
$(built_odex): PRIVATE_PROFILE_PREOPT_FLAGS :=
|
||||
endif
|
||||
|
||||
|
@ -232,11 +242,10 @@ endif
|
|||
ALL_MODULES.$(my_register_name).INSTALLED += $(installed_odex)
|
||||
ALL_MODULES.$(my_register_name).INSTALLED += $(installed_vdex)
|
||||
ALL_MODULES.$(my_register_name).INSTALLED += $(installed_art)
|
||||
ALL_MODULES.$(my_register_name).INSTALLED += $(my_installed_profile)
|
||||
|
||||
ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_odex)
|
||||
ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_vdex)
|
||||
ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_art)
|
||||
ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(build_installed_profile)
|
||||
|
||||
# Record dex-preopt config.
|
||||
DEXPREOPT.$(LOCAL_MODULE).DEX_PREOPT := $(LOCAL_DEX_PREOPT)
|
||||
|
@ -252,6 +261,12 @@ DEXPREOPT.MODULES.$(LOCAL_MODULE_CLASS) := $(sort \
|
|||
|
||||
|
||||
# Make sure to install the .odex and .vdex when you run "make <module_name>"
|
||||
$(my_all_targets): $(installed_odex) $(installed_vdex) $(installed_art) $(my_installed_profile)
|
||||
$(my_all_targets): $(installed_odex) $(installed_vdex) $(installed_art)
|
||||
|
||||
endif # LOCAL_DEX_PREOPT
|
||||
|
||||
# Profile doesn't depend on LOCAL_DEX_PREOPT.
|
||||
ALL_MODULES.$(my_register_name).INSTALLED += $(my_installed_profile)
|
||||
ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(build_installed_profile)
|
||||
|
||||
$(my_all_targets): $(my_installed_profile)
|
||||
|
|
|
@ -22,6 +22,11 @@ ifeq ($(filter $(TARGET_OUT)/% $(TARGET_OUT_VENDOR)/% $(TARGET_OUT_OEM)/%, $(my_
|
|||
# If this app isn't to be installed to system partitions.
|
||||
my_embed_jni := true
|
||||
endif
|
||||
# If we're installing this APP as a compressed module, we include all JNI libraries
|
||||
# in the compressed artifact, rather than as separate files on the partition in question.
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
my_embed_jni := true
|
||||
endif
|
||||
|
||||
jni_shared_libraries :=
|
||||
jni_shared_libraries_abis :=
|
||||
|
|
13
core/java.mk
13
core/java.mk
|
@ -369,6 +369,19 @@ include $(BUILD_SYSTEM)/java_common.mk
|
|||
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_HAS_RS_SOURCES := $(if $(renderscript_sources),true)
|
||||
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RS_SOURCE_INTERMEDIATES_DIR := $(intermediates.COMMON)/renderscript
|
||||
|
||||
# Set the profile source so that the odex / profile code included from java.mk
|
||||
# can find it.
|
||||
#
|
||||
# TODO: b/64896089, this is broken when called from package_internal.mk, since the file
|
||||
# we preopt from is a temporary file. This will be addressed in a follow up, possibly
|
||||
# by disabling stripping for profile guided preopt (which may be desirable for other
|
||||
# reasons anyway).
|
||||
#
|
||||
# Note that we set this only when called from package_internal.mk and not in other cases.
|
||||
ifneq (,$(called_from_package_internal)
|
||||
dex_preopt_profile_src_file := $(LOCAL_BUILT_MODULE)
|
||||
endif
|
||||
|
||||
#######################################
|
||||
# defines built_odex along with rule to install odex
|
||||
include $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
|
||||
|
|
|
@ -31,6 +31,7 @@ LOCAL_BUILT_MODULE_STEM := javalib.jar
|
|||
# java libraries produce javalib.jar, so we will copy classes.jar there too.
|
||||
intermediates.COMMON := $(call local-intermediates-dir,COMMON)
|
||||
common_javalib.jar := $(intermediates.COMMON)/javalib.jar
|
||||
dex_preopt_profile_src_file := $(common_javalib.jar)
|
||||
LOCAL_INTERMEDIATE_TARGETS += $(common_javalib.jar)
|
||||
|
||||
ifeq ($(LOCAL_PROGUARD_ENABLED),disabled)
|
||||
|
|
|
@ -321,7 +321,7 @@ ADDITIONAL_BUILD_PROPERTIES += net.bt.name=Android
|
|||
|
||||
# Sets the location that the runtime dumps stack traces to when signalled
|
||||
# with SIGQUIT. Stack trace dumping is turned on for all android builds.
|
||||
ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.stack-trace-file=/data/anr/traces.txt
|
||||
ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.stack-trace-dir=/data/anr
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Define a function that, given a list of module tags, returns
|
||||
|
|
|
@ -226,8 +226,20 @@ R_file_stamp := $(intermediates.COMMON)/src/R.stamp
|
|||
LOCAL_INTERMEDIATE_TARGETS += $(R_file_stamp)
|
||||
endif
|
||||
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
ifneq (true,$(LOCAL_COMPRESSED_MODULE))
|
||||
$(call pretty-error, Unknown value for LOCAL_COMPRESSED_MODULE $(LOCAL_COMPRESSED_MODULE))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
PACKAGES.$(LOCAL_PACKAGE_NAME).COMPRESSED := gz
|
||||
LOCAL_BUILT_MODULE_STEM := package.apk.gz
|
||||
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE).apk.gz
|
||||
else # !LOCAL_COMPRESSED_MODULE
|
||||
LOCAL_BUILT_MODULE_STEM := package.apk
|
||||
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE).apk
|
||||
endif
|
||||
|
||||
LOCAL_PROGUARD_ENABLED:=$(strip $(LOCAL_PROGUARD_ENABLED))
|
||||
ifndef LOCAL_PROGUARD_ENABLED
|
||||
|
@ -298,11 +310,19 @@ LOCAL_RESOURCE_DIR := $(data_binding_res_out)
|
|||
LOCAL_AAPT_FLAGS += --auto-add-overlay --extra-packages com.android.databinding.library
|
||||
endif # LOCAL_DATA_BINDING
|
||||
|
||||
# If the module is a compressed module, we don't pre-opt it because its final
|
||||
# installation location will be the data partition.
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
LOCAL_DEX_PREOPT := false
|
||||
endif
|
||||
|
||||
include $(BUILD_SYSTEM)/android_manifest.mk
|
||||
|
||||
called_from_package_internal := true
|
||||
#################################
|
||||
include $(BUILD_SYSTEM)/java.mk
|
||||
#################################
|
||||
called_from_package_internal :=
|
||||
|
||||
LOCAL_SDK_RES_VERSION:=$(strip $(LOCAL_SDK_RES_VERSION))
|
||||
ifeq ($(LOCAL_SDK_RES_VERSION),)
|
||||
|
@ -350,6 +370,10 @@ installed_apk_splits :=
|
|||
my_apk_split_configs :=
|
||||
|
||||
ifdef LOCAL_PACKAGE_SPLITS
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
$(error $(LOCAL_MODULE): LOCAL_COMPRESSED_MODULE is not currently supported for split installs)
|
||||
endif # LOCAL_COMPRESSED_MODULE
|
||||
|
||||
my_apk_split_configs := $(LOCAL_PACKAGE_SPLITS)
|
||||
my_split_suffixes := $(subst $(comma),_,$(my_apk_split_configs))
|
||||
built_apk_splits := $(foreach s,$(my_split_suffixes),$(intermediates)/package_$(s).apk)
|
||||
|
@ -553,6 +577,9 @@ $(LOCAL_BUILT_MODULE) : $(my_res_package) $(AAPT2) | $(ACP)
|
|||
else
|
||||
$(LOCAL_BUILT_MODULE): PRIVATE_RESOURCE_LIST := $(all_res_assets)
|
||||
$(LOCAL_BUILT_MODULE) : $(all_res_assets) $(full_android_manifest) $(AAPT) $(ZIPALIGN)
|
||||
endif
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
$(LOCAL_BUILT_MODULE) : $(MINIGZIP)
|
||||
endif
|
||||
@echo "target Package: $(PRIVATE_MODULE) ($@)"
|
||||
ifdef LOCAL_USE_AAPT2
|
||||
|
@ -594,6 +621,9 @@ ifneq (,$(filter $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES), $(LOCAL_MODULE)))
|
|||
$(uncompress-dexs)
|
||||
endif # PRODUCT_LOADED_BY_PRIVILEGED_MODULES
|
||||
$(sign-package)
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
$(compress-package)
|
||||
endif # LOCAL_COMPRESSED_MODULE
|
||||
|
||||
###############################
|
||||
## Build dpi-specific apks, if it's apps_only build.
|
||||
|
|
|
@ -80,6 +80,7 @@ FRAMEWORKS_BASE_SUBDIRS := \
|
|||
telecomm \
|
||||
telephony \
|
||||
wifi \
|
||||
lowpan \
|
||||
keystore \
|
||||
rs \
|
||||
)
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
# This file defines the rule to fuse the platform.zip into the current PDK build.
|
||||
PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR :=
|
||||
PDK_PLATFORM_JAVA_ZIP_JAVA_HOST_LIB_DIR := \
|
||||
host/common/obj/JAVA_LIBRARIES/bouncycastle-host_intermediates
|
||||
host/common/obj/JAVA_LIBRARIES/bouncycastle-host_intermediates \
|
||||
host/common/obj/JAVA_LIBRARIES/compatibility-host-util_intermediates \
|
||||
host/common/obj/JAVA_LIBRARIES/cts-tradefed-harness_intermediates \
|
||||
host/common/obj/JAVA_LIBRARIES/hosttestlib_intermediates
|
||||
PDK_PLATFORM_JAVA_ZIP_CONTENTS :=
|
||||
|
||||
ifneq (,$(filter platform-java, $(MAKECMDGOALS))$(PDK_FUSION_PLATFORM_ZIP))
|
||||
|
@ -21,6 +24,7 @@ PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR += \
|
|||
target/common/obj/JAVA_LIBRARIES/core-oj_intermediates \
|
||||
target/common/obj/JAVA_LIBRARIES/core-libart_intermediates \
|
||||
target/common/obj/JAVA_LIBRARIES/legacy-test_intermediates \
|
||||
target/common/obj/JAVA_LIBRARIES/legacy-android-test_intermediates \
|
||||
target/common/obj/JAVA_LIBRARIES/ext_intermediates \
|
||||
target/common/obj/JAVA_LIBRARIES/framework_intermediates \
|
||||
target/common/obj/JAVA_LIBRARIES/hwbinder_intermediates \
|
||||
|
|
|
@ -105,13 +105,34 @@ else
|
|||
prebuilt_module_is_dex_javalib :=
|
||||
endif
|
||||
|
||||
ifeq ($(LOCAL_MODULE_CLASS),APPS)
|
||||
LOCAL_BUILT_MODULE_STEM := package.apk
|
||||
ifndef LOCAL_INSTALLED_MODULE_STEM
|
||||
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE).apk
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
ifneq (true,$(LOCAL_COMPRESSED_MODULE))
|
||||
$(call pretty-error, Unknown value for LOCAL_COMPRESSED_MODULE $(LOCAL_COMPRESSED_MODULE))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(LOCAL_MODULE_CLASS),APPS)
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
LOCAL_BUILT_MODULE_STEM := package.apk.gz
|
||||
else
|
||||
LOCAL_BUILT_MODULE_STEM := package.apk
|
||||
endif # LOCAL_COMPRESSED_MODULE
|
||||
|
||||
ifndef LOCAL_INSTALLED_MODULE_STEM
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
PACKAGES.$(LOCAL_MODULE).COMPRESSED := gz
|
||||
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE).apk.gz
|
||||
else
|
||||
LOCAL_INSTALLED_MODULE_STEM := $(LOCAL_MODULE).apk
|
||||
endif # LOCAL_COMPRESSED_MODULE
|
||||
endif # LOCAL_INSTALLED_MODULE_STEM
|
||||
|
||||
else # $(LOCAL_MODULE_CLASS) != APPS)
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
$(error $(LOCAL_MODULE) : LOCAL_COMPRESSED_MODULE can only be defined for module class APPS)
|
||||
endif # LOCAL_COMPRESSED_MODULE
|
||||
endif
|
||||
|
||||
ifneq ($(filter true keep_symbols no_debuglink mini-debug-info,$(my_strip_module) $(my_pack_module_relocations)),)
|
||||
ifdef LOCAL_IS_HOST_MODULE
|
||||
$(error Cannot strip/pack host module LOCAL_PATH=$(LOCAL_PATH))
|
||||
|
@ -276,6 +297,8 @@ my_preopt_for_extracted_apk := true
|
|||
endif
|
||||
endif
|
||||
|
||||
dex_preopt_profile_src_file := $(my_prebuilt_src_file)
|
||||
|
||||
rs_compatibility_jni_libs :=
|
||||
include $(BUILD_SYSTEM)/install_jni_libs.mk
|
||||
|
||||
|
@ -328,6 +351,12 @@ LOCAL_DEX_PREOPT := false
|
|||
endif
|
||||
endif
|
||||
|
||||
# If the module is a compressed module, we don't pre-opt it because its final
|
||||
# installation location will be the data partition.
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
LOCAL_DEX_PREOPT := false
|
||||
endif
|
||||
|
||||
#######################################
|
||||
# defines built_odex along with rule to install odex
|
||||
include $(BUILD_SYSTEM)/dex_preopt_odex_install.mk
|
||||
|
@ -352,6 +381,10 @@ embedded_prebuilt_jni_libs := 'lib/*.so'
|
|||
endif
|
||||
$(built_module): PRIVATE_EMBEDDED_JNI_LIBS := $(embedded_prebuilt_jni_libs)
|
||||
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
$(built_module) : $(MINIGZIP)
|
||||
endif
|
||||
|
||||
$(built_module) : $(my_prebuilt_src_file) | $(ZIPALIGN) $(SIGNAPK_JAR)
|
||||
$(transform-prebuilt-to-target)
|
||||
$(uncompress-shared-libs)
|
||||
|
@ -382,6 +415,9 @@ endif # LOCAL_DEX_PREOPT
|
|||
else # LOCAL_CERTIFICATE == PRESIGNED
|
||||
$(align-package)
|
||||
endif # LOCAL_CERTIFICATE
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
$(compress-package)
|
||||
endif # LOCAL_COMPRESSED_MODULE
|
||||
endif # ! LOCAL_REPLACE_PREBUILT_APK_INSTALLED
|
||||
|
||||
###############################
|
||||
|
@ -394,6 +430,10 @@ endif
|
|||
###############################
|
||||
## Install split apks.
|
||||
ifdef LOCAL_PACKAGE_SPLITS
|
||||
ifdef LOCAL_COMPRESSED_MODULE
|
||||
$(error $(LOCAL_MODULE): LOCAL_COMPRESSED_MODULE is not currently supported for split installs)
|
||||
endif # LOCAL_COMPRESSED_MODULE
|
||||
|
||||
# LOCAL_PACKAGE_SPLITS is a list of apks to be installed.
|
||||
built_apk_splits := $(addprefix $(intermediates)/,$(notdir $(LOCAL_PACKAGE_SPLITS)))
|
||||
installed_apk_splits := $(addprefix $(my_module_path)/,$(notdir $(LOCAL_PACKAGE_SPLITS)))
|
||||
|
|
|
@ -115,7 +115,7 @@ $(full_target): $(sdk_addon_deps) | $(ACP) $(SOONG_ZIP)
|
|||
$(hide) $(SOONG_ZIP) -o $@ -C $(dir $(PRIVATE_STAGING_DIR)) -D $(PRIVATE_STAGING_DIR)
|
||||
|
||||
$(full_target_img): PRIVATE_STAGING_DIR := $(call append-path,$(staging),$(addon_dir_img))/images/$(TARGET_CPU_ABI)
|
||||
$(full_target_img): $(full_target) $(addon_img_source_prop) | $(SOONG_ZIP)
|
||||
$(full_target_img): $(full_target) $(addon_img_source_prop) | $(ACP) $(SOONG_ZIP)
|
||||
@echo Packaging SDK Addon System-Image: $@
|
||||
$(hide) mkdir -p $(dir $@)
|
||||
$(ACP) -r $(PRODUCT_OUT)/data $(PRIVATE_STAGING_DIR)/data
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
# test_suite_tradefed: the name of this test suite's tradefed wrapper
|
||||
# test_suite_dynamic_config: the path to this test suite's dynamic configuration file
|
||||
# test_suite_readme: the path to a README file for this test suite
|
||||
# test_suite_prebuilt_tools: the set of prebuilt tools to be included directly
|
||||
# in the 'tools' subdirectory of the test suite.
|
||||
# Output variables:
|
||||
# compatibility_zip: the path to the output zip file.
|
||||
|
||||
|
@ -39,10 +41,10 @@ test_tools := $(HOST_OUT_JAVA_LIBRARIES)/hosttestlib.jar \
|
|||
compatibility_zip := $(out_dir).zip
|
||||
$(compatibility_zip): PRIVATE_NAME := android-$(test_suite_name)
|
||||
$(compatibility_zip): PRIVATE_OUT_DIR := $(out_dir)
|
||||
$(compatibility_zip): PRIVATE_TOOLS := $(test_tools)
|
||||
$(compatibility_zip): PRIVATE_TOOLS := $(test_tools) $(test_suite_prebuilt_tools)
|
||||
$(compatibility_zip): PRIVATE_SUITE_NAME := $(test_suite_name)
|
||||
$(compatibility_zip): PRIVATE_DYNAMIC_CONFIG := $(test_suite_dynamic_config)
|
||||
$(compatibility_zip): $(test_artifacts) $(test_tools) $(test_suite_dynamic_config) $(SOONG_ZIP) | $(ADB) $(ACP)
|
||||
$(compatibility_zip): $(test_artifacts) $(test_tools) $(test_suite_prebuilt_tools) $(test_suite_dynamic_config) $(SOONG_ZIP) | $(ADB) $(ACP)
|
||||
# Make dir structure
|
||||
$(hide) mkdir -p $(PRIVATE_OUT_DIR)/tools $(PRIVATE_OUT_DIR)/testcases
|
||||
# Copy tools
|
||||
|
@ -56,3 +58,4 @@ test_suite_name :=
|
|||
test_suite_tradefed :=
|
||||
test_suite_dynamic_config :=
|
||||
test_suite_readme :=
|
||||
test_suite_prebuilt_tools :=
|
||||
|
|
|
@ -49,12 +49,6 @@ ALLOWED_VERSIONS := $(call allowed-platform-versions,\
|
|||
|
||||
ifndef TARGET_PLATFORM_VERSION
|
||||
TARGET_PLATFORM_VERSION := $(DEFAULT_PLATFORM_VERSION)
|
||||
else ifeq ($(TARGET_PLATFORM_VERSION),OPR1)
|
||||
# HACK: lunch currently sets TARGET_PLATFORM_VERSION to
|
||||
# DEFAULT_PLATFORM_VERSION, which causes unnecessary pain
|
||||
# when the old DEFAULT_PLATFORM_VERSION becomes invalid.
|
||||
# For now, silently upgrade OPR1 to the current default.
|
||||
TARGET_PLATFORM_VERSION := $(DEFAULT_PLATFORM_VERSION)
|
||||
endif
|
||||
|
||||
ifeq (,$(filter $(ALLOWED_VERSIONS), $(TARGET_PLATFORM_VERSION)))
|
||||
|
@ -77,7 +71,8 @@ endif
|
|||
# frameworks/support/compat/gingerbread/android/support/v4/os/BuildCompat.java
|
||||
|
||||
# When you change PLATFORM_VERSION for a given PLATFORM_SDK_VERSION
|
||||
# please add that PLATFORM_VERSION to the following text file:
|
||||
# please add that PLATFORM_VERSION as well as clean up obsolete PLATFORM_VERSION's
|
||||
# in the following text file:
|
||||
# cts/tests/tests/os/assets/platform_versions.txt
|
||||
PLATFORM_VERSION.PPR1 := P
|
||||
|
||||
|
@ -110,7 +105,7 @@ ifndef PLATFORM_SDK_VERSION
|
|||
# When you increment the PLATFORM_SDK_VERSION please ensure you also
|
||||
# clear out the following text file of all older PLATFORM_VERSION's:
|
||||
# cts/tests/tests/os/assets/platform_versions.txt
|
||||
PLATFORM_SDK_VERSION := 26
|
||||
PLATFORM_SDK_VERSION := 27
|
||||
endif
|
||||
|
||||
ifndef PLATFORM_VERSION_CODENAME
|
||||
|
@ -171,7 +166,7 @@ else
|
|||
# assuming the device can only support APIs as of the previous official
|
||||
# public release.
|
||||
# This value will always be 0 for release builds.
|
||||
PLATFORM_PREVIEW_SDK_VERSION := 1
|
||||
PLATFORM_PREVIEW_SDK_VERSION := 0
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -194,7 +189,7 @@ ifndef PLATFORM_SECURITY_PATCH
|
|||
# It must be of the form "YYYY-MM-DD" on production devices.
|
||||
# It must match one of the Android Security Patch Level strings of the Public Security Bulletins.
|
||||
# If there is no $PLATFORM_SECURITY_PATCH set, keep it empty.
|
||||
PLATFORM_SECURITY_PATCH := 2017-10-05
|
||||
PLATFORM_SECURITY_PATCH := 2017-12-01
|
||||
endif
|
||||
|
||||
ifndef PLATFORM_BASE_OS
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
type sysfs_writable, fs_type, sysfs_type, mlstrustedobject;
|
|
@ -15,7 +15,6 @@
|
|||
/dev/qemu_.* u:object_r:qemu_device:s0
|
||||
/dev/ttyGF[0-9]* u:object_r:serial_device:s0
|
||||
/dev/ttyS2 u:object_r:console_device:s0
|
||||
/sys/qemu_trace(/.*)? u:object_r:sysfs_writable:s0
|
||||
/vendor/bin/init\.ranchu-core\.sh u:object_r:goldfish_setup_exec:s0
|
||||
/vendor/bin/init\.ranchu-net\.sh u:object_r:goldfish_setup_exec:s0
|
||||
/vendor/bin/qemu-props u:object_r:qemu_props_exec:s0
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
vndbinder_use(hal_cas_default);
|
|
@ -14,38 +14,7 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Common boardconfig settings for generic AOSP products targetting mobile
|
||||
# (phone/table) devices.
|
||||
|
||||
# Bootloader is not part of generic AOSP image
|
||||
TARGET_NO_BOOTLOADER := true
|
||||
|
||||
# Kernel is also not part of generic AOSP image
|
||||
TARGET_NO_KERNEL := true
|
||||
|
||||
# system.img is always ext4 with sparse option
|
||||
TARGET_USERIMAGES_USE_EXT4 := true
|
||||
TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false
|
||||
TARGET_USES_MKE2FS := true
|
||||
|
||||
# Enable dex pre-opt to speed up initial boot
|
||||
ifeq ($(HOST_OS),linux)
|
||||
ifeq ($(WITH_DEXPREOPT),)
|
||||
WITH_DEXPREOPT := true
|
||||
WITH_DEXPREOPT_PIC := true
|
||||
ifneq ($(TARGET_BUILD_VARIANT),user)
|
||||
# Retain classes.dex in APK's for non-user builds
|
||||
DEX_PREOPT_DEFAULT := nostripping
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Generic AOSP image always requires separate vendor.img
|
||||
BOARD_USES_VENDORIMAGE := true
|
||||
TARGET_COPY_OUT_VENDOR := vendor
|
||||
|
||||
# Generic AOSP image does NOT support HWC1
|
||||
TARGET_USES_HWC2 := true
|
||||
include build/make/target/board/treble_common_64.mk
|
||||
|
||||
TARGET_ARCH := arm64
|
||||
TARGET_ARCH_VARIANT := armv8-a
|
||||
|
@ -57,13 +26,4 @@ TARGET_2ND_ARCH := arm
|
|||
TARGET_2ND_ARCH_VARIANT := armv7-a-neon
|
||||
TARGET_2ND_CPU_ABI := armeabi-v7a
|
||||
TARGET_2ND_CPU_ABI2 := armeabi
|
||||
TARGET_2ND_CPU_VARIANT := generic
|
||||
|
||||
TARGET_USES_64_BIT_BINDER := true
|
||||
|
||||
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736 # 1.5 GB
|
||||
|
||||
BOARD_FLASH_BLOCK_SIZE := 512
|
||||
|
||||
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
|
||||
|
||||
TARGET_2ND_CPU_VARIANT := cortex-a15
|
||||
|
|
|
@ -14,39 +14,7 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Common boardconfig settings for generic AOSP products targetting mobile
|
||||
# (phone/table) devices.
|
||||
|
||||
# Bootloader is not part of generic AOSP image
|
||||
TARGET_NO_BOOTLOADER := true
|
||||
|
||||
# Kernel is also not part of generic AOSP image
|
||||
TARGET_NO_KERNEL := true
|
||||
|
||||
# system.img is always ext4 with sparse option
|
||||
TARGET_USERIMAGES_USE_EXT4 := true
|
||||
TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false
|
||||
TARGET_USES_MKE2FS := true
|
||||
|
||||
# Enable dex pre-opt to speed up initial boot
|
||||
ifeq ($(HOST_OS),linux)
|
||||
ifeq ($(WITH_DEXPREOPT),)
|
||||
WITH_DEXPREOPT := true
|
||||
WITH_DEXPREOPT_PIC := true
|
||||
ifneq ($(TARGET_BUILD_VARIANT),user)
|
||||
# Retain classes.dex in APK's for non-user builds
|
||||
DEX_PREOPT_DEFAULT := nostripping
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Generic AOSP image always requires separate vendor.img
|
||||
BOARD_USES_VENDORIMAGE := true
|
||||
TARGET_COPY_OUT_VENDOR := vendor
|
||||
|
||||
# Generic AOSP image does NOT support HWC1
|
||||
TARGET_USES_HWC2 := true
|
||||
NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
|
||||
include build/make/target/board/treble_common_64.mk
|
||||
|
||||
TARGET_ARCH := arm64
|
||||
TARGET_ARCH_VARIANT := armv8-a
|
||||
|
@ -58,27 +26,16 @@ TARGET_2ND_ARCH := arm
|
|||
TARGET_2ND_ARCH_VARIANT := armv7-a-neon
|
||||
TARGET_2ND_CPU_ABI := armeabi-v7a
|
||||
TARGET_2ND_CPU_ABI2 := armeabi
|
||||
# TODO(jiyong) can we set krait here?
|
||||
TARGET_2ND_CPU_VARIANT := cortex-a15
|
||||
|
||||
TARGET_USES_64_BIT_BINDER := true
|
||||
|
||||
# Enable A/B update
|
||||
TARGET_NO_RECOVERY := true
|
||||
BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
|
||||
|
||||
# TODO(jiyong) These might be SoC specific.
|
||||
BOARD_ROOT_EXTRA_FOLDERS := bt_firmware firmware firmware/radio persist
|
||||
BOARD_ROOT_EXTRA_FOLDERS += firmware firmware/radio persist
|
||||
BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp
|
||||
|
||||
# TODO(b/35603549): this is currently set to 2.5GB to support sailfish/marlin
|
||||
# Fix this!
|
||||
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648
|
||||
|
||||
BOARD_FLASH_BLOCK_SIZE := 512
|
||||
|
||||
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
|
||||
|
||||
# TODO(b/36764215): remove this setting when the generic system image
|
||||
# no longer has QCOM-specific directories under /.
|
||||
BOARD_SEPOLICY_DIRS += build/target/board/generic_arm64_ab/sepolicy
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# TODO(b/36764215): remove this file when the generic system image
|
||||
# no longer has these directories
|
||||
type bt_firmware_file, file_type;
|
||||
type persist_file, file_type;
|
||||
|
||||
# Default type for anything under /firmware.
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
# no longer has these directories. They are specific to QCOM.
|
||||
|
||||
# /
|
||||
/bt_firmware(/.*)? u:object_r:bt_firmware_file:s0
|
||||
/tombstones u:object_r:rootfs:s0
|
||||
/dsp u:object_r:rootfs:s0
|
||||
|
||||
|
|
|
@ -14,48 +14,13 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Common boardconfig settings for generic AOSP products targetting mobile
|
||||
# (phone/table) devices.
|
||||
include build/make/target/board/treble_common_32.mk
|
||||
|
||||
# Bootloader is not part of generic AOSP image
|
||||
TARGET_NO_BOOTLOADER := true
|
||||
|
||||
# Kernel is also not part of generic AOSP image
|
||||
TARGET_NO_KERNEL := true
|
||||
|
||||
# system.img is always ext4 with sparse option
|
||||
TARGET_USERIMAGES_USE_EXT4 := true
|
||||
TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false
|
||||
TARGET_USES_MKE2FS := true
|
||||
|
||||
# Enable dex pre-opt to speed up initial boot
|
||||
ifeq ($(HOST_OS),linux)
|
||||
ifeq ($(WITH_DEXPREOPT),)
|
||||
WITH_DEXPREOPT := true
|
||||
WITH_DEXPREOPT_PIC := true
|
||||
ifneq ($(TARGET_BUILD_VARIANT),user)
|
||||
# Retain classes.dex in APK's for non-user builds
|
||||
DEX_PREOPT_DEFAULT := nostripping
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Generic AOSP image always requires separate vendor.img
|
||||
BOARD_USES_VENDORIMAGE := true
|
||||
TARGET_COPY_OUT_VENDOR := vendor
|
||||
|
||||
# Generic AOSP image does NOT support HWC1
|
||||
TARGET_USES_HWC2 := true
|
||||
# Overwrite the setting in treble_common_32.mk for non-A/B arm GSI
|
||||
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 805306368 # 768MB
|
||||
|
||||
TARGET_ARCH := arm
|
||||
TARGET_ARCH_VARIANT := armv7-a-neon
|
||||
TARGET_CPU_ABI := armeabi-v7a
|
||||
TARGET_CPU_ABI2 := armeabi
|
||||
TARGET_CPU_VARIANT := generic
|
||||
|
||||
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736
|
||||
|
||||
BOARD_FLASH_BLOCK_SIZE := 512
|
||||
|
||||
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
|
||||
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
include build/make/target/board/treble_common_32.mk
|
||||
|
||||
# Overwrite the setting in treble_common_32.mk for non-A/B arm GSI
|
||||
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 805306368 # 768MB
|
||||
|
||||
TARGET_ARCH := arm
|
||||
TARGET_ARCH_VARIANT := armv7-a-neon
|
||||
TARGET_CPU_ABI := armeabi-v7a
|
||||
TARGET_CPU_ABI2 := armeabi
|
||||
TARGET_CPU_VARIANT := generic
|
||||
|
||||
# Enable A/B update
|
||||
TARGET_NO_RECOVERY := true
|
||||
BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
|
|
@ -2,5 +2,5 @@
|
|||
# system.prop for generic sdk
|
||||
#
|
||||
|
||||
rild.libpath=/system/lib/libreference-ril.so
|
||||
rild.libpath=/vendor/lib/libreference-ril.so
|
||||
rild.libargs=-d /dev/ttyS0
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
include build/make/target/board/treble_common_64.mk
|
||||
|
||||
TARGET_CPU_ABI := x86_64
|
||||
TARGET_ARCH := x86_64
|
||||
TARGET_ARCH_VARIANT := x86_64
|
||||
|
||||
TARGET_2ND_CPU_ABI := x86
|
||||
TARGET_2ND_ARCH := x86
|
||||
TARGET_2ND_ARCH_VARIANT := x86_64
|
|
@ -0,0 +1,29 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
include build/make/target/board/treble_common_64.mk
|
||||
|
||||
TARGET_CPU_ABI := x86_64
|
||||
TARGET_ARCH := x86_64
|
||||
TARGET_ARCH_VARIANT := x86_64
|
||||
|
||||
TARGET_2ND_CPU_ABI := x86
|
||||
TARGET_2ND_ARCH := x86
|
||||
TARGET_2ND_ARCH_VARIANT := x86_64
|
||||
|
||||
# Enable A/B update
|
||||
TARGET_NO_RECOVERY := true
|
||||
BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
|
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
include build/make/target/board/treble_common_32.mk
|
||||
|
||||
TARGET_CPU_ABI := x86
|
||||
TARGET_ARCH := x86
|
||||
TARGET_ARCH_VARIANT := x86
|
|
@ -0,0 +1,25 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
include build/make/target/board/treble_common_32.mk
|
||||
|
||||
TARGET_CPU_ABI := x86
|
||||
TARGET_ARCH := x86
|
||||
TARGET_ARCH_VARIANT := x86
|
||||
|
||||
# Enable A/B update
|
||||
TARGET_NO_RECOVERY := true
|
||||
BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
|
|
@ -0,0 +1,62 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Common boardconfig settings for generic AOSP products targetting mobile
|
||||
# (phone/table) devices.
|
||||
|
||||
# VNDK
|
||||
BOARD_VNDK_VERSION := current
|
||||
BOARD_VNDK_RUNTIME_DISABLE := true
|
||||
|
||||
# Properties
|
||||
TARGET_SYSTEM_PROP := build/make/target/board/treble_system.prop
|
||||
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
|
||||
|
||||
# Bootloader, kernel and recovery are not part of generic AOSP image
|
||||
TARGET_NO_BOOTLOADER := true
|
||||
TARGET_NO_KERNEL := true
|
||||
|
||||
# system.img is always ext4 with sparse option
|
||||
TARGET_USERIMAGES_USE_EXT4 := true
|
||||
TARGET_USERIMAGES_SPARSE_EXT_DISABLED := false
|
||||
TARGET_USES_MKE2FS := true
|
||||
|
||||
# Generic AOSP image always requires separate vendor.img
|
||||
TARGET_COPY_OUT_VENDOR := vendor
|
||||
|
||||
# Enable dex pre-opt to speed up initial boot
|
||||
ifeq ($(HOST_OS),linux)
|
||||
ifeq ($(WITH_DEXPREOPT),)
|
||||
WITH_DEXPREOPT := true
|
||||
WITH_DEXPREOPT_PIC := true
|
||||
ifneq ($(TARGET_BUILD_VARIANT),user)
|
||||
# Retain classes.dex in APK's for non-user builds
|
||||
DEX_PREOPT_DEFAULT := nostripping
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# Generic AOSP image does NOT support HWC1
|
||||
TARGET_USES_HWC2 := true
|
||||
# Set emulator framebuffer display device buffer count to 3
|
||||
NUM_FRAMEBUFFER_SURFACE_BUFFERS := 3
|
||||
|
||||
BOARD_FLASH_BLOCK_SIZE := 512
|
||||
|
||||
# b/64700195: add minimum support for odm.img
|
||||
# Currently odm.img can only be built by `make custom_images`.
|
||||
# Adding /odm mount point under root directory.
|
||||
BOARD_ROOT_EXTRA_FOLDERS += odm
|
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
include build/make/target/board/treble_common.mk
|
||||
|
||||
# Partition size defaults to 1 GB (1024 MB) for 32-bit products. It can
|
||||
# be overwritten in specific BoardConfig.mk, if so desired.
|
||||
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1073741824
|
|
@ -0,0 +1,23 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
include build/make/target/board/treble_common.mk
|
||||
|
||||
# Enable 64-bits binder
|
||||
TARGET_USES_64_BIT_BINDER := true
|
||||
|
||||
# Partition size is default 1.5GB (1536MB) for 64 bits projects
|
||||
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736
|
|
@ -0,0 +1,5 @@
|
|||
# GSI always generate dex pre-opt in system image
|
||||
ro.cp_system_other_odex=0
|
||||
|
||||
# GSI always disables adb authentication
|
||||
ro.adb.secure=0
|
|
@ -52,8 +52,11 @@ PRODUCT_MAKEFILES := \
|
|||
$(LOCAL_DIR)/generic_mips.mk \
|
||||
$(LOCAL_DIR)/aosp_arm.mk \
|
||||
$(LOCAL_DIR)/aosp_arm_a.mk \
|
||||
$(LOCAL_DIR)/aosp_arm_ab.mk \
|
||||
$(LOCAL_DIR)/full.mk \
|
||||
$(LOCAL_DIR)/aosp_x86.mk \
|
||||
$(LOCAL_DIR)/aosp_x86_a.mk \
|
||||
$(LOCAL_DIR)/aosp_x86_ab.mk \
|
||||
$(LOCAL_DIR)/aosp_x86_arm.mk \
|
||||
$(LOCAL_DIR)/full_x86.mk \
|
||||
$(LOCAL_DIR)/aosp_mips.mk \
|
||||
|
@ -63,6 +66,8 @@ PRODUCT_MAKEFILES := \
|
|||
$(LOCAL_DIR)/aosp_arm64_ab.mk \
|
||||
$(LOCAL_DIR)/aosp_mips64.mk \
|
||||
$(LOCAL_DIR)/aosp_x86_64.mk \
|
||||
$(LOCAL_DIR)/aosp_x86_64_a.mk \
|
||||
$(LOCAL_DIR)/aosp_x86_64_ab.mk \
|
||||
$(LOCAL_DIR)/sdk_phone_armv7.mk \
|
||||
$(LOCAL_DIR)/sdk_phone_x86.mk \
|
||||
$(LOCAL_DIR)/sdk_phone_mips.mk \
|
||||
|
|
|
@ -16,13 +16,10 @@
|
|||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/generic_arm64_a/
|
||||
# system.prop.
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common.mk
|
||||
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
|
||||
include build/make/target/product/treble_common_64.mk
|
||||
|
||||
PRODUCT_NAME := aosp_arm64_a
|
||||
PRODUCT_DEVICE := generic_arm64_a
|
||||
|
|
|
@ -16,10 +16,10 @@
|
|||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/generic_arm64_a/
|
||||
# system.prop.
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common.mk
|
||||
include build/make/target/product/treble_common_64.mk
|
||||
|
||||
AB_OTA_UPDATER := true
|
||||
AB_OTA_PARTITIONS := system
|
||||
|
@ -27,9 +27,6 @@ PRODUCT_PACKAGES += \
|
|||
update_engine \
|
||||
update_verifier
|
||||
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
|
||||
|
||||
PRODUCT_NAME := aosp_arm64_ab
|
||||
PRODUCT_DEVICE := generic_arm64_ab
|
||||
PRODUCT_BRAND := Android
|
||||
|
|
|
@ -16,12 +16,10 @@
|
|||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/generic_arm_a/
|
||||
# system.prop.
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common.mk
|
||||
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
|
||||
include build/make/target/product/treble_common_32.mk
|
||||
|
||||
PRODUCT_NAME := aosp_arm_a
|
||||
PRODUCT_DEVICE := generic_arm_a
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common_32.mk
|
||||
|
||||
AB_OTA_UPDATER := true
|
||||
AB_OTA_PARTITIONS := system
|
||||
PRODUCT_PACKAGES += \
|
||||
update_engine \
|
||||
update_verifier
|
||||
|
||||
PRODUCT_NAME := aosp_arm_ab
|
||||
PRODUCT_DEVICE := generic_arm_ab
|
||||
PRODUCT_BRAND := Android
|
||||
PRODUCT_MODEL := AOSP on ARM32
|
|
@ -0,0 +1,27 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common_64.mk
|
||||
|
||||
PRODUCT_NAME := aosp_x86_64_a
|
||||
PRODUCT_DEVICE := generic_x86_64_a
|
||||
PRODUCT_BRAND := Android
|
||||
PRODUCT_MODEL := AOSP on x86_64
|
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common_64.mk
|
||||
|
||||
AB_OTA_UPDATER := true
|
||||
AB_OTA_PARTITIONS := system
|
||||
PRODUCT_PACKAGES += \
|
||||
update_engine \
|
||||
update_verifier
|
||||
|
||||
PRODUCT_NAME := aosp_x86_64_ab
|
||||
PRODUCT_DEVICE := generic_x86_64_ab
|
||||
PRODUCT_BRAND := Android
|
||||
PRODUCT_MODEL := AOSP on x86_64
|
|
@ -0,0 +1,27 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common_32.mk
|
||||
|
||||
PRODUCT_NAME := aosp_x86_a
|
||||
PRODUCT_DEVICE := generic_x86_a
|
||||
PRODUCT_BRAND := Android
|
||||
PRODUCT_MODEL := AOSP on x86
|
|
@ -0,0 +1,33 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common_32.mk
|
||||
|
||||
AB_OTA_UPDATER := true
|
||||
AB_OTA_PARTITIONS := system
|
||||
PRODUCT_PACKAGES += \
|
||||
update_engine \
|
||||
update_verifier
|
||||
|
||||
PRODUCT_NAME := aosp_x86_ab
|
||||
PRODUCT_DEVICE := generic_x86_ab
|
||||
PRODUCT_BRAND := Android
|
||||
PRODUCT_MODEL := AOSP on x86
|
|
@ -76,8 +76,6 @@ PRODUCT_PACKAGES += \
|
|||
libnetlink \
|
||||
libnetutils \
|
||||
libpdfium \
|
||||
libradio \
|
||||
libradioservice \
|
||||
libradio_metadata \
|
||||
libreference-ril \
|
||||
libreverbwrapper \
|
||||
|
@ -140,6 +138,7 @@ PRODUCT_PACKAGES += \
|
|||
|
||||
# Essential HAL modules
|
||||
PRODUCT_PACKAGES += \
|
||||
android.hardware.cas@1.0-service \
|
||||
android.hardware.media.omx@1.0-service
|
||||
|
||||
# XML schema files
|
||||
|
|
|
@ -71,6 +71,7 @@ PRODUCT_PACKAGES += \
|
|||
libfilterfw \
|
||||
libkeystore \
|
||||
libgatekeeper \
|
||||
libneuralnetworks \
|
||||
libwebviewchromium_loader \
|
||||
libwebviewchromium_plat_support \
|
||||
libwilhelm \
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
PRODUCT_PACKAGES += \
|
||||
adb \
|
||||
adbd \
|
||||
android.hardware.configstore@1.1-service \
|
||||
android.hardware.configstore@1.0-service \
|
||||
android.hidl.allocator@1.0-service \
|
||||
android.hidl.memory@1.0-impl \
|
||||
atrace \
|
||||
|
@ -76,6 +76,7 @@ PRODUCT_PACKAGES += \
|
|||
shell_and_utilities \
|
||||
storaged \
|
||||
surfaceflinger \
|
||||
thermalserviced \
|
||||
tombstoned \
|
||||
tzdatacheck \
|
||||
vndservice \
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Inherit common Android Go defaults.
|
||||
$(call inherit-product, build/target/product/go_defaults_common.mk)
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Inherit common Android Go defaults.
|
||||
$(call inherit-product, build/target/product/go_defaults_common.mk)
|
||||
|
||||
# 512MB specific properties.
|
||||
|
||||
# lmkd can kill more now.
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
ro.lmk.medium=700 \
|
||||
|
||||
# madvise random in ART to reduce page cache thrashing.
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
dalvik.vm.madvise-random=true
|
|
@ -0,0 +1,57 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# Sets Android Go recommended default values for propreties.
|
||||
|
||||
# Set lowram options
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
ro.config.low_ram=true \
|
||||
ro.lmk.critical_upgrade=true \
|
||||
ro.lmk.upgrade_pressure=40
|
||||
|
||||
# set threshold to filter unused apps
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
pm.dexopt.downgrade_after_inactive_days=10
|
||||
|
||||
|
||||
# Speed profile services and wifi-service to reduce RAM and storage.
|
||||
PRODUCT_SYSTEM_SERVER_COMPILER_FILTER := speed-profile
|
||||
|
||||
# Always preopt extracted APKs to prevent extracting out of the APK for gms
|
||||
# modules.
|
||||
PRODUCT_ALWAYS_PREOPT_EXTRACTED_APK := true
|
||||
|
||||
# Use a profile based boot image for this device. Note that this is currently a
|
||||
# generic profile and not Android Go optimized.
|
||||
PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE := true
|
||||
PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION := frameworks/base/config/boot-image-profile.txt
|
||||
|
||||
# set the compiler filter for shared apks to quicken.
|
||||
# Rationale: speed has a lot of dex code expansion, it uses more ram and space
|
||||
# compared to quicken. Using quicken for shared APKs on Go devices may save RAM.
|
||||
# Note that this is a trade-off: here we trade clean pages for dirty pages,
|
||||
# extra cpu and battery. That's because the quicken files will be jit-ed in all
|
||||
# the processes that load of shared apk and the code cache is not shared.
|
||||
# Some notable apps that will be affected by this are gms and chrome.
|
||||
# b/65591595.
|
||||
PRODUCT_PROPERTY_OVERRIDES += \
|
||||
pm.dexopt.shared=quicken
|
||||
|
||||
# Default heap sizes. Allow up to 256m for large heaps to make sure a single app
|
||||
# doesn't take all of the RAM.
|
||||
PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.heapgrowthlimit=128m
|
||||
PRODUCT_PROPERTY_OVERRIDES += dalvik.vm.heapsize=256m
|
||||
|
|
@ -15,10 +15,91 @@
|
|||
#
|
||||
|
||||
# This is a build configuration that just contains a list of languages.
|
||||
# It helps in situations where languages must come first in the list,
|
||||
# mostly because screen densities interfere with the list of locales and
|
||||
# the system misbehaves when a density is the first locale.
|
||||
|
||||
# These are all the locales that have translations and are displayable
|
||||
# by TextView in this branch.
|
||||
PRODUCT_LOCALES := en_US en_AU en_IN fr_FR it_IT es_ES et_EE de_DE nl_NL cs_CZ pl_PL ja_JP zh_TW zh_CN zh_HK ru_RU ko_KR nb_NO es_US da_DK el_GR tr_TR pt_PT pt_BR sv_SE bg_BG ca_ES en_GB fi_FI hi_IN hr_HR hu_HU in_ID iw_IL lt_LT lv_LV ro_RO sk_SK sl_SI sr_RS uk_UA vi_VN tl_PH ar_EG fa_IR th_TH sw_TZ ms_MY af_ZA zu_ZA am_ET en_XA ar_XB fr_CA km_KH lo_LA ne_NP si_LK mn_MN hy_AM az_AZ ka_GE my_MM mr_IN ml_IN is_IS mk_MK ky_KG eu_ES gl_ES bn_BD ta_IN kn_IN te_IN uz_UZ ur_PK kk_KZ sq_AL gu_IN pa_IN be_BY bs_BA sr_Latn_RS
|
||||
#
|
||||
# These are all the locales that have translations.
|
||||
PRODUCT_LOCALES := \
|
||||
en_US \
|
||||
af_ZA \
|
||||
am_ET \
|
||||
ar_EG \
|
||||
ar_XB \
|
||||
az_AZ \
|
||||
be_BY \
|
||||
bg_BG \
|
||||
bn_BD \
|
||||
bs_BA \
|
||||
ca_ES \
|
||||
cs_CZ \
|
||||
da_DK \
|
||||
de_DE \
|
||||
el_GR \
|
||||
en_AU \
|
||||
en_CA \
|
||||
en_GB \
|
||||
en_IN \
|
||||
en_XA \
|
||||
en_XC \
|
||||
es_ES \
|
||||
es_US \
|
||||
et_EE \
|
||||
eu_ES \
|
||||
fa_IR \
|
||||
fi_FI \
|
||||
fr_CA \
|
||||
fr_FR \
|
||||
gl_ES \
|
||||
gu_IN \
|
||||
hi_IN \
|
||||
hr_HR \
|
||||
hu_HU \
|
||||
hy_AM \
|
||||
in_ID \
|
||||
is_IS \
|
||||
it_IT \
|
||||
iw_IL \
|
||||
ja_JP \
|
||||
ka_GE \
|
||||
kk_KZ \
|
||||
km_KH \
|
||||
kn_IN \
|
||||
ko_KR \
|
||||
ky_KG \
|
||||
lo_LA \
|
||||
lt_LT \
|
||||
lv_LV \
|
||||
mk_MK \
|
||||
ml_IN \
|
||||
mn_MN \
|
||||
mr_IN \
|
||||
ms_MY \
|
||||
my_MM \
|
||||
nb_NO \
|
||||
ne_NP \
|
||||
nl_NL \
|
||||
pa_IN \
|
||||
pl_PL \
|
||||
pt_BR \
|
||||
pt_PT \
|
||||
ro_RO \
|
||||
ru_RU \
|
||||
si_LK \
|
||||
sk_SK \
|
||||
sl_SI \
|
||||
sq_AL \
|
||||
sr_Latn_RS \
|
||||
sr_RS \
|
||||
sv_SE \
|
||||
sw_TZ \
|
||||
ta_IN \
|
||||
te_IN \
|
||||
th_TH \
|
||||
tl_PH \
|
||||
tr_TR \
|
||||
uk_UA \
|
||||
ur_PK \
|
||||
uz_UZ \
|
||||
vi_VN \
|
||||
zh_CN \
|
||||
zh_HK \
|
||||
zh_TW \
|
||||
zu_ZA
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
#PRODUCT_SHIPPING_API_LEVEL indicates the first api level, device has been commercially launced on.
|
||||
PRODUCT_SHIPPING_API_LEVEL := 27
|
|
@ -92,7 +92,7 @@ PRODUCT_COPY_FILES := \
|
|||
frameworks/base/data/sounds/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \
|
||||
frameworks/base/data/sounds/effects/VideoStop.ogg:system/media/audio/ui/VideoStop.ogg \
|
||||
device/generic/goldfish/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \
|
||||
device/generic/goldfish/camera/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
|
||||
device/generic/goldfish/camera/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles.xml \
|
||||
frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
|
||||
frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
|
||||
device/generic/goldfish/camera/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
|
||||
|
|
|
@ -14,9 +14,23 @@
|
|||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
# Generic system image inherits from AOSP with telephony
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base.mk)
|
||||
$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony.mk)
|
||||
|
||||
# Split selinux policy
|
||||
PRODUCT_FULL_TREBLE_OVERRIDE := true
|
||||
|
||||
# The Messaging app:
|
||||
# Needed for android.telecom.cts.ExtendedInCallServiceTest#testOnCannedTextResponsesLoaded
|
||||
PRODUCT_PACKAGES += \
|
||||
messaging
|
||||
|
||||
# All VNDK libraries (HAL interfaces, VNDK, VNDK-SP, LL-NDK)
|
||||
PRODUCT_PACKAGES += vndk_package
|
||||
|
||||
|
@ -40,3 +54,21 @@ PRODUCT_COPY_FILES += \
|
|||
# audio.a2dp.default to support A2DP if board has the capability.
|
||||
PRODUCT_PACKAGES += \
|
||||
audio.a2dp.default
|
||||
|
||||
# Net:
|
||||
# Vendors can use the platform-provided network configuration utilities (ip,
|
||||
# iptable, etc.) to configure the Linux networking stack, but these utilities
|
||||
# do not yet include a HIDL interface wrapper. This is a solution on
|
||||
# Android O.
|
||||
PRODUCT_PACKAGES += \
|
||||
netutils-wrapper-1.0
|
||||
|
||||
# Android Verified Boot (AVB):
|
||||
# Builds a special vbmeta.img that disables AVB verification.
|
||||
# Otherwise, AVB will prevent the device from booting the generic system.img.
|
||||
# Also checks that BOARD_AVB_ENABLE is not set, to prevent adding verity
|
||||
# metadata into system.img.
|
||||
ifeq ($(BOARD_AVB_ENABLE),true)
|
||||
$(error BOARD_AVB_ENABLE cannot be set for Treble GSI)
|
||||
endif
|
||||
BOARD_BUILD_DISABLED_VBMETAIMAGE := true
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common.mk
|
|
@ -0,0 +1,37 @@
|
|||
#
|
||||
# Copyright (C) 2017 The Android Open-Source Project
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
# PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at
|
||||
# /vendor/[build|default].prop when build split is on. In order to have sysprops
|
||||
# on the generic system image, place them in build/make/target/board/
|
||||
# treble_system.prop.
|
||||
|
||||
include build/make/target/product/treble_common.mk
|
||||
|
||||
# For now this will allow 64-bit apps, but still compile all apps with JNI
|
||||
# for 32-bit only.
|
||||
|
||||
# Copy different zygote settings for vendor.img to select by setting property
|
||||
# ro.zygote=zygote64_32 or ro.zygote=zygote32_64:
|
||||
# 1. 64-bit primary, 32-bit secondary OR
|
||||
# 2. 32-bit primary, 64-bit secondary
|
||||
# 3. 64-bit only is currently forbidden (b/64280459#comment6)
|
||||
PRODUCT_COPY_FILES += \
|
||||
system/core/rootdir/init.zygote64_32.rc:root/init.zygote64_32.rc \
|
||||
system/core/rootdir/init.zygote32_64.rc:root/init.zygote32_64.rc
|
||||
|
||||
TARGET_SUPPORTS_32_BIT_APPS := true
|
||||
TARGET_SUPPORTS_64_BIT_APPS := true
|
|
@ -235,12 +235,40 @@ class TargetFiles(object):
|
|||
self.certmap = None
|
||||
|
||||
def LoadZipFile(self, filename):
|
||||
d, z = common.UnzipTemp(filename, ['*.apk'])
|
||||
# First read the APK certs file to figure out whether there are compressed
|
||||
# APKs in the archive. If we do have compressed APKs in the archive, then we
|
||||
# must decompress them individually before we perform any analysis.
|
||||
|
||||
# This is the list of wildcards of files we extract from |filename|.
|
||||
apk_extensions = ['*.apk']
|
||||
|
||||
self.certmap, compressed_extension = common.ReadApkCerts(zipfile.ZipFile(filename, "r"))
|
||||
if compressed_extension:
|
||||
apk_extensions.append("*.apk" + compressed_extension)
|
||||
|
||||
d, z = common.UnzipTemp(filename, apk_extensions)
|
||||
try:
|
||||
self.apks = {}
|
||||
self.apks_by_basename = {}
|
||||
for dirpath, _, filenames in os.walk(d):
|
||||
for fn in filenames:
|
||||
# Decompress compressed APKs before we begin processing them.
|
||||
if compressed_extension and fn.endswith(compressed_extension):
|
||||
# First strip the compressed extension from the file.
|
||||
uncompressed_fn = fn[:-len(compressed_extension)]
|
||||
|
||||
# Decompress the compressed file to the output file.
|
||||
common.Gunzip(os.path.join(dirpath, fn),
|
||||
os.path.join(dirpath, uncompressed_fn))
|
||||
|
||||
# Finally, delete the compressed file and use the uncompressed file
|
||||
# for further processing. Note that the deletion is not strictly required,
|
||||
# but is done here to ensure that we're not using too much space in
|
||||
# the temporary directory.
|
||||
os.remove(os.path.join(dirpath, fn))
|
||||
fn = uncompressed_fn
|
||||
|
||||
|
||||
if fn.endswith(".apk"):
|
||||
fullname = os.path.join(dirpath, fn)
|
||||
displayname = fullname[len(d)+1:]
|
||||
|
@ -253,7 +281,6 @@ class TargetFiles(object):
|
|||
finally:
|
||||
shutil.rmtree(d)
|
||||
|
||||
self.certmap = common.ReadApkCerts(z)
|
||||
z.close()
|
||||
|
||||
def CheckSharedUids(self):
|
||||
|
|
|
@ -18,6 +18,7 @@ import copy
|
|||
import errno
|
||||
import getopt
|
||||
import getpass
|
||||
import gzip
|
||||
import imp
|
||||
import os
|
||||
import platform
|
||||
|
@ -565,6 +566,13 @@ def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir,
|
|||
return None
|
||||
|
||||
|
||||
def Gunzip(in_filename, out_filename):
|
||||
"""Gunzip the given gzip compressed file to a given output file.
|
||||
"""
|
||||
with gzip.open(in_filename, "rb") as in_file, open(out_filename, "wb") as out_file:
|
||||
shutil.copyfileobj(in_file, out_file)
|
||||
|
||||
|
||||
def UnzipTemp(filename, pattern=None):
|
||||
"""Unzip the given archive into a temporary directory and return the name.
|
||||
|
||||
|
@ -786,16 +794,34 @@ def CheckSize(data, target, info_dict):
|
|||
|
||||
def ReadApkCerts(tf_zip):
|
||||
"""Given a target_files ZipFile, parse the META/apkcerts.txt file
|
||||
and return a {package: cert} dict."""
|
||||
and return a tuple with the following elements: (1) a dictionary that maps
|
||||
packages to certs (based on the "certificate" and "private_key" attributes
|
||||
in the file. (2) A string representing the extension of compressed APKs in
|
||||
the target files (e.g ".gz" ".bro")."""
|
||||
certmap = {}
|
||||
compressed_extension = None
|
||||
|
||||
# META/apkcerts.txt contains the info for _all_ the packages known at build
|
||||
# time. Filter out the ones that are not installed.
|
||||
installed_files = set()
|
||||
for name in tf_zip.namelist():
|
||||
basename = os.path.basename(name)
|
||||
if basename:
|
||||
installed_files.add(basename)
|
||||
|
||||
for line in tf_zip.read("META/apkcerts.txt").split("\n"):
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
m = re.match(r'^name="(.*)"\s+certificate="(.*)"\s+'
|
||||
r'private_key="(.*)"$', line)
|
||||
m = re.match(r'^name="(?P<NAME>.*)"\s+certificate="(?P<CERT>.*)"\s+'
|
||||
r'private_key="(?P<PRIVKEY>.*?)"(\s+compressed="(?P<COMPRESSED>.*)")?$',
|
||||
line)
|
||||
if m:
|
||||
name, cert, privkey = m.groups()
|
||||
matches = m.groupdict()
|
||||
cert = matches["CERT"]
|
||||
privkey = matches["PRIVKEY"]
|
||||
name = matches["NAME"]
|
||||
this_compressed_extension = matches["COMPRESSED"]
|
||||
public_key_suffix_len = len(OPTIONS.public_key_suffix)
|
||||
private_key_suffix_len = len(OPTIONS.private_key_suffix)
|
||||
if cert in SPECIAL_CERT_STRINGS and not privkey:
|
||||
|
@ -806,7 +832,22 @@ def ReadApkCerts(tf_zip):
|
|||
certmap[name] = cert[:-public_key_suffix_len]
|
||||
else:
|
||||
raise ValueError("failed to parse line from apkcerts.txt:\n" + line)
|
||||
return certmap
|
||||
if this_compressed_extension:
|
||||
# Only count the installed files.
|
||||
filename = name + '.' + this_compressed_extension
|
||||
if filename not in installed_files:
|
||||
continue
|
||||
# Make sure that all the values in the compression map have the same
|
||||
# extension. We don't support multiple compression methods in the same
|
||||
# system image.
|
||||
if compressed_extension:
|
||||
if this_compressed_extension != compressed_extension:
|
||||
raise ValueError("multiple compressed extensions : %s vs %s",
|
||||
(compressed_extension, this_compressed_extension))
|
||||
else:
|
||||
compressed_extension = this_compressed_extension
|
||||
|
||||
return (certmap, ("." + compressed_extension) if compressed_extension else None)
|
||||
|
||||
|
||||
COMMON_DOCSTRING = """
|
||||
|
|
|
@ -100,8 +100,10 @@ import base64
|
|||
import cStringIO
|
||||
import copy
|
||||
import errno
|
||||
import gzip
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import stat
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
@ -124,9 +126,7 @@ OPTIONS.avb_keys = {}
|
|||
OPTIONS.avb_algorithms = {}
|
||||
OPTIONS.avb_extra_args = {}
|
||||
|
||||
def GetApkCerts(tf_zip):
|
||||
certmap = common.ReadApkCerts(tf_zip)
|
||||
|
||||
def GetApkCerts(certmap):
|
||||
# apply the key remapping to the contents of the file
|
||||
for apk, cert in certmap.iteritems():
|
||||
certmap[apk] = OPTIONS.key_map.get(cert, cert)
|
||||
|
@ -140,13 +140,19 @@ def GetApkCerts(tf_zip):
|
|||
return certmap
|
||||
|
||||
|
||||
def CheckAllApksSigned(input_tf_zip, apk_key_map):
|
||||
def CheckAllApksSigned(input_tf_zip, apk_key_map, compressed_extension):
|
||||
"""Check that all the APKs we want to sign have keys specified, and
|
||||
error out if they don't."""
|
||||
unknown_apks = []
|
||||
compressed_apk_extension = None
|
||||
if compressed_extension:
|
||||
compressed_apk_extension = ".apk" + compressed_extension
|
||||
for info in input_tf_zip.infolist():
|
||||
if info.filename.endswith(".apk"):
|
||||
if (info.filename.endswith(".apk") or
|
||||
(compressed_apk_extension and info.filename.endswith(compressed_apk_extension))):
|
||||
name = os.path.basename(info.filename)
|
||||
if compressed_apk_extension and name.endswith(compressed_apk_extension):
|
||||
name = name[:-len(compressed_extension)]
|
||||
if name not in apk_key_map:
|
||||
unknown_apks.append(name)
|
||||
if unknown_apks:
|
||||
|
@ -157,11 +163,25 @@ def CheckAllApksSigned(input_tf_zip, apk_key_map):
|
|||
sys.exit(1)
|
||||
|
||||
|
||||
def SignApk(data, keyname, pw, platform_api_level, codename_to_api_level_map):
|
||||
def SignApk(data, keyname, pw, platform_api_level, codename_to_api_level_map,
|
||||
is_compressed):
|
||||
unsigned = tempfile.NamedTemporaryFile()
|
||||
unsigned.write(data)
|
||||
unsigned.flush()
|
||||
|
||||
if is_compressed:
|
||||
uncompressed = tempfile.NamedTemporaryFile()
|
||||
with gzip.open(unsigned.name, "rb") as in_file, open(uncompressed.name, "wb") as out_file:
|
||||
shutil.copyfileobj(in_file, out_file)
|
||||
|
||||
# Finally, close the "unsigned" file (which is gzip compressed), and then
|
||||
# replace it with the uncompressed version.
|
||||
#
|
||||
# TODO(narayan): All this nastiness can be avoided if python 3.2 is in use,
|
||||
# we could just gzip / gunzip in-memory buffers instead.
|
||||
unsigned.close()
|
||||
unsigned = uncompressed
|
||||
|
||||
signed = tempfile.NamedTemporaryFile()
|
||||
|
||||
# For pre-N builds, don't upgrade to SHA-256 JAR signatures based on the APK's
|
||||
|
@ -186,7 +206,18 @@ def SignApk(data, keyname, pw, platform_api_level, codename_to_api_level_map):
|
|||
min_api_level=min_api_level,
|
||||
codename_to_api_level_map=codename_to_api_level_map)
|
||||
|
||||
data = signed.read()
|
||||
data = None;
|
||||
if is_compressed:
|
||||
# Recompress the file after it has been signed.
|
||||
compressed = tempfile.NamedTemporaryFile()
|
||||
with open(signed.name, "rb") as in_file, gzip.open(compressed.name, "wb") as out_file:
|
||||
shutil.copyfileobj(in_file, out_file)
|
||||
|
||||
data = compressed.read()
|
||||
compressed.close()
|
||||
else:
|
||||
data = signed.read()
|
||||
|
||||
unsigned.close()
|
||||
signed.close()
|
||||
|
||||
|
@ -195,11 +226,17 @@ def SignApk(data, keyname, pw, platform_api_level, codename_to_api_level_map):
|
|||
|
||||
def ProcessTargetFiles(input_tf_zip, output_tf_zip, misc_info,
|
||||
apk_key_map, key_passwords, platform_api_level,
|
||||
codename_to_api_level_map):
|
||||
codename_to_api_level_map,
|
||||
compressed_extension):
|
||||
|
||||
compressed_apk_extension = None
|
||||
if compressed_extension:
|
||||
compressed_apk_extension = ".apk" + compressed_extension
|
||||
|
||||
maxsize = max([len(os.path.basename(i.filename))
|
||||
for i in input_tf_zip.infolist()
|
||||
if i.filename.endswith('.apk')])
|
||||
if i.filename.endswith('.apk') or
|
||||
(compressed_apk_extension and i.filename.endswith(compressed_apk_extension))])
|
||||
system_root_image = misc_info.get("system_root_image") == "true"
|
||||
|
||||
for info in input_tf_zip.infolist():
|
||||
|
@ -210,13 +247,18 @@ def ProcessTargetFiles(input_tf_zip, output_tf_zip, misc_info,
|
|||
out_info = copy.copy(info)
|
||||
|
||||
# Sign APKs.
|
||||
if info.filename.endswith(".apk"):
|
||||
if (info.filename.endswith(".apk") or
|
||||
(compressed_apk_extension and info.filename.endswith(compressed_apk_extension))):
|
||||
is_compressed = compressed_extension and info.filename.endswith(compressed_apk_extension)
|
||||
name = os.path.basename(info.filename)
|
||||
if is_compressed:
|
||||
name = name[:-len(compressed_extension)]
|
||||
|
||||
key = apk_key_map[name]
|
||||
if key not in common.SPECIAL_CERT_STRINGS:
|
||||
print " signing: %-*s (%s)" % (maxsize, name, key)
|
||||
signed_data = SignApk(data, key, key_passwords[key], platform_api_level,
|
||||
codename_to_api_level_map)
|
||||
codename_to_api_level_map, is_compressed)
|
||||
common.ZipWriteStr(output_tf_zip, out_info, signed_data)
|
||||
else:
|
||||
# an APK we're not supposed to sign.
|
||||
|
@ -751,8 +793,9 @@ def main(argv):
|
|||
|
||||
BuildKeyMap(misc_info, key_mapping_options)
|
||||
|
||||
apk_key_map = GetApkCerts(input_zip)
|
||||
CheckAllApksSigned(input_zip, apk_key_map)
|
||||
certmap, compressed_extension = common.ReadApkCerts(input_zip)
|
||||
apk_key_map = GetApkCerts(certmap)
|
||||
CheckAllApksSigned(input_zip, apk_key_map, compressed_extension)
|
||||
|
||||
key_passwords = common.GetKeyPasswords(set(apk_key_map.values()))
|
||||
platform_api_level, _ = GetApiLevelAndCodename(input_zip)
|
||||
|
@ -761,7 +804,8 @@ def main(argv):
|
|||
ProcessTargetFiles(input_zip, output_zip, misc_info,
|
||||
apk_key_map, key_passwords,
|
||||
platform_api_level,
|
||||
codename_to_api_level_map)
|
||||
codename_to_api_level_map,
|
||||
compressed_extension)
|
||||
|
||||
common.ZipClose(input_zip)
|
||||
common.ZipClose(output_zip)
|
||||
|
|
Loading…
Reference in New Issue