diff options
45 files changed, 866 insertions, 170 deletions
diff --git a/CleanSpec.mk b/CleanSpec.mk index 6352e38c98..ef9461b2aa 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -505,9 +505,9 @@ $(call add-clean-step, rm -rf $(TARGET_RECOVERY_ROOT_OUT)/etc) # Remove *_OUT_INTERMEDIATE_LIBRARIES $(call add-clean-step, rm -rf $(addsuffix /lib,\ - $(HOST_OUT_INTERMEDIATES) $(2ND_HOST_OUT_INTERMEDIATES) \ - $(HOST_CROSS_OUT_INTERMEDIATES) $(2ND_HOST_CROSS_OUT_INTERMEDIATES) \ - $(TARGET_OUT_INTERMEDIATES) $(2ND_TARGET_OUT_INTERMEDIATES))) +$(HOST_OUT_INTERMEDIATES) $(2ND_HOST_OUT_INTERMEDIATES) \ +$(HOST_CROSS_OUT_INTERMEDIATES) $(2ND_HOST_CROSS_OUT_INTERMEDIATES) \ +$(TARGET_OUT_INTERMEDIATES) $(2ND_TARGET_OUT_INTERMEDIATES))) # Remove strip.sh intermediates to save space $(call add-clean-step, find $(OUT_DIR) \( -name "*.so.debug" -o -name "*.so.dynsyms" -o -name "*.so.funcsyms" -o -name "*.so.keep_symbols" -o -name "*.so.mini_debuginfo.xz" \) -print0 | xargs -0 rm -f) @@ -646,6 +646,8 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib*/libstagefright_soft*) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/odm/build.prop) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/odm/build.prop) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/apex) + # Remove libcameraservice and libcamera_client from base_system $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib*/libcameraservice.so) $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib*/libcamera_client.so) @@ -685,6 +687,9 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/apex) # Migrate preopt files to system_other for some devices $(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/*app/*/oat) +# Migrate preopt files from system_other for some devices +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system_other) + # Remove Android Core Library artifacts from the system partition, now # that they live in the ART APEX (b/142944799). $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework/*.jar) @@ -699,9 +704,24 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/lib*/vndk-*) # again, as the original change removing them was reverted. $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/framework/*.jar) +# Remove cas@1.1 from the vendor partition +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.cas@1.1*) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.cas@1.1*) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.cas@1.1*) + +# Remove com.android.cellbroadcast apex for Go devices +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/apex/com.android.cellbroadcast.apex) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/apex/com.android.cellbroadcast) + +# Remove MediaProvider after moving into APEX +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/MediaProvider) + # The core image variant has been renamed to "" $(call add-clean-step, find $(SOONG_OUT_DIR)/.intermediates -type d -name "android_*_core*" -print0 | xargs -0 rm -rf) +# Remove 'media' command +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/media) + # Remove CtsShim apks from system partition, since the have been moved inside # the cts shim apex. Also remove the cts shim apex prebuilt since it has been # removed in flattened apexs configurations. @@ -713,6 +733,9 @@ $(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/apex/com.android.apex.cts.sh $(call add-clean-step, find $(SOONG_OUT_DIR)/.intermediates -type d -name "android_*_recovery*" -print0 | xargs -0 rm -rf) $(call add-clean-step, find $(SOONG_OUT_DIR)/.intermediates -type d -name "android_*_vendor*" -print0 | xargs -0 rm -rf) +# Remove PermissionController after moving into APEX +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/priv-app/*PermissionController) + # Clean up VTS-Core and VTS10 related artifacts. $(call add-clean-step, rm -rf $(HOST_OUT)/vts-core/*) $(call add-clean-step, rm -rf $(HOST_OUT)/framework/vts-core-tradefed.jar) diff --git a/core/Makefile b/core/Makefile index e363418aea..463ea97315 100644 --- a/core/Makefile +++ b/core/Makefile @@ -249,6 +249,7 @@ define generate-common-build-props-with-product-vars-set BUILD_VERSION_TAGS="$(BUILD_VERSION_TAGS)" \ DATE="$(DATE_FROM_FILE)" \ PLATFORM_SDK_VERSION="$(PLATFORM_SDK_VERSION)" \ + PLATFORM_VERSION_LAST_STABLE="$(PLATFORM_VERSION_LAST_STABLE)" \ PLATFORM_VERSION="$(PLATFORM_VERSION)" \ TARGET_BUILD_TYPE="$(TARGET_BUILD_VARIANT)" \ bash $(BUILDINFO_COMMON_SH) "$(1)" >> $(2) @@ -431,6 +432,7 @@ endif BUILD_NUMBER="$(BUILD_NUMBER_FROM_FILE)" \ BOARD_BUILD_SYSTEM_ROOT_IMAGE="$(BOARD_BUILD_SYSTEM_ROOT_IMAGE)" \ PLATFORM_VERSION="$(PLATFORM_VERSION)" \ + PLATFORM_VERSION_LAST_STABLE="$(PLATFORM_VERSION_LAST_STABLE)" \ PLATFORM_SECURITY_PATCH="$(PLATFORM_SECURITY_PATCH)" \ PLATFORM_BASE_OS="$(PLATFORM_BASE_OS)" \ PLATFORM_SDK_VERSION="$(PLATFORM_SDK_VERSION)" \ @@ -1156,7 +1158,7 @@ endif endif INTERNAL_MKBOOTIMG_VERSION_ARGS := \ - --os_version $(PLATFORM_VERSION) \ + --os_version $(PLATFORM_VERSION_LAST_STABLE) \ --os_patch_level $(PLATFORM_SECURITY_PATCH) # Define these only if we are building boot @@ -3378,10 +3380,10 @@ endif # When building a standalone recovery image for non-A/B devices, recovery image must be self-signed # to be verified independently, and cannot be chained into vbmeta.img. See the link below for # details. -ifneq ($(AB_OTA_UPDATER),true) +ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),) $(if $(BOARD_AVB_RECOVERY_KEY_PATH),,\ - $(error BOARD_AVB_RECOVERY_KEY_PATH must be defined for non-A/B devices. \ + $(error BOARD_AVB_RECOVERY_KEY_PATH must be defined for if non-A/B is supported. \ See https://android.googlesource.com/platform/external/avb/+/master/README.md#booting-into-recovery)) endif endif @@ -3390,22 +3392,22 @@ endif BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS += \ --prop com.android.build.system.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) \ - --prop com.android.build.system.os_version:$(PLATFORM_VERSION) \ + --prop com.android.build.system.os_version:$(PLATFORM_VERSION_LAST_STABLE) \ --prop com.android.build.system.security_patch:$(PLATFORM_SECURITY_PATCH) BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS += \ --prop com.android.build.product.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) \ - --prop com.android.build.product.os_version:$(PLATFORM_VERSION) \ + --prop com.android.build.product.os_version:$(PLATFORM_VERSION_LAST_STABLE) \ --prop com.android.build.product.security_patch:$(PLATFORM_SECURITY_PATCH) BOARD_AVB_SYSTEM_EXT_ADD_HASHTREE_FOOTER_ARGS += \ --prop com.android.build.system_ext.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) \ - --prop com.android.build.system_ext.os_version:$(PLATFORM_VERSION) \ + --prop com.android.build.system_ext.os_version:$(PLATFORM_VERSION_LAST_STABLE) \ --prop com.android.build.system_ext.security_patch:$(PLATFORM_SECURITY_PATCH) BOARD_AVB_BOOT_ADD_HASH_FOOTER_ARGS += \ --prop com.android.build.boot.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) \ - --prop com.android.build.boot.os_version:$(PLATFORM_VERSION) + --prop com.android.build.boot.os_version:$(PLATFORM_VERSION_LAST_STABLE) BOARD_AVB_VENDOR_BOOT_ADD_HASH_FOOTER_ARGS += \ --prop com.android.build.vendor_boot.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) \ @@ -3415,11 +3417,11 @@ BOARD_AVB_RECOVERY_ADD_HASH_FOOTER_ARGS += \ BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS += \ --prop com.android.build.vendor.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) \ - --prop com.android.build.vendor.os_version:$(PLATFORM_VERSION) + --prop com.android.build.vendor.os_version:$(PLATFORM_VERSION_LAST_STABLE) BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS += \ --prop com.android.build.odm.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) \ - --prop com.android.build.odm.os_version:$(PLATFORM_VERSION) + --prop com.android.build.odm.os_version:$(PLATFORM_VERSION_LAST_STABLE) BOARD_AVB_DTBO_ADD_HASH_FOOTER_ARGS += \ --prop com.android.build.dtbo.fingerprint:$(BUILD_FINGERPRINT_FROM_FILE) @@ -3472,7 +3474,7 @@ $(eval $(_signing_args) := \ # The recovery partition in non-A/B devices should be verified separately. Skip adding the chain # partition descriptor for recovery partition into vbmeta.img. -$(if $(or $(filter true,$(AB_OTA_UPDATER)),$(filter-out recovery,$(part))),\ +$(if $(or $(filter-out true,$(TARGET_OTA_ALLOW_NON_AB)),$(filter-out recovery,$(part))),\ $(eval INTERNAL_AVB_MAKE_VBMETA_IMAGE_ARGS += \ --chain_partition $(part):$($(_rollback_index_location)):$(AVB_CHAIN_KEY_DIR)/$(part).avbpubkey)) @@ -4261,6 +4263,9 @@ ifeq ($(AB_OTA_UPDATER),true) $(hide) echo "build_type=$(TARGET_BUILD_VARIANT)" >> $@ $(hide) echo "ab_update=true" >> $@ endif +ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) + $(hide) echo "allow_non_ab=true" >> $@ +endif ifdef BOARD_PREBUILT_DTBOIMAGE $(hide) echo "has_dtbo=true" >> $@ ifeq ($(BOARD_AVB_ENABLE),true) @@ -4338,10 +4343,13 @@ $(BUILT_TARGET_FILES_PACKAGE): PRIVATE_TOOL_EXTENSION := $(tool_extension) ifeq ($(AB_OTA_UPDATER),true) updater_dep := system/update_engine/update_engine.conf -else -# Build OTA tools if not using the AB Updater. +endif + +# Build OTA tools if non-A/B is allowed +ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) updater_dep := $(built_ota_tools) endif + $(BUILT_TARGET_FILES_PACKAGE): $(updater_dep) # If we are using recovery as boot, output recovery files to BOOT/. @@ -4617,7 +4625,7 @@ endif @# Extra contents of the OTA package $(hide) mkdir -p $(zip_root)/OTA $(hide) cp $(INSTALLED_ANDROID_INFO_TXT_TARGET) $(zip_root)/OTA/ -ifneq ($(AB_OTA_UPDATER),true) +ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(built_ota_tools),) $(hide) mkdir -p $(zip_root)/OTA/bin $(hide) cp $(PRIVATE_OTA_TOOLS) $(zip_root)/OTA/bin/ @@ -4654,7 +4662,7 @@ ifneq ($(PRODUCT_ODM_BASE_FS_PATH),) $(hide) cp $(PRODUCT_ODM_BASE_FS_PATH) \ $(zip_root)/META/$(notdir $(PRODUCT_ODM_BASE_FS_PATH)) endif -ifneq ($(AB_OTA_UPDATER),true) +ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(INSTALLED_RECOVERYIMAGE_TARGET),) $(hide) PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH MKBOOTIMG=$(MKBOOTIMG) \ $(MAKE_RECOVERY_PATCH) $(zip_root) $(zip_root) diff --git a/core/board_config.mk b/core/board_config.mk index 2279c3f10e..0ff28c5fdf 100644 --- a/core/board_config.mk +++ b/core/board_config.mk @@ -550,13 +550,31 @@ endif .KATI_READONLY := BUILDING_ODM_IMAGE ########################################### -# Ensure that only TARGET_RECOVERY_UPDATER_LIBS *or* AB_OTA_UPDATER is set. +# Ensure consistency among TARGET_RECOVERY_UPDATER_LIBS, AB_OTA_UPDATER, and PRODUCT_OTA_FORCE_NON_AB_PACKAGE. TARGET_RECOVERY_UPDATER_LIBS ?= AB_OTA_UPDATER ?= .KATI_READONLY := TARGET_RECOVERY_UPDATER_LIBS AB_OTA_UPDATER -ifeq ($(AB_OTA_UPDATER),true) + +# Ensure that if PRODUCT_OTA_FORCE_NON_AB_PACKAGE == true, then AB_OTA_UPDATER must be true +ifeq ($(PRODUCT_OTA_FORCE_NON_AB_PACKAGE),true) + ifneq ($(AB_OTA_UPDATER),true) + $(error AB_OTA_UPDATER must be set to true when PRODUCT_OTA_FORCE_NON_AB_PACKAGE is true) + endif +endif + +# In some configurations, A/B and non-A/B may coexist. Check TARGET_OTA_ALLOW_NON_AB +# to see if non-A/B is supported. +TARGET_OTA_ALLOW_NON_AB := false +ifneq ($(AB_OTA_UPDATER),true) + TARGET_OTA_ALLOW_NON_AB := true +else ifeq ($(PRODUCT_OTA_FORCE_NON_AB_PACKAGE),true) + TARGET_OTA_ALLOW_NON_AB := true +endif +.KATI_READONLY := TARGET_OTA_ALLOW_NON_AB + +ifneq ($(TARGET_OTA_ALLOW_NON_AB),true) ifneq ($(strip $(TARGET_RECOVERY_UPDATER_LIBS)),) - $(error Do not use TARGET_RECOVERY_UPDATER_LIBS when using AB_OTA_UPDATER) + $(error Do not use TARGET_RECOVERY_UPDATER_LIBS when using TARGET_OTA_ALLOW_NON_AB) endif endif diff --git a/core/build_id.mk b/core/build_id.mk index ba5ca42dc7..11f4a80669 100644 --- a/core/build_id.mk +++ b/core/build_id.mk @@ -18,4 +18,4 @@ # (like "CRB01"). It must be a single word, and is # capitalized by convention. -BUILD_ID=AOSP.MASTER +BUILD_ID=RVC diff --git a/core/config.mk b/core/config.mk index 3d08ba402f..a2977242b2 100644 --- a/core/config.mk +++ b/core/config.mk @@ -841,7 +841,7 @@ BUILD_DATETIME_FROM_FILE := $$(cat $(BUILD_DATETIME_FILE)) # is made which breaks compatibility with the previous platform sepolicy version, # not just on every increase in PLATFORM_SDK_VERSION. The minor version should # be reset to 0 on every bump of the PLATFORM_SDK_VERSION. -sepolicy_major_vers := 29 +sepolicy_major_vers := 30 sepolicy_minor_vers := 0 ifneq ($(sepolicy_major_vers), $(PLATFORM_SDK_VERSION)) diff --git a/core/definitions.mk b/core/definitions.mk index 1467e9687a..0e34943590 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -3171,11 +3171,12 @@ endef ########################################################### ## Find system_$(VER) in LOCAL_SDK_VERSION +## note: system_server_* is excluded. It's a different API surface ## ## $(1): LOCAL_SDK_VERSION ########################################################### define has-system-sdk-version -$(filter system_%,$(1)) +$(filter-out system_server_%,$(filter system_%,$(1))) endef ########################################################### diff --git a/core/main.mk b/core/main.mk index 68303cf660..111946c101 100644 --- a/core/main.mk +++ b/core/main.mk @@ -79,6 +79,8 @@ $(shell mkdir -p $(EMPTY_DIRECTORY) && rm -rf $(EMPTY_DIRECTORY)/*) -include test/mts/tools/build/config.mk # VTS-Core-specific config. -include test/vts/tools/vts-core-tradefed/build/config.mk +# CSUITE-specific config. +-include test/app_compat/csuite/tools/build/config.mk # Clean rules .PHONY: clean-dex-files @@ -925,10 +927,6 @@ $(foreach t,$($(2).TYPE),\ $(call link-type-error,$(1),$(2),$(t))))) endef -# TODO: Verify all branches/configs have reasonable warnings/errors, and remove -# this override -verify-link-type = $(eval $$(1).MISSING := true) - $(foreach lt,$(ALL_LINK_TYPES),\ $(foreach d,$($(lt).DEPS),\ $(if $($(d).TYPE),\ @@ -1615,9 +1613,11 @@ else # TARGET_BUILD_APPS # Put XML formatted API files in the dist dir. $(TARGET_OUT_COMMON_INTERMEDIATES)/api.xml: $(call java-lib-files,android_stubs_current) $(APICHECK) $(TARGET_OUT_COMMON_INTERMEDIATES)/system-api.xml: $(call java-lib-files,android_system_stubs_current) $(APICHECK) + $(TARGET_OUT_COMMON_INTERMEDIATES)/module-lib-api.xml: $(call java-lib-files,android_module_lib_stubs_current) $(APICHECK) + $(TARGET_OUT_COMMON_INTERMEDIATES)/system-server-api.xml: $(call java-lib-files,android_system_server_stubs_current) $(APICHECK) $(TARGET_OUT_COMMON_INTERMEDIATES)/test-api.xml: $(call java-lib-files,android_test_stubs_current) $(APICHECK) - api_xmls := $(addprefix $(TARGET_OUT_COMMON_INTERMEDIATES)/,api.xml system-api.xml test-api.xml) + api_xmls := $(addprefix $(TARGET_OUT_COMMON_INTERMEDIATES)/,api.xml system-api.xml module-lib-api.xml system-server-api.xml test-api.xml) $(api_xmls): $(hide) echo "Converting API file to XML: $@" $(hide) mkdir -p $(dir $@) diff --git a/core/product.mk b/core/product.mk index ea9be72a81..0aa07ef5b7 100644 --- a/core/product.mk +++ b/core/product.mk @@ -393,6 +393,13 @@ _product_single_value_vars += PRODUCT_VIRTUAL_AB_OTA # If set, device retrofits virtual A/B. _product_single_value_vars += PRODUCT_VIRTUAL_AB_OTA_RETROFIT +# If set, forcefully generate a non-A/B update package. +# Note: A device configuration should inherit from virtual_ab_ota_plus_non_ab.mk +# instead of setting this variable directly. +# Note: Use TARGET_OTA_ALLOW_NON_AB in the build system because +# TARGET_OTA_ALLOW_NON_AB takes the value of AB_OTA_UPDATER into account. +_product_single_value_vars += PRODUCT_OTA_FORCE_NON_AB_PACKAGE + # If set, Java module in product partition cannot use hidden APIs. _product_single_value_vars += PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE diff --git a/core/sdk_font.mk b/core/sdk_font.mk index 0259a9ce50..174292559f 100644 --- a/core/sdk_font.mk +++ b/core/sdk_font.mk @@ -19,9 +19,9 @@ SDK_FONT_TEMP := $(call intermediates-dir-for,PACKAGING,sdk-fonts,HOST,COMMON) # The font configuration files - system_fonts.xml, fallback_fonts.xml etc. sdk_font_config := $(sort $(wildcard frameworks/base/data/fonts/*.xml)) -sdk_font_config := $(addprefix $(SDK_FONT_TEMP)/, $(notdir $(sdk_font_config))) +sdk_font_config := $(addprefix $(SDK_FONT_TEMP)/standard/, $(notdir $(sdk_font_config))) -$(sdk_font_config): $(SDK_FONT_TEMP)/%.xml: \ +$(sdk_font_config): $(SDK_FONT_TEMP)/standard/%.xml: \ frameworks/base/data/fonts/%.xml $(hide) mkdir -p $(dir $@) $(hide) cp -vf $< $@ diff --git a/core/tasks/check_boot_jars/package_whitelist.txt b/core/tasks/check_boot_jars/package_whitelist.txt index d4f600acf5..8adf8770ae 100644 --- a/core/tasks/check_boot_jars/package_whitelist.txt +++ b/core/tasks/check_boot_jars/package_whitelist.txt @@ -122,8 +122,6 @@ dalvik\..* libcore\..* android\..* com\.android\..* - - ################################################### # android.test.base.jar junit\.extensions @@ -241,6 +239,8 @@ org\.apache\.xalan\.xslt # Packages in the google namespace across all bootclasspath jars. com\.google\.android\..* com\.google\.vr\.platform.* +com\.google\.i18n\.phonenumbers\..* +com\.google\.i18n\.phonenumbers ################################################### # Packages used for Android in Chrome OS diff --git a/core/tasks/csuite.mk b/core/tasks/csuite.mk new file mode 100644 index 0000000000..a8dba1d7ba --- /dev/null +++ b/core/tasks/csuite.mk @@ -0,0 +1,23 @@ +# Copyright (C) 2019 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. + +test_suite_name := csuite +test_suite_tradefed := csuite-tradefed +test_suite_readme := test/app_compat/csuite/README.md + +include $(BUILD_SYSTEM)/tasks/tools/compatibility.mk + +.PHONY: csuite +csuite: $(compatibility_zip) +$(call dist-for-goals, csuite, $(compatibility_zip)) diff --git a/core/tasks/tools/package-modules.mk b/core/tasks/tools/package-modules.mk index 6cafa4a2a3..2b43f0fed3 100644 --- a/core/tasks/tools/package-modules.mk +++ b/core/tasks/tools/package-modules.mk @@ -50,7 +50,7 @@ my_missing_files = $(shell $(call echo-warning,$(my_makefile),$(my_package_name) ifeq ($(ALLOW_MISSING_DEPENDENCIES),true) # Ignore unknown installed files on partial builds my_missing_files = -else ifeq ($(my_modules_strict),true) +else ifneq ($(my_modules_strict),false) my_missing_files = $(shell $(call echo-error,$(my_makefile),$(my_package_name): Unknown installed file for module '$(1)'))$(eval my_missing_error := true) endif diff --git a/core/version_defaults.mk b/core/version_defaults.mk index f16b7a7fd3..72dc2ca9d5 100644 --- a/core/version_defaults.mk +++ b/core/version_defaults.mk @@ -84,40 +84,17 @@ MAX_PLATFORM_VERSION := # generate the range of allowed SDK versions, so it must have an entry for every # unreleased API level targetable by this branch, not just those that are valid # lunch targets for this branch. -PLATFORM_VERSION.RP1A := R -PLATFORM_VERSION.SP1A := S + +# The last stable version name of the platform that was released. During +# development, this stays at that previous version, while the codename indicates +# further work based on the previous version. +PLATFORM_VERSION_LAST_STABLE := 11 +.KATI_READONLY := PLATFORM_VERSION_LAST_STABLE # These are the current development codenames, if the build is not a final # release build. If this is a final release build, it is simply "REL". -PLATFORM_VERSION_CODENAME.RP1A := R PLATFORM_VERSION_CODENAME.SP1A := S -ifndef PLATFORM_VERSION - PLATFORM_VERSION := $(PLATFORM_VERSION.$(TARGET_PLATFORM_VERSION)) - ifndef PLATFORM_VERSION - # PLATFORM_VERSION falls back to TARGET_PLATFORM_VERSION - PLATFORM_VERSION := $(TARGET_PLATFORM_VERSION) - endif -endif -.KATI_READONLY := PLATFORM_VERSION - -ifndef PLATFORM_SDK_VERSION - # This is the canonical definition of the SDK version, which defines - # the set of APIs and functionality available in the platform. It - # is a single integer that increases monotonically as updates to - # the SDK are released. It should only be incremented when the APIs for - # the new release are frozen (so that developers don't write apps against - # intermediate builds). During development, this number remains at the - # SDK version the branch is based on and PLATFORM_VERSION_CODENAME holds - # the code-name of the new development work. - - # 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 := 29 -endif -.KATI_READONLY := PLATFORM_SDK_VERSION - ifndef PLATFORM_VERSION_CODENAME PLATFORM_VERSION_CODENAME := $(PLATFORM_VERSION_CODENAME.$(TARGET_PLATFORM_VERSION)) ifndef PLATFORM_VERSION_CODENAME @@ -152,6 +129,32 @@ endif PLATFORM_VERSION_CODENAME \ PLATFORM_VERSION_ALL_CODENAMES +ifndef PLATFORM_VERSION + ifeq (REL,$(PLATFORM_VERSION_CODENAME)) + PLATFORM_VERSION := $(PLATFORM_VERSION_LAST_STABLE) + else + PLATFORM_VERSION := $(PLATFORM_VERSION_CODENAME) + endif +endif +.KATI_READONLY := PLATFORM_VERSION + +ifndef PLATFORM_SDK_VERSION + # This is the canonical definition of the SDK version, which defines + # the set of APIs and functionality available in the platform. It + # is a single integer that increases monotonically as updates to + # the SDK are released. It should only be incremented when the APIs for + # the new release are frozen (so that developers don't write apps against + # intermediate builds). During development, this number remains at the + # SDK version the branch is based on and PLATFORM_VERSION_CODENAME holds + # the code-name of the new development work. + + # 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 := 30 +endif +.KATI_READONLY := PLATFORM_SDK_VERSION + ifeq (REL,$(PLATFORM_VERSION_CODENAME)) PLATFORM_PREVIEW_SDK_VERSION := 0 else @@ -237,7 +240,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 := 2020-05-05 + PLATFORM_SECURITY_PATCH := 2020-06-05 endif .KATI_READONLY := PLATFORM_SECURITY_PATCH diff --git a/target/product/aosp_product.mk b/target/product/aosp_product.mk index 9b9ccb1448..e3819e6115 100644 --- a/target/product/aosp_product.mk +++ b/target/product/aosp_product.mk @@ -31,6 +31,7 @@ PRODUCT_PRODUCT_PROPERTIES += \ PRODUCT_PACKAGES += \ messaging \ PhotoTable \ + preinstalled-packages-platform-aosp-product.xml \ WallpaperPicker \ # Telephony: diff --git a/target/product/base_system.mk b/target/product/base_system.mk index a3ca2a56bb..37a003f646 100644 --- a/target/product/base_system.mk +++ b/target/product/base_system.mk @@ -38,6 +38,7 @@ PRODUCT_PACKAGES += \ bcc \ blank_screen \ blkid \ + service-blobstore \ bmgr \ bootanimation \ bootstat \ @@ -52,17 +53,21 @@ PRODUCT_PACKAGES += \ com.android.adbd \ com.android.apex.cts.shim.v1 \ com.android.conscrypt \ - com.android.cronet \ + com.android.extservices \ com.android.i18n \ com.android.ipsec \ com.android.location.provider \ com.android.media \ com.android.media.swcodec \ + com.android.mediaprovider \ + com.android.os.statsd \ + com.android.permission \ com.android.resolv \ com.android.neuralnetworks \ com.android.sdkext \ com.android.tethering \ com.android.tzdata \ + com.android.wifi \ ContactsProvider \ content \ debuggerd\ @@ -75,7 +80,6 @@ PRODUCT_PACKAGES += \ dumpsys \ DynamicSystemInstallationService \ e2fsck \ - ExtServices \ ExtShared \ flags_health_check \ framework-minus-apex \ @@ -94,7 +98,6 @@ PRODUCT_PACKAGES += \ gpuservice \ hid \ hwservicemanager \ - idmap \ idmap2 \ idmap2d \ ime \ @@ -102,6 +105,7 @@ PRODUCT_PACKAGES += \ incident \ incidentd \ incident_helper \ + incident-helper-cmd \ init.environ.rc \ init_system \ input \ @@ -111,6 +115,7 @@ PRODUCT_PACKAGES += \ iptables \ ip-up-vpn \ javax.obex \ + service-jobscheduler \ keystore \ ld.mc \ libaaudio \ @@ -161,7 +166,6 @@ PRODUCT_PACKAGES += \ libOpenMAXAL \ libOpenSLES \ libpdfium \ - libpixelflinger \ libpower \ libpowermanager \ libradio_metadata \ @@ -184,7 +188,6 @@ PRODUCT_PACKAGES += \ libusbhost \ libutils \ libvulkan \ - libwifi-service \ libwilhelm \ linker \ linkerconfig \ @@ -196,13 +199,11 @@ PRODUCT_PACKAGES += \ lpdump \ lshal \ mdnsd \ - media \ mediacodec.policy \ - mediadrmserver \ mediaextractor \ mediametrics \ media_profiles_V1_0.dtd \ - MediaProvider \ + MediaProviderLegacy \ mediaserver \ mke2fs \ monkey \ @@ -215,12 +216,12 @@ PRODUCT_PACKAGES += \ PackageInstaller \ passwd_system \ perfetto \ - PermissionController \ ping \ ping6 \ platform.xml \ pm \ pppd \ + preinstalled-packages-platform.xml \ privapp-permissions-platform.xml \ racoon \ recovery-persist \ @@ -245,7 +246,7 @@ PRODUCT_PACKAGES += \ shell_and_utilities_system \ sm \ snapshotctl \ - statsd \ + SoundPicker \ storaged \ surfaceflinger \ svc \ @@ -268,7 +269,7 @@ PRODUCT_PACKAGES += \ WallpaperBackup \ watchdogd \ wificond \ - wifi-service \ + wifi.rc \ wm \ # VINTF data for system image @@ -324,12 +325,16 @@ PRODUCT_BOOT_JARS := \ com.android.i18n:core-icu4j \ telephony-common \ voip-common \ - ims-common \ + ims-common PRODUCT_UPDATABLE_BOOT_JARS := \ com.android.conscrypt:conscrypt \ com.android.media:updatable-media \ + com.android.mediaprovider:framework-mediaprovider \ + com.android.os.statsd:framework-statsd \ + com.android.permission:framework-permission \ com.android.sdkext:framework-sdkextensions \ + com.android.wifi:framework-wifi \ com.android.tethering:framework-tethering PRODUCT_COPY_FILES += \ @@ -351,6 +356,7 @@ PRODUCT_COPY_FILES += system/core/rootdir/init.zygote32.rc:system/etc/init/hw/in PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.zygote=zygote32 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += debug.atrace.tags.enableflags=0 +PRODUCT_SYSTEM_DEFAULT_PROPERTIES += persist.traced.enable=1 # Packages included only for eng or userdebug builds, previously debug tagged PRODUCT_PACKAGES_DEBUG := \ diff --git a/target/product/base_vendor.mk b/target/product/base_vendor.mk index b3368d694d..471340b2d1 100644 --- a/target/product/base_vendor.mk +++ b/target/product/base_vendor.mk @@ -40,7 +40,7 @@ PRODUCT_HOST_PACKAGES += \ # Base modules and settings for the vendor partition. PRODUCT_PACKAGES += \ - android.hardware.cas@1.1-service \ + android.hardware.cas@1.2-service \ android.hardware.media.omx@1.0-service \ boringssl_self_test_vendor \ dumpsys_vendor \ diff --git a/target/product/emulator.mk b/target/product/emulator.mk index 52fa1a7c91..93c861f84c 100644 --- a/target/product/emulator.mk +++ b/target/product/emulator.mk @@ -50,12 +50,6 @@ $(call inherit-product-if-exists, device/generic/goldfish/vendor.mk) #PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ #config.disable_location=true -# Enable Perfetto traced -# There is a stable property API for this prop so we can move it to /product. -# https://android-review.googlesource.com/c/platform/system/libsysprop/+/952375 -PRODUCT_PRODUCT_PROPERTIES += \ - persist.traced.enable=1 - # enable Google-specific location features, # like NetworkLocationProvider and LocationCollector PRODUCT_SYSTEM_EXT_PROPERTIES += \ diff --git a/target/product/emulator_vendor.mk b/target/product/emulator_vendor.mk index 7891a2697e..a935d58b15 100644 --- a/target/product/emulator_vendor.mk +++ b/target/product/emulator_vendor.mk @@ -42,12 +42,6 @@ $(call inherit-product-if-exists, device/generic/goldfish/vendor.mk) #PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \ #config.disable_location=true -# Enable Perfetto traced -# There is a stable property API for this prop so we can move it to /product. -# https://android-review.googlesource.com/c/platform/system/libsysprop/+/952375 -PRODUCT_PRODUCT_PROPERTIES += \ - persist.traced.enable=1 - # enable Google-specific location features, # like NetworkLocationProvider and LocationCollector PRODUCT_SYSTEM_EXT_PROPERTIES += \ diff --git a/target/product/full_base.mk b/target/product/full_base.mk index 447576ce15..ffd3cde11a 100644 --- a/target/product/full_base.mk +++ b/target/product/full_base.mk @@ -25,7 +25,8 @@ PRODUCT_PACKAGES := \ PRODUCT_PACKAGES += \ LiveWallpapersPicker \ - PhotoTable + PhotoTable \ + preinstalled-packages-platform-full-base.xml # Bluetooth: # audio.a2dp.default is a system module. Generic system image includes diff --git a/target/product/go_defaults_common.mk b/target/product/go_defaults_common.mk index 3e42b68723..ca171dff5c 100644 --- a/target/product/go_defaults_common.mk +++ b/target/product/go_defaults_common.mk @@ -20,7 +20,6 @@ # Set lowram options and enable traced by default PRODUCT_PROPERTY_OVERRIDES += \ ro.config.low_ram=true \ - persist.traced.enable=1 \ # Speed profile services and wifi-service to reduce RAM and storage. PRODUCT_SYSTEM_SERVER_COMPILER_FILTER := speed-profile @@ -40,6 +39,7 @@ PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD := false # Do not spin up a separate process for the network stack on go devices, use an in-process APK. PRODUCT_PACKAGES += InProcessNetworkStack PRODUCT_PACKAGES += CellBroadcastAppPlatform +PRODUCT_PACKAGES += CellBroadcastServiceModulePlatform PRODUCT_PACKAGES += com.android.tethering.inprocess # Strip the local variable table and the local variable type table to reduce diff --git a/target/product/gsi/30.txt b/target/product/gsi/30.txt new file mode 100644 index 0000000000..cc2d36d9d2 --- /dev/null +++ b/target/product/gsi/30.txt @@ -0,0 +1,309 @@ +LLNDK: libEGL.so +LLNDK: libGLESv1_CM.so +LLNDK: libGLESv2.so +LLNDK: libGLESv3.so +LLNDK: libRS.so +LLNDK: libandroid_net.so +LLNDK: libbinder_ndk.so +LLNDK: libc.so +LLNDK: libcgrouprc.so +LLNDK: libdl.so +LLNDK: libft2.so +LLNDK: liblog.so +LLNDK: libm.so +LLNDK: libmediandk.so +LLNDK: libnativewindow.so +LLNDK: libneuralnetworks.so +LLNDK: libselinux.so +LLNDK: libsync.so +LLNDK: libvndksupport.so +LLNDK: libvulkan.so +VNDK-SP: android.hardware.common-V1-ndk_platform.so +VNDK-SP: android.hardware.graphics.common-V1-ndk_platform.so +VNDK-SP: android.hardware.graphics.common@1.0.so +VNDK-SP: android.hardware.graphics.common@1.1.so +VNDK-SP: android.hardware.graphics.common@1.2.so +VNDK-SP: android.hardware.graphics.mapper@2.0.so +VNDK-SP: android.hardware.graphics.mapper@2.1.so +VNDK-SP: android.hardware.graphics.mapper@3.0.so +VNDK-SP: android.hardware.graphics.mapper@4.0.so +VNDK-SP: android.hardware.renderscript@1.0.so +VNDK-SP: android.hidl.memory.token@1.0.so +VNDK-SP: android.hidl.memory@1.0-impl.so +VNDK-SP: android.hidl.memory@1.0.so +VNDK-SP: android.hidl.safe_union@1.0.so +VNDK-SP: libRSCpuRef.so +VNDK-SP: libRSDriver.so +VNDK-SP: libRS_internal.so +VNDK-SP: libbacktrace.so +VNDK-SP: libbase.so +VNDK-SP: libbcinfo.so +VNDK-SP: libblas.so +VNDK-SP: libc++.so +VNDK-SP: libcompiler_rt.so +VNDK-SP: libcutils.so +VNDK-SP: libgralloctypes.so +VNDK-SP: libhardware.so +VNDK-SP: libhidlbase.so +VNDK-SP: libhidlmemory.so +VNDK-SP: libion.so +VNDK-SP: libjsoncpp.so +VNDK-SP: liblzma.so +VNDK-SP: libprocessgroup.so +VNDK-SP: libunwindstack.so +VNDK-SP: libutils.so +VNDK-SP: libutilscallstack.so +VNDK-SP: libz.so +VNDK-core: android.frameworks.automotive.display@1.0.so +VNDK-core: android.frameworks.cameraservice.common@2.0.so +VNDK-core: android.frameworks.cameraservice.device@2.0.so +VNDK-core: android.frameworks.cameraservice.service@2.0.so +VNDK-core: android.frameworks.cameraservice.service@2.1.so +VNDK-core: android.frameworks.displayservice@1.0.so +VNDK-core: android.frameworks.schedulerservice@1.0.so +VNDK-core: android.frameworks.sensorservice@1.0.so +VNDK-core: android.frameworks.stats@1.0.so +VNDK-core: android.hardware.atrace@1.0.so +VNDK-core: android.hardware.audio.common@2.0.so +VNDK-core: android.hardware.audio.common@4.0.so +VNDK-core: android.hardware.audio.common@5.0.so +VNDK-core: android.hardware.audio.common@6.0.so +VNDK-core: android.hardware.audio.effect@2.0.so +VNDK-core: android.hardware.audio.effect@4.0.so +VNDK-core: android.hardware.audio.effect@5.0.so +VNDK-core: android.hardware.audio.effect@6.0.so +VNDK-core: android.hardware.audio@2.0.so +VNDK-core: android.hardware.audio@4.0.so +VNDK-core: android.hardware.audio@5.0.so +VNDK-core: android.hardware.audio@6.0.so +VNDK-core: android.hardware.authsecret@1.0.so +VNDK-core: android.hardware.automotive.audiocontrol@1.0.so +VNDK-core: android.hardware.automotive.audiocontrol@2.0.so +VNDK-core: android.hardware.automotive.can@1.0.so +VNDK-core: android.hardware.automotive.evs@1.0.so +VNDK-core: android.hardware.automotive.evs@1.1.so +VNDK-core: android.hardware.automotive.occupant_awareness-V1-ndk_platform.so +VNDK-core: android.hardware.automotive.sv@1.0.so +VNDK-core: android.hardware.automotive.vehicle@2.0.so +VNDK-core: android.hardware.biometrics.face@1.0.so +VNDK-core: android.hardware.biometrics.fingerprint@2.1.so +VNDK-core: android.hardware.biometrics.fingerprint@2.2.so +VNDK-core: android.hardware.bluetooth.a2dp@1.0.so +VNDK-core: android.hardware.bluetooth.audio@2.0.so +VNDK-core: android.hardware.bluetooth@1.0.so +VNDK-core: android.hardware.bluetooth@1.1.so +VNDK-core: android.hardware.boot@1.0.so +VNDK-core: android.hardware.boot@1.1.so +VNDK-core: android.hardware.broadcastradio@1.0.so +VNDK-core: android.hardware.broadcastradio@1.1.so +VNDK-core: android.hardware.broadcastradio@2.0.so +VNDK-core: android.hardware.camera.common@1.0.so +VNDK-core: android.hardware.camera.device@1.0.so +VNDK-core: android.hardware.camera.device@3.2.so +VNDK-core: android.hardware.camera.device@3.3.so +VNDK-core: android.hardware.camera.device@3.4.so +VNDK-core: android.hardware.camera.device@3.5.so +VNDK-core: android.hardware.camera.device@3.6.so +VNDK-core: android.hardware.camera.metadata@3.2.so +VNDK-core: android.hardware.camera.metadata@3.3.so +VNDK-core: android.hardware.camera.metadata@3.4.so +VNDK-core: android.hardware.camera.metadata@3.5.so +VNDK-core: android.hardware.camera.provider@2.4.so +VNDK-core: android.hardware.camera.provider@2.5.so +VNDK-core: android.hardware.camera.provider@2.6.so +VNDK-core: android.hardware.cas.native@1.0.so +VNDK-core: android.hardware.cas@1.0.so +VNDK-core: android.hardware.cas@1.1.so +VNDK-core: android.hardware.cas@1.2.so +VNDK-core: android.hardware.configstore-utils.so +VNDK-core: android.hardware.configstore@1.0.so +VNDK-core: android.hardware.configstore@1.1.so +VNDK-core: android.hardware.confirmationui-support-lib.so +VNDK-core: android.hardware.confirmationui@1.0.so +VNDK-core: android.hardware.contexthub@1.0.so +VNDK-core: android.hardware.contexthub@1.1.so +VNDK-core: android.hardware.drm@1.0.so +VNDK-core: android.hardware.drm@1.1.so +VNDK-core: android.hardware.drm@1.2.so +VNDK-core: android.hardware.drm@1.3.so +VNDK-core: android.hardware.dumpstate@1.0.so +VNDK-core: android.hardware.dumpstate@1.1.so +VNDK-core: android.hardware.fastboot@1.0.so +VNDK-core: android.hardware.gatekeeper@1.0.so +VNDK-core: android.hardware.gnss.measurement_corrections@1.0.so +VNDK-core: android.hardware.gnss.measurement_corrections@1.1.so +VNDK-core: android.hardware.gnss.visibility_control@1.0.so +VNDK-core: android.hardware.gnss@1.0.so +VNDK-core: android.hardware.gnss@1.1.so +VNDK-core: android.hardware.gnss@2.0.so +VNDK-core: android.hardware.gnss@2.1.so +VNDK-core: android.hardware.graphics.allocator@2.0.so +VNDK-core: android.hardware.graphics.allocator@3.0.so +VNDK-core: android.hardware.graphics.allocator@4.0.so +VNDK-core: android.hardware.graphics.bufferqueue@1.0.so +VNDK-core: android.hardware.graphics.bufferqueue@2.0.so +VNDK-core: android.hardware.graphics.composer@2.1.so +VNDK-core: android.hardware.graphics.composer@2.2.so +VNDK-core: android.hardware.graphics.composer@2.3.so +VNDK-core: android.hardware.graphics.composer@2.4.so +VNDK-core: android.hardware.health.storage@1.0.so +VNDK-core: android.hardware.health@1.0.so +VNDK-core: android.hardware.health@2.0.so +VNDK-core: android.hardware.health@2.1.so +VNDK-core: android.hardware.identity-V1-ndk_platform.so +VNDK-core: android.hardware.input.classifier@1.0.so +VNDK-core: android.hardware.input.common@1.0.so +VNDK-core: android.hardware.ir@1.0.so +VNDK-core: android.hardware.keymaster-V1-ndk_platform.so +VNDK-core: android.hardware.keymaster@3.0.so +VNDK-core: android.hardware.keymaster@4.0.so +VNDK-core: android.hardware.keymaster@4.1.so +VNDK-core: android.hardware.light-V1-ndk_platform.so +VNDK-core: android.hardware.light@2.0.so +VNDK-core: android.hardware.media.bufferpool@1.0.so +VNDK-core: android.hardware.media.bufferpool@2.0.so +VNDK-core: android.hardware.media.c2@1.0.so +VNDK-core: android.hardware.media.c2@1.1.so +VNDK-core: android.hardware.media.omx@1.0.so +VNDK-core: android.hardware.media@1.0.so +VNDK-core: android.hardware.memtrack@1.0.so +VNDK-core: android.hardware.neuralnetworks@1.0.so +VNDK-core: android.hardware.neuralnetworks@1.1.so +VNDK-core: android.hardware.neuralnetworks@1.2.so +VNDK-core: android.hardware.neuralnetworks@1.3.so +VNDK-core: android.hardware.nfc@1.0.so +VNDK-core: android.hardware.nfc@1.1.so +VNDK-core: android.hardware.nfc@1.2.so +VNDK-core: android.hardware.oemlock@1.0.so +VNDK-core: android.hardware.power-V1-ndk_platform.so +VNDK-core: android.hardware.power.stats@1.0.so +VNDK-core: android.hardware.power@1.0.so +VNDK-core: android.hardware.power@1.1.so +VNDK-core: android.hardware.power@1.2.so +VNDK-core: android.hardware.power@1.3.so +VNDK-core: android.hardware.radio.config@1.0.so +VNDK-core: android.hardware.radio.config@1.1.so +VNDK-core: android.hardware.radio.config@1.2.so +VNDK-core: android.hardware.radio.deprecated@1.0.so +VNDK-core: android.hardware.radio@1.0.so +VNDK-core: android.hardware.radio@1.1.so +VNDK-core: android.hardware.radio@1.2.so +VNDK-core: android.hardware.radio@1.3.so +VNDK-core: android.hardware.radio@1.4.so +VNDK-core: android.hardware.radio@1.5.so +VNDK-core: android.hardware.rebootescrow-V1-ndk_platform.so +VNDK-core: android.hardware.secure_element@1.0.so +VNDK-core: android.hardware.secure_element@1.1.so +VNDK-core: android.hardware.secure_element@1.2.so +VNDK-core: android.hardware.sensors@1.0.so +VNDK-core: android.hardware.sensors@2.0.so +VNDK-core: android.hardware.sensors@2.1.so +VNDK-core: android.hardware.soundtrigger@2.0-core.so +VNDK-core: android.hardware.soundtrigger@2.0.so +VNDK-core: android.hardware.soundtrigger@2.1.so +VNDK-core: android.hardware.soundtrigger@2.2.so +VNDK-core: android.hardware.soundtrigger@2.3.so +VNDK-core: android.hardware.tetheroffload.config@1.0.so +VNDK-core: android.hardware.tetheroffload.control@1.0.so +VNDK-core: android.hardware.thermal@1.0.so +VNDK-core: android.hardware.thermal@1.1.so +VNDK-core: android.hardware.thermal@2.0.so +VNDK-core: android.hardware.tv.cec@1.0.so +VNDK-core: android.hardware.tv.cec@2.0.so +VNDK-core: android.hardware.tv.input@1.0.so +VNDK-core: android.hardware.tv.tuner@1.0.so +VNDK-core: android.hardware.usb.gadget@1.0.so +VNDK-core: android.hardware.usb.gadget@1.1.so +VNDK-core: android.hardware.usb@1.0.so +VNDK-core: android.hardware.usb@1.1.so +VNDK-core: android.hardware.usb@1.2.so +VNDK-core: android.hardware.vibrator-V1-ndk_platform.so +VNDK-core: android.hardware.vibrator@1.0.so +VNDK-core: android.hardware.vibrator@1.1.so +VNDK-core: android.hardware.vibrator@1.2.so +VNDK-core: android.hardware.vibrator@1.3.so +VNDK-core: android.hardware.vr@1.0.so +VNDK-core: android.hardware.weaver@1.0.so +VNDK-core: android.hardware.wifi.hostapd@1.0.so +VNDK-core: android.hardware.wifi.hostapd@1.1.so +VNDK-core: android.hardware.wifi.hostapd@1.2.so +VNDK-core: android.hardware.wifi.offload@1.0.so +VNDK-core: android.hardware.wifi.supplicant@1.0.so +VNDK-core: android.hardware.wifi.supplicant@1.1.so +VNDK-core: android.hardware.wifi.supplicant@1.2.so +VNDK-core: android.hardware.wifi.supplicant@1.3.so +VNDK-core: android.hardware.wifi@1.0.so +VNDK-core: android.hardware.wifi@1.1.so +VNDK-core: android.hardware.wifi@1.2.so +VNDK-core: android.hardware.wifi@1.3.so +VNDK-core: android.hardware.wifi@1.4.so +VNDK-core: android.hidl.allocator@1.0.so +VNDK-core: android.hidl.memory.block@1.0.so +VNDK-core: android.hidl.token@1.0-utils.so +VNDK-core: android.hidl.token@1.0.so +VNDK-core: android.system.net.netd@1.0.so +VNDK-core: android.system.net.netd@1.1.so +VNDK-core: android.system.suspend@1.0.so +VNDK-core: android.system.wifi.keystore@1.0.so +VNDK-core: libadf.so +VNDK-core: libaudioroute.so +VNDK-core: libaudioutils.so +VNDK-core: libbinder.so +VNDK-core: libbufferqueueconverter.so +VNDK-core: libcamera_metadata.so +VNDK-core: libcap.so +VNDK-core: libcn-cbor.so +VNDK-core: libcodec2.so +VNDK-core: libcrypto.so +VNDK-core: libcrypto_utils.so +VNDK-core: libcurl.so +VNDK-core: libdiskconfig.so +VNDK-core: libdumpstateutil.so +VNDK-core: libevent.so +VNDK-core: libexif.so +VNDK-core: libexpat.so +VNDK-core: libfmq.so +VNDK-core: libgatekeeper.so +VNDK-core: libgui.so +VNDK-core: libhardware_legacy.so +VNDK-core: libhidlallocatorutils.so +VNDK-core: libjpeg.so +VNDK-core: libldacBT_abr.so +VNDK-core: libldacBT_enc.so +VNDK-core: liblz4.so +VNDK-core: libmedia_helper.so +VNDK-core: libmedia_omx.so +VNDK-core: libmemtrack.so +VNDK-core: libminijail.so +VNDK-core: libmkbootimg_abi_check.so +VNDK-core: libnetutils.so +VNDK-core: libnl.so +VNDK-core: libpcre2.so +VNDK-core: libpiex.so +VNDK-core: libpng.so +VNDK-core: libpower.so +VNDK-core: libprocinfo.so +VNDK-core: libradio_metadata.so +VNDK-core: libspeexresampler.so +VNDK-core: libsqlite.so +VNDK-core: libssl.so +VNDK-core: libstagefright_bufferpool@2.0.so +VNDK-core: libstagefright_bufferqueue_helper.so +VNDK-core: libstagefright_foundation.so +VNDK-core: libstagefright_omx.so +VNDK-core: libstagefright_omx_utils.so +VNDK-core: libstagefright_xmlparser.so +VNDK-core: libsysutils.so +VNDK-core: libtinyalsa.so +VNDK-core: libtinyxml2.so +VNDK-core: libui.so +VNDK-core: libusbhost.so +VNDK-core: libwifi-system-iface.so +VNDK-core: libxml2.so +VNDK-core: libyuv.so +VNDK-core: libziparchive.so +VNDK-private: libbacktrace.so +VNDK-private: libblas.so +VNDK-private: libcompiler_rt.so +VNDK-private: libft2.so +VNDK-private: libgui.so diff --git a/target/product/gsi/current.txt b/target/product/gsi/current.txt index cd4d750b6d..0589517711 100644 --- a/target/product/gsi/current.txt +++ b/target/product/gsi/current.txt @@ -18,12 +18,15 @@ LLNDK: libselinux.so LLNDK: libsync.so LLNDK: libvndksupport.so LLNDK: libvulkan.so +VNDK-SP: android.hardware.common-V1-ndk_platform.so +VNDK-SP: android.hardware.graphics.common-V1-ndk_platform.so VNDK-SP: android.hardware.graphics.common@1.0.so VNDK-SP: android.hardware.graphics.common@1.1.so VNDK-SP: android.hardware.graphics.common@1.2.so VNDK-SP: android.hardware.graphics.mapper@2.0.so VNDK-SP: android.hardware.graphics.mapper@2.1.so VNDK-SP: android.hardware.graphics.mapper@3.0.so +VNDK-SP: android.hardware.graphics.mapper@4.0.so VNDK-SP: android.hardware.renderscript@1.0.so VNDK-SP: android.hidl.memory.token@1.0.so VNDK-SP: android.hidl.memory@1.0-impl.so @@ -39,6 +42,7 @@ VNDK-SP: libblas.so VNDK-SP: libc++.so VNDK-SP: libcompiler_rt.so VNDK-SP: libcutils.so +VNDK-SP: libgralloctypes.so VNDK-SP: libhardware.so VNDK-SP: libhidlbase.so VNDK-SP: libhidlmemory.so @@ -50,9 +54,11 @@ VNDK-SP: libunwindstack.so VNDK-SP: libutils.so VNDK-SP: libutilscallstack.so VNDK-SP: libz.so +VNDK-core: android.frameworks.automotive.display@1.0.so VNDK-core: android.frameworks.cameraservice.common@2.0.so VNDK-core: android.frameworks.cameraservice.device@2.0.so VNDK-core: android.frameworks.cameraservice.service@2.0.so +VNDK-core: android.frameworks.cameraservice.service@2.1.so VNDK-core: android.frameworks.displayservice@1.0.so VNDK-core: android.frameworks.schedulerservice@1.0.so VNDK-core: android.frameworks.sensorservice@1.0.so @@ -72,10 +78,16 @@ VNDK-core: android.hardware.audio@5.0.so VNDK-core: android.hardware.audio@6.0.so VNDK-core: android.hardware.authsecret@1.0.so VNDK-core: android.hardware.automotive.audiocontrol@1.0.so +VNDK-core: android.hardware.automotive.audiocontrol@2.0.so +VNDK-core: android.hardware.automotive.can@1.0.so VNDK-core: android.hardware.automotive.evs@1.0.so +VNDK-core: android.hardware.automotive.evs@1.1.so +VNDK-core: android.hardware.automotive.occupant_awareness-V1-ndk_platform.so +VNDK-core: android.hardware.automotive.sv@1.0.so VNDK-core: android.hardware.automotive.vehicle@2.0.so VNDK-core: android.hardware.biometrics.face@1.0.so VNDK-core: android.hardware.biometrics.fingerprint@2.1.so +VNDK-core: android.hardware.biometrics.fingerprint@2.2.so VNDK-core: android.hardware.bluetooth.a2dp@1.0.so VNDK-core: android.hardware.bluetooth.audio@2.0.so VNDK-core: android.hardware.bluetooth@1.0.so @@ -91,11 +103,14 @@ VNDK-core: android.hardware.camera.device@3.2.so VNDK-core: android.hardware.camera.device@3.3.so VNDK-core: android.hardware.camera.device@3.4.so VNDK-core: android.hardware.camera.device@3.5.so +VNDK-core: android.hardware.camera.device@3.6.so VNDK-core: android.hardware.camera.metadata@3.2.so VNDK-core: android.hardware.camera.metadata@3.3.so VNDK-core: android.hardware.camera.metadata@3.4.so +VNDK-core: android.hardware.camera.metadata@3.5.so VNDK-core: android.hardware.camera.provider@2.4.so VNDK-core: android.hardware.camera.provider@2.5.so +VNDK-core: android.hardware.camera.provider@2.6.so VNDK-core: android.hardware.cas.native@1.0.so VNDK-core: android.hardware.cas@1.0.so VNDK-core: android.hardware.cas@1.1.so @@ -106,25 +121,31 @@ VNDK-core: android.hardware.configstore@1.1.so VNDK-core: android.hardware.confirmationui-support-lib.so VNDK-core: android.hardware.confirmationui@1.0.so VNDK-core: android.hardware.contexthub@1.0.so +VNDK-core: android.hardware.contexthub@1.1.so VNDK-core: android.hardware.drm@1.0.so VNDK-core: android.hardware.drm@1.1.so VNDK-core: android.hardware.drm@1.2.so +VNDK-core: android.hardware.drm@1.3.so VNDK-core: android.hardware.dumpstate@1.0.so VNDK-core: android.hardware.dumpstate@1.1.so VNDK-core: android.hardware.fastboot@1.0.so VNDK-core: android.hardware.gatekeeper@1.0.so VNDK-core: android.hardware.gnss.measurement_corrections@1.0.so +VNDK-core: android.hardware.gnss.measurement_corrections@1.1.so VNDK-core: android.hardware.gnss.visibility_control@1.0.so VNDK-core: android.hardware.gnss@1.0.so VNDK-core: android.hardware.gnss@1.1.so VNDK-core: android.hardware.gnss@2.0.so +VNDK-core: android.hardware.gnss@2.1.so VNDK-core: android.hardware.graphics.allocator@2.0.so VNDK-core: android.hardware.graphics.allocator@3.0.so +VNDK-core: android.hardware.graphics.allocator@4.0.so VNDK-core: android.hardware.graphics.bufferqueue@1.0.so VNDK-core: android.hardware.graphics.bufferqueue@2.0.so VNDK-core: android.hardware.graphics.composer@2.1.so VNDK-core: android.hardware.graphics.composer@2.2.so VNDK-core: android.hardware.graphics.composer@2.3.so +VNDK-core: android.hardware.graphics.composer@2.4.so VNDK-core: android.hardware.health.storage@1.0.so VNDK-core: android.hardware.health@1.0.so VNDK-core: android.hardware.health@2.0.so @@ -142,6 +163,7 @@ VNDK-core: android.hardware.light@2.0.so VNDK-core: android.hardware.media.bufferpool@1.0.so VNDK-core: android.hardware.media.bufferpool@2.0.so VNDK-core: android.hardware.media.c2@1.0.so +VNDK-core: android.hardware.media.c2@1.1.so VNDK-core: android.hardware.media.omx@1.0.so VNDK-core: android.hardware.media@1.0.so VNDK-core: android.hardware.memtrack@1.0.so @@ -169,15 +191,18 @@ VNDK-core: android.hardware.radio@1.2.so VNDK-core: android.hardware.radio@1.3.so VNDK-core: android.hardware.radio@1.4.so VNDK-core: android.hardware.radio@1.5.so +VNDK-core: android.hardware.rebootescrow-V1-ndk_platform.so VNDK-core: android.hardware.secure_element@1.0.so VNDK-core: android.hardware.secure_element@1.1.so VNDK-core: android.hardware.secure_element@1.2.so VNDK-core: android.hardware.sensors@1.0.so VNDK-core: android.hardware.sensors@2.0.so +VNDK-core: android.hardware.sensors@2.1.so VNDK-core: android.hardware.soundtrigger@2.0-core.so VNDK-core: android.hardware.soundtrigger@2.0.so VNDK-core: android.hardware.soundtrigger@2.1.so VNDK-core: android.hardware.soundtrigger@2.2.so +VNDK-core: android.hardware.soundtrigger@2.3.so VNDK-core: android.hardware.tetheroffload.config@1.0.so VNDK-core: android.hardware.tetheroffload.control@1.0.so VNDK-core: android.hardware.thermal@1.0.so @@ -188,6 +213,7 @@ VNDK-core: android.hardware.tv.cec@2.0.so VNDK-core: android.hardware.tv.input@1.0.so VNDK-core: android.hardware.tv.tuner@1.0.so VNDK-core: android.hardware.usb.gadget@1.0.so +VNDK-core: android.hardware.usb.gadget@1.1.so VNDK-core: android.hardware.usb@1.0.so VNDK-core: android.hardware.usb@1.1.so VNDK-core: android.hardware.usb@1.2.so @@ -200,14 +226,17 @@ VNDK-core: android.hardware.vr@1.0.so VNDK-core: android.hardware.weaver@1.0.so VNDK-core: android.hardware.wifi.hostapd@1.0.so VNDK-core: android.hardware.wifi.hostapd@1.1.so +VNDK-core: android.hardware.wifi.hostapd@1.2.so VNDK-core: android.hardware.wifi.offload@1.0.so VNDK-core: android.hardware.wifi.supplicant@1.0.so VNDK-core: android.hardware.wifi.supplicant@1.1.so VNDK-core: android.hardware.wifi.supplicant@1.2.so +VNDK-core: android.hardware.wifi.supplicant@1.3.so VNDK-core: android.hardware.wifi@1.0.so VNDK-core: android.hardware.wifi@1.1.so VNDK-core: android.hardware.wifi@1.2.so VNDK-core: android.hardware.wifi@1.3.so +VNDK-core: android.hardware.wifi@1.4.so VNDK-core: android.hidl.allocator@1.0.so VNDK-core: android.hidl.memory.block@1.0.so VNDK-core: android.hidl.token@1.0-utils.so @@ -220,6 +249,7 @@ VNDK-core: libadf.so VNDK-core: libaudioroute.so VNDK-core: libaudioutils.so VNDK-core: libbinder.so +VNDK-core: libbufferqueueconverter.so VNDK-core: libcamera_metadata.so VNDK-core: libcap.so VNDK-core: libcn-cbor.so diff --git a/target/product/handheld_product.mk b/target/product/handheld_product.mk index e03c212c15..2199c570a0 100644 --- a/target/product/handheld_product.mk +++ b/target/product/handheld_product.mk @@ -31,6 +31,7 @@ PRODUCT_PACKAGES += \ LatinIME \ Music \ OneTimeInitializer \ + preinstalled-packages-platform-handheld-product.xml \ QuickSearchBox \ SettingsIntelligence \ frameworks-base-overlays diff --git a/target/product/handheld_system.mk b/target/product/handheld_system.mk index 6463a541b4..77c103d7ee 100644 --- a/target/product/handheld_system.mk +++ b/target/product/handheld_system.mk @@ -54,10 +54,9 @@ PRODUCT_PACKAGES += \ librs_jni \ ManagedProvisioning \ MmsService \ - MtpDocumentsProvider \ + MtpService \ MusicFX \ NfcNci \ - OsuLogin \ PacProcessor \ PrintRecommendationService \ PrintSpooler \ diff --git a/target/product/mainline_arm64.mk b/target/product/mainline_arm64.mk index 850c7754a5..52b3222958 100644 --- a/target/product/mainline_arm64.mk +++ b/target/product/mainline_arm64.mk @@ -29,8 +29,7 @@ PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ PRODUCT_SHIPPING_API_LEVEL := 29 -# TODO(b/137033385): change this back to "all" -PRODUCT_RESTRICT_VENDOR_FILES := owner +PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_NAME := mainline_arm64 PRODUCT_DEVICE := mainline_arm64 diff --git a/target/product/mainline_system.mk b/target/product/mainline_system.mk index a8b75e0c4d..f8d85bfd38 100644 --- a/target/product/mainline_system.mk +++ b/target/product/mainline_system.mk @@ -96,11 +96,6 @@ PRODUCT_PACKAGES += \ libhidltransport \ libhwbinder \ -# Camera service uses 'libdepthphoto' for adding dynamic depth -# metadata inside depth jpegs. -PRODUCT_PACKAGES += \ - libdepthphoto \ - PRODUCT_PACKAGES_DEBUG += \ avbctl \ bootctl \ @@ -125,9 +120,6 @@ PRODUCT_USE_DYNAMIC_PARTITION_SIZE := true PRODUCT_ENFORCE_RRO_TARGETS := * -# TODO(b/150820813) Settings depends on static overlay, remove this after eliminating the dependency. -PRODUCT_ENFORCE_RRO_EXEMPTED_TARGETS := Settings - PRODUCT_NAME := mainline_system PRODUCT_BRAND := generic diff --git a/target/product/mainline_system_arm64.mk b/target/product/mainline_system_arm64.mk index 60035c13ea..772c687c1b 100644 --- a/target/product/mainline_system_arm64.mk +++ b/target/product/mainline_system_arm64.mk @@ -36,8 +36,7 @@ PRODUCT_BUILD_VENDOR_IMAGE := false PRODUCT_SHIPPING_API_LEVEL := 29 -# TODO(b/137033385): change this back to "all" -PRODUCT_RESTRICT_VENDOR_FILES := owner +PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_NAME := mainline_system_arm64 PRODUCT_DEVICE := mainline_arm64 diff --git a/target/product/mainline_system_x86.mk b/target/product/mainline_system_x86.mk index a30a1fcb4f..05e51a9c01 100644 --- a/target/product/mainline_system_x86.mk +++ b/target/product/mainline_system_x86.mk @@ -35,8 +35,7 @@ PRODUCT_BUILD_VENDOR_IMAGE := false PRODUCT_SHIPPING_API_LEVEL := 29 -# TODO(b/137033385): change this back to "all" -PRODUCT_RESTRICT_VENDOR_FILES := owner +PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_NAME := mainline_system_x86 PRODUCT_DEVICE := mainline_x86 diff --git a/target/product/mainline_system_x86_arm.mk b/target/product/mainline_system_x86_arm.mk index 2e01cde768..cc11c55f2f 100644 --- a/target/product/mainline_system_x86_arm.mk +++ b/target/product/mainline_system_x86_arm.mk @@ -35,8 +35,7 @@ PRODUCT_BUILD_VENDOR_IMAGE := false PRODUCT_SHIPPING_API_LEVEL := 29 -# TODO(b/137033385): change this back to "all" -PRODUCT_RESTRICT_VENDOR_FILES := owner +PRODUCT_RESTRICT_VENDOR_FILES := all PRODUCT_NAME := mainline_system_x86_arm PRODUCT_DEVICE := mainline_x86_arm diff --git a/target/product/media_system.mk b/target/product/media_system.mk index a83e609f3a..26fb7f34ba 100644 --- a/target/product/media_system.mk +++ b/target/product/media_system.mk @@ -52,12 +52,13 @@ endif PRODUCT_SYSTEM_SERVER_JARS := \ com.android.location.provider \ services \ - ethernet-service \ - wifi-service \ + ethernet-service # system server jars which are updated via apex modules. # The values should be of the format <apex name>:<jar name> PRODUCT_UPDATABLE_SYSTEM_SERVER_JARS := \ + com.android.permission:service-permission \ + com.android.wifi:service-wifi \ com.android.ipsec:android.net.ipsec.ike \ PRODUCT_COPY_FILES += \ diff --git a/target/product/runtime_libart.mk b/target/product/runtime_libart.mk index 84b1252d42..ad361dc09e 100644 --- a/target/product/runtime_libart.mk +++ b/target/product/runtime_libart.mk @@ -92,8 +92,8 @@ PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ dalvik.vm.minidebuginfo=true \ dalvik.vm.dex2oat-minidebuginfo=true -# Disable iorapd by default +# Enable iorapd by default PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.iorapd.enable=false + ro.iorapd.enable=true PRODUCT_USES_DEFAULT_ART_CONFIG := true diff --git a/target/product/sysconfig/Android.bp b/target/product/sysconfig/Android.bp new file mode 100644 index 0000000000..5632d17cae --- /dev/null +++ b/target/product/sysconfig/Android.bp @@ -0,0 +1,33 @@ +// Copyright (C} 2019 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. + +prebuilt_etc { + name: "preinstalled-packages-platform-aosp-product.xml", + product_specific: true, + sub_dir: "sysconfig", + src: "preinstalled-packages-platform-aosp-product.xml", +} + +prebuilt_etc { + name: "preinstalled-packages-platform-full-base.xml", + sub_dir: "sysconfig", + src: "preinstalled-packages-platform-full-base.xml", +} + +prebuilt_etc { + name: "preinstalled-packages-platform-handheld-product.xml", + product_specific: true, + sub_dir: "sysconfig", + src: "preinstalled-packages-platform-handheld-product.xml", +}
\ No newline at end of file diff --git a/target/product/sysconfig/preinstalled-packages-platform-aosp-product.xml b/target/product/sysconfig/preinstalled-packages-platform-aosp-product.xml new file mode 100644 index 0000000000..eec1326833 --- /dev/null +++ b/target/product/sysconfig/preinstalled-packages-platform-aosp-product.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2019 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. +--> +<!-- System packages to preinstall on all devices with aosp_product, per user type. + Documentation at frameworks/base/data/etc/preinstalled-packages-platform.xml +--> +<config> + <install-in-user-type package="com.android.wallpaperpicker"> + <install-in user-type="FULL" /> + </install-in-user-type> +</config> diff --git a/target/product/sysconfig/preinstalled-packages-platform-full-base.xml b/target/product/sysconfig/preinstalled-packages-platform-full-base.xml new file mode 100644 index 0000000000..f601355370 --- /dev/null +++ b/target/product/sysconfig/preinstalled-packages-platform-full-base.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2019 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. +--> +<!-- System packages to preinstall on all devices with full_base, per user type. + Documentation at frameworks/base/data/etc/preinstalled-packages-platform.xml +--> +<config> + <install-in-user-type package="com.android.wallpaper.livepicker"> + <install-in user-type="FULL" /> + </install-in-user-type> +</config> diff --git a/target/product/sysconfig/preinstalled-packages-platform-handheld-product.xml b/target/product/sysconfig/preinstalled-packages-platform-handheld-product.xml new file mode 100644 index 0000000000..a5d9ba21dd --- /dev/null +++ b/target/product/sysconfig/preinstalled-packages-platform-handheld-product.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2019 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. +--> +<!-- System packages to preinstall on all devices with handheld_product, per user type. + Documentation at frameworks/base/data/etc/preinstalled-packages-platform.xml +--> +<config> + <install-in-user-type package="com.android.wallpapercropper"> + <install-in user-type="FULL" /> + </install-in-user-type> +</config> diff --git a/target/product/telephony_system.mk b/target/product/telephony_system.mk index c306a04520..9c585b3ce2 100644 --- a/target/product/telephony_system.mk +++ b/target/product/telephony_system.mk @@ -21,7 +21,6 @@ PRODUCT_PACKAGES := \ ONS \ CarrierDefaultApp \ CallLogBackup \ - CellBroadcastApp \ - CellBroadcastServiceModule \ + com.android.cellbroadcast \ PRODUCT_COPY_FILES := \ diff --git a/target/product/virtual_ab_ota_plus_non_ab.mk b/target/product/virtual_ab_ota_plus_non_ab.mk new file mode 100644 index 0000000000..325d75e3e7 --- /dev/null +++ b/target/product/virtual_ab_ota_plus_non_ab.mk @@ -0,0 +1,21 @@ +# +# Copyright (C) 2020 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. +# + +$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk) + +PRODUCT_OTA_FORCE_NON_AB_PACKAGE := true + +PRODUCT_PROPERTY_OVERRIDES += ro.virtual_ab.allow_non_ab=true diff --git a/tools/buildinfo.sh b/tools/buildinfo.sh index 09d8f70f55..9bee115484 100755 --- a/tools/buildinfo.sh +++ b/tools/buildinfo.sh @@ -11,7 +11,8 @@ echo "ro.build.version.preview_sdk=$PLATFORM_PREVIEW_SDK_VERSION" echo "ro.build.version.preview_sdk_fingerprint=$PLATFORM_PREVIEW_SDK_FINGERPRINT" echo "ro.build.version.codename=$PLATFORM_VERSION_CODENAME" echo "ro.build.version.all_codenames=$PLATFORM_VERSION_ALL_CODENAMES" -echo "ro.build.version.release=$PLATFORM_VERSION" +echo "ro.build.version.release=$PLATFORM_VERSION_LAST_STABLE" +echo "ro.build.version.release_or_codename=$PLATFORM_VERSION" echo "ro.build.version.security_patch=$PLATFORM_SECURITY_PATCH" echo "ro.build.version.base_os=$PLATFORM_BASE_OS" echo "ro.build.version.min_supported_target_sdk=$PLATFORM_MIN_SUPPORTED_TARGET_SDK_VERSION" diff --git a/tools/buildinfo_common.sh b/tools/buildinfo_common.sh index 6041d79cdf..673e06f3da 100755 --- a/tools/buildinfo_common.sh +++ b/tools/buildinfo_common.sh @@ -17,7 +17,8 @@ echo "ro.${partition}.build.id=$BUILD_ID" echo "ro.${partition}.build.tags=$BUILD_VERSION_TAGS" echo "ro.${partition}.build.type=$TARGET_BUILD_TYPE" echo "ro.${partition}.build.version.incremental=$BUILD_NUMBER" -echo "ro.${partition}.build.version.release=$PLATFORM_VERSION" +echo "ro.${partition}.build.version.release=$PLATFORM_VERSION_LAST_STABLE" +echo "ro.${partition}.build.version.release_or_codename=$PLATFORM_VERSION" echo "ro.${partition}.build.version.sdk=$PLATFORM_SDK_VERSION" echo "ro.product.${partition}.brand=$PRODUCT_BRAND" diff --git a/tools/releasetools/blockimgdiff.py b/tools/releasetools/blockimgdiff.py index 72f065d19d..8b6a6900d5 100644 --- a/tools/releasetools/blockimgdiff.py +++ b/tools/releasetools/blockimgdiff.py @@ -1558,6 +1558,7 @@ class BlockImageDiff(object): split_large_apks = [] cache_size = common.OPTIONS.cache_size split_threshold = 0.125 + assert cache_size is not None max_blocks_per_transfer = int(cache_size * split_threshold / self.tgt.blocksize) empty = RangeSet() diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 42c29c01c9..910e75c5d7 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -843,12 +843,13 @@ class PartitionBuildProps(object): def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path, system_root_image=False): class Partition(object): - def __init__(self, mount_point, fs_type, device, length, context): + def __init__(self, mount_point, fs_type, device, length, context, slotselect): self.mount_point = mount_point self.fs_type = fs_type self.device = device self.length = length self.context = context + self.slotselect = slotselect try: data = read_helper(recovery_fstab_path) @@ -876,10 +877,13 @@ def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path, # It's a good line, parse it. length = 0 + slotselect = False options = options.split(",") for i in options: if i.startswith("length="): length = int(i[7:]) + elif i == "slotselect": + slotselect = True else: # Ignore all unknown options in the unified fstab. continue @@ -893,7 +897,8 @@ def LoadRecoveryFSTab(read_helper, fstab_version, recovery_fstab_path, mount_point = pieces[1] d[mount_point] = Partition(mount_point=mount_point, fs_type=pieces[2], - device=pieces[0], length=length, context=context) + device=pieces[0], length=length, context=context, + slotselect=slotselect) # / is used for the system mount point when the root directory is included in # system. Other areas assume system is always at "/system" so point /system @@ -908,7 +913,8 @@ def _FindAndLoadRecoveryFstab(info_dict, input_file, read_helper): """Finds the path to recovery fstab and loads its contents.""" # recovery fstab is only meaningful when installing an update via recovery # (i.e. non-A/B OTA). Skip loading fstab if device used A/B OTA. - if info_dict.get('ab_update') == 'true': + if info_dict.get('ab_update') == 'true' and \ + info_dict.get("allow_non_ab") != "true": return None # We changed recovery.fstab path in Q, from ../RAMDISK/etc/recovery.fstab to @@ -2672,11 +2678,12 @@ class BlockDifference(object): self.device = 'map_partition("%s")' % partition else: if OPTIONS.source_info_dict is None: - _, device_path = GetTypeAndDevice("/" + partition, OPTIONS.info_dict) + _, device_expr = GetTypeAndDeviceExpr("/" + partition, + OPTIONS.info_dict) else: - _, device_path = GetTypeAndDevice("/" + partition, - OPTIONS.source_info_dict) - self.device = '"%s"' % device_path + _, device_expr = GetTypeAndDeviceExpr("/" + partition, + OPTIONS.source_info_dict) + self.device = device_expr @property def required_cache(self): @@ -2908,16 +2915,51 @@ PARTITION_TYPES = { "squashfs": "EMMC" } - -def GetTypeAndDevice(mount_point, info): +def GetTypeAndDevice(mount_point, info, check_no_slot=True): + """ + Use GetTypeAndDeviceExpr whenever possible. This function is kept for + backwards compatibility. It aborts if the fstab entry has slotselect option + (unless check_no_slot is explicitly set to False). + """ fstab = info["fstab"] if fstab: + if check_no_slot: + assert not fstab[mount_point].slotselect, \ + "Use GetTypeAndDeviceExpr instead" return (PARTITION_TYPES[fstab[mount_point].fs_type], fstab[mount_point].device) else: raise KeyError +def GetTypeAndDeviceExpr(mount_point, info): + """ + Return the filesystem of the partition, and an edify expression that evaluates + to the device at runtime. + """ + fstab = info["fstab"] + if fstab: + p = fstab[mount_point] + device_expr = '"%s"' % fstab[mount_point].device + if p.slotselect: + device_expr = 'add_slot_suffix(%s)' % device_expr + return (PARTITION_TYPES[fstab[mount_point].fs_type], device_expr) + else: + raise KeyError + + +def GetEntryForDevice(fstab, device): + """ + Returns: + The first entry in fstab whose device is the given value. + """ + if not fstab: + return None + for mount_point in fstab: + if fstab[mount_point].device == device: + return fstab[mount_point] + return None + def ParseCertificate(data): """Parses and converts a PEM-encoded certificate into DER-encoded. @@ -3042,8 +3084,10 @@ def MakeRecoveryPatch(input_dir, output_sink, recovery_img, boot_img, try: # The following GetTypeAndDevice()s need to use the path in the target # info_dict instead of source_info_dict. - boot_type, boot_device = GetTypeAndDevice("/boot", info_dict) - recovery_type, recovery_device = GetTypeAndDevice("/recovery", info_dict) + boot_type, boot_device = GetTypeAndDevice("/boot", info_dict, + check_no_slot=False) + recovery_type, recovery_device = GetTypeAndDevice("/recovery", info_dict, + check_no_slot=False) except KeyError: return @@ -3085,8 +3129,8 @@ fi 'recovery_size': recovery_img.size, 'recovery_sha1': recovery_img.sha1, 'boot_type': boot_type, - 'boot_device': boot_device, - 'recovery_type': recovery_type, + 'boot_device': boot_device + '$(getprop ro.boot.slot_suffix)', + 'recovery_type': recovery_type + '$(getprop ro.boot.slot_suffix)', 'recovery_device': recovery_device, 'bonus_args': bonus_args} diff --git a/tools/releasetools/edify_generator.py b/tools/releasetools/edify_generator.py index 7ed85fecc9..99e21f1c04 100644 --- a/tools/releasetools/edify_generator.py +++ b/tools/releasetools/edify_generator.py @@ -183,11 +183,30 @@ class EdifyGenerator(object): It checks the checksums of the given partitions. If none of them matches the expected checksum, updater will additionally look for a backup on /cache. """ + self._CheckSecondTokenNotSlotSuffixed(target, "PatchPartitionExprCheck") + self._CheckSecondTokenNotSlotSuffixed(source, "PatchPartitionExprCheck") + self.PatchPartitionExprCheck('"%s"' % target, '"%s"' % source) + + def PatchPartitionExprCheck(self, target_expr, source_expr): + """Checks whether updater can patch the given partitions. + + It checks the checksums of the given partitions. If none of them matches the + expected checksum, updater will additionally look for a backup on /cache. + + Args: + target_expr: an Edify expression that serves as the target arg to + patch_partition. Must be evaluated to a string in the form of + foo:bar:baz:quux + source_expr: an Edify expression that serves as the source arg to + patch_partition. Must be evaluated to a string in the form of + foo:bar:baz:quux + """ self.script.append(self.WordWrap(( - 'patch_partition_check("{target}",\0"{source}") ||\n abort(' - '"E{code}: \\"{target}\\" or \\"{source}\\" has unexpected ' - 'contents.");').format( - target=target, source=source, + 'patch_partition_check({target},\0{source}) ||\n abort(' + 'concat("E{code}: \\"",{target},"\\" or \\"",{source},"\\" has ' + 'unexpected contents."));').format( + target=target_expr, + source=source_expr, code=common.ErrorCode.BAD_PATCH_FILE))) def CacheFreeSpaceCheck(self, amount): @@ -218,8 +237,9 @@ class EdifyGenerator(object): mount_flags = mount_dict.get(p.fs_type, "") if p.context is not None: mount_flags = p.context + ("," + mount_flags if mount_flags else "") - self.script.append('mount("%s", "%s", "%s", "%s", "%s");' % ( - p.fs_type, common.PARTITION_TYPES[p.fs_type], p.device, + self.script.append('mount("%s", "%s", %s, "%s", "%s");' % ( + p.fs_type, common.PARTITION_TYPES[p.fs_type], + self._GetSlotSuffixDeviceForEntry(p), p.mount_point, mount_flags)) self.mounts.add(p.mount_point) @@ -242,8 +262,9 @@ class EdifyGenerator(object): raise ValueError("Partition %s cannot be tuned\n" % (partition,)) self.script.append( 'tune2fs(' + "".join(['"%s", ' % (i,) for i in options]) + - '"%s") || abort("E%d: Failed to tune partition %s");' % ( - p.device, common.ErrorCode.TUNE_PARTITION_FAILURE, partition)) + '%s) || abort("E%d: Failed to tune partition %s");' % ( + self._GetSlotSuffixDeviceForEntry(p), + common.ErrorCode.TUNE_PARTITION_FAILURE, partition)) def FormatPartition(self, partition): """Format the given partition, specified by its mount point (eg, @@ -252,18 +273,19 @@ class EdifyGenerator(object): fstab = self.fstab if fstab: p = fstab[partition] - self.script.append('format("%s", "%s", "%s", "%s", "%s");' % + self.script.append('format("%s", "%s", %s, "%s", "%s");' % (p.fs_type, common.PARTITION_TYPES[p.fs_type], - p.device, p.length, p.mount_point)) + self._GetSlotSuffixDeviceForEntry(p), + p.length, p.mount_point)) def WipeBlockDevice(self, partition): if partition not in ("/system", "/vendor"): raise ValueError(("WipeBlockDevice doesn't work on %s\n") % (partition,)) fstab = self.fstab size = self.info.get(partition.lstrip("/") + "_size", None) - device = fstab[partition].device + device = self._GetSlotSuffixDeviceForEntry(fstab[partition]) - self.script.append('wipe_block_device("%s", %s);' % (device, size)) + self.script.append('wipe_block_device(%s, %s);' % (device, size)) def ApplyPatch(self, srcfile, tgtfile, tgtsize, tgtsha1, *patchpairs): """Apply binary patches (in *patchpairs) to the given srcfile to @@ -296,14 +318,69 @@ class EdifyGenerator(object): self.PatchPartition(target, source, patch) def PatchPartition(self, target, source, patch): - """Applies the patch to the source partition and writes it to target.""" + """ + Applies the patch to the source partition and writes it to target. + + Args: + target: the target arg to patch_partition. Must be in the form of + foo:bar:baz:quux + source: the source arg to patch_partition. Must be in the form of + foo:bar:baz:quux + patch: the patch arg to patch_partition. Must be an unquoted string. + """ + self._CheckSecondTokenNotSlotSuffixed(target, "PatchPartitionExpr") + self._CheckSecondTokenNotSlotSuffixed(source, "PatchPartitionExpr") + self.PatchPartitionExpr('"%s"' % target, '"%s"' % source, '"%s"' % patch) + + def PatchPartitionExpr(self, target_expr, source_expr, patch_expr): + """ + Applies the patch to the source partition and writes it to target. + + Args: + target_expr: an Edify expression that serves as the target arg to + patch_partition. Must be evaluated to a string in the form of + foo:bar:baz:quux + source_expr: an Edify expression that serves as the source arg to + patch_partition. Must be evaluated to a string in the form of + foo:bar:baz:quux + patch_expr: an Edify expression that serves as the patch arg to + patch_partition. Must be evaluated to a string. + """ self.script.append(self.WordWrap(( - 'patch_partition("{target}",\0"{source}",\0' - 'package_extract_file("{patch}")) ||\n' - ' abort("E{code}: Failed to apply patch to {source}");').format( - target=target, source=source, patch=patch, + 'patch_partition({target},\0{source},\0' + 'package_extract_file({patch})) ||\n' + ' abort(concat(' + ' "E{code}: Failed to apply patch to ",{source}));').format( + target=target_expr, + source=source_expr, + patch=patch_expr, code=common.ErrorCode.APPLY_PATCH_FAILURE))) + def _GetSlotSuffixDeviceForEntry(self, entry=None): + """ + Args: + entry: the fstab entry of device "foo" + Returns: + An edify expression. Caller must not quote result. + If foo is slot suffixed, it returns + 'add_slot_suffix("foo")' + Otherwise it returns + '"foo"' (quoted) + """ + assert entry is not None + if entry.slotselect: + return 'add_slot_suffix("%s")' % entry.device + return '"%s"' % entry.device + + def _CheckSecondTokenNotSlotSuffixed(self, s, fn): + lst = s.split(':') + assert(len(s) == 4), "{} does not contain 4 tokens".format(s) + if self.fstab: + entry = common.GetEntryForDevice(s[1]) + if entry is not None: + assert not entry.slotselect, \ + "Use %s because %s is slot suffixed" % (fn, s[1]) + def WriteRawImage(self, mount_point, fn, mapfn=None): """Write the given package file into the partition for the given mount point.""" @@ -312,15 +389,16 @@ class EdifyGenerator(object): if fstab: p = fstab[mount_point] partition_type = common.PARTITION_TYPES[p.fs_type] - args = {'device': p.device, 'fn': fn} + device = self._GetSlotSuffixDeviceForEntry(p) + args = {'device': device, 'fn': fn} if partition_type == "EMMC": if mapfn: args["map"] = mapfn self.script.append( - 'package_extract_file("%(fn)s", "%(device)s", "%(map)s");' % args) + 'package_extract_file("%(fn)s", %(device)s, "%(map)s");' % args) else: self.script.append( - 'package_extract_file("%(fn)s", "%(device)s");' % args) + 'package_extract_file("%(fn)s", %(device)s);' % args) else: raise ValueError( "don't know how to write \"%s\" partitions" % p.fs_type) diff --git a/tools/releasetools/ota_from_target_files.py b/tools/releasetools/ota_from_target_files.py index ad001d13c7..16b278a519 100755 --- a/tools/releasetools/ota_from_target_files.py +++ b/tools/releasetools/ota_from_target_files.py @@ -78,6 +78,13 @@ Common options that apply to both of non-A/B and A/B OTAs Write a copy of the metadata to a separate file. Therefore, users can read the post build fingerprint without extracting the OTA package. + --force_non_ab + This flag can only be set on an A/B device that also supports non-A/B + updates. Implies --two_step. + If set, generate that non-A/B update package. + If not set, generates A/B package for A/B device and non-A/B package for + non-A/B device. + Non-A/B OTA specific options -b (--binary) <file> @@ -251,6 +258,7 @@ OPTIONS.skip_compatibility_check = False OPTIONS.output_metadata_path = None OPTIONS.disable_fec_computation = False OPTIONS.boot_variable_values = None +OPTIONS.force_non_ab = False METADATA_NAME = 'META-INF/com/android/metadata' @@ -933,7 +941,7 @@ def GetPackageMetadata(target_info, source_info=None): 'ro.build.version.security_patch'), } - if target_info.is_ab: + if target_info.is_ab and not OPTIONS.force_non_ab: metadata['ota-type'] = 'AB' metadata['ota-required-cache'] = '0' else: @@ -1455,7 +1463,8 @@ else if get_stage("%(bcb_dev)s") != "3/3" then required_cache_sizes = [diff.required_cache for diff in block_diff_dict.values()] if updating_boot: - boot_type, boot_device = common.GetTypeAndDevice("/boot", source_info) + boot_type, boot_device_expr = common.GetTypeAndDeviceExpr("/boot", + source_info) d = common.Difference(target_boot, source_boot) _, _, d = d.ComputePatch() if d is None: @@ -1470,11 +1479,11 @@ else if get_stage("%(bcb_dev)s") != "3/3" then common.ZipWriteStr(output_zip, "boot.img.p", d) - script.PatchPartitionCheck( - "{}:{}:{}:{}".format( - boot_type, boot_device, target_boot.size, target_boot.sha1), - "{}:{}:{}:{}".format( - boot_type, boot_device, source_boot.size, source_boot.sha1)) + target_expr = 'concat("{}:",{},":{}:{}")'.format( + boot_type, boot_device_expr, target_boot.size, target_boot.sha1) + source_expr = 'concat("{}:",{},":{}:{}")'.format( + boot_type, boot_device_expr, source_boot.size, source_boot.sha1) + script.PatchPartitionExprCheck(target_expr, source_expr) required_cache_sizes.append(target_boot.size) @@ -1542,12 +1551,11 @@ else logger.info("boot image changed; including patch.") script.Print("Patching boot image...") script.ShowProgress(0.1, 10) - script.PatchPartition( - '{}:{}:{}:{}'.format( - boot_type, boot_device, target_boot.size, target_boot.sha1), - '{}:{}:{}:{}'.format( - boot_type, boot_device, source_boot.size, source_boot.sha1), - 'boot.img.p') + target_expr = 'concat("{}:",{},":{}:{}")'.format( + boot_type, boot_device_expr, target_boot.size, target_boot.sha1) + source_expr = 'concat("{}:",{},":{}:{}")'.format( + boot_type, boot_device_expr, source_boot.size, source_boot.sha1) + script.PatchPartitionExpr(target_expr, source_expr, '"boot.img.p"') else: logger.info("boot image unchanged; skipping.") @@ -2067,6 +2075,8 @@ def main(argv): OPTIONS.output_metadata_path = a elif o == "--disable_fec_computation": OPTIONS.disable_fec_computation = True + elif o == "--force_non_ab": + OPTIONS.force_non_ab = True else: return False return True @@ -2103,6 +2113,7 @@ def main(argv): "skip_compatibility_check", "output_metadata_path=", "disable_fec_computation", + "force_non_ab", ], extra_option_handler=option_handler) if len(args) != 2: @@ -2164,11 +2175,17 @@ def main(argv): OPTIONS.skip_postinstall = True ab_update = OPTIONS.info_dict.get("ab_update") == "true" + allow_non_ab = OPTIONS.info_dict.get("allow_non_ab") == "true" + if OPTIONS.force_non_ab: + assert allow_non_ab, "--force_non_ab only allowed on devices that supports non-A/B" + assert ab_update, "--force_non_ab only allowed on A/B devices" + + generate_ab = not OPTIONS.force_non_ab and ab_update # Use the default key to sign the package if not specified with package_key. # package_keys are needed on ab_updates, so always define them if an - # ab_update is getting created. - if not OPTIONS.no_signing or ab_update: + # A/B update is getting created. + if not OPTIONS.no_signing or generate_ab: if OPTIONS.package_key is None: OPTIONS.package_key = OPTIONS.info_dict.get( "default_system_dev_certificate", @@ -2176,7 +2193,7 @@ def main(argv): # Get signing keys OPTIONS.key_passwords = common.GetKeyPasswords([OPTIONS.package_key]) - if ab_update: + if generate_ab: GenerateAbOtaPackage( target_file=args[0], output_file=args[1], diff --git a/tools/signapk/src/com/android/signapk/SignApk.java b/tools/signapk/src/com/android/signapk/SignApk.java index 95ef05f4dd..7e5c8fc6d4 100644 --- a/tools/signapk/src/com/android/signapk/SignApk.java +++ b/tools/signapk/src/com/android/signapk/SignApk.java @@ -41,6 +41,7 @@ import com.android.apksig.Hints; import com.android.apksig.apk.ApkUtils; import com.android.apksig.apk.MinSdkVersionException; import com.android.apksig.util.DataSink; +import com.android.apksig.util.DataSource; import com.android.apksig.util.DataSources; import com.android.apksig.zip.ZipFormatException; @@ -57,6 +58,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; +import java.io.RandomAccessFile; import java.lang.reflect.Constructor; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -1021,9 +1023,10 @@ class SignApk { "[-providerClass <className>] " + "[--min-sdk-version <n>] " + "[--disable-v2] " + + "[--enable-v4] " + "publickey.x509[.pem] privatekey.pk8 " + "[publickey2.x509[.pem] privatekey2.pk8 ...] " + - "input.jar output.jar"); + "input.jar output.jar [output-v4-file]"); System.exit(2); } @@ -1043,6 +1046,7 @@ class SignApk { int alignment = 4; Integer minSdkVersionOverride = null; boolean signUsingApkSignatureSchemeV2 = true; + boolean signUsingApkSignatureSchemeV4 = false; SigningCertificateLineage certLineage = null; int argstart = 0; @@ -1071,6 +1075,9 @@ class SignApk { } else if ("--disable-v2".equals(args[argstart])) { signUsingApkSignatureSchemeV2 = false; ++argstart; + } else if ("--enable-v4".equals(args[argstart])) { + signUsingApkSignatureSchemeV4 = true; + ++argstart; } else if ("--lineage".equals(args[argstart])) { File lineageFile = new File(args[++argstart]); try { @@ -1085,8 +1092,14 @@ class SignApk { } } - if ((args.length - argstart) % 2 == 1) usage(); - int numKeys = ((args.length - argstart) / 2) - 1; + int numArgsExcludeV4FilePath; + if (signUsingApkSignatureSchemeV4) { + numArgsExcludeV4FilePath = args.length - 1; + } else { + numArgsExcludeV4FilePath = args.length; + } + if ((numArgsExcludeV4FilePath - argstart) % 2 == 1) usage(); + int numKeys = ((numArgsExcludeV4FilePath - argstart) / 2) - 1; if (signWholeFile && numKeys > 1) { System.err.println("Only one key may be used with -w."); System.exit(2); @@ -1094,8 +1107,12 @@ class SignApk { loadProviderIfNecessary(providerClass); - String inputFilename = args[args.length-2]; - String outputFilename = args[args.length-1]; + String inputFilename = args[numArgsExcludeV4FilePath - 2]; + String outputFilename = args[numArgsExcludeV4FilePath - 1]; + String outputV4Filename = ""; + if (signUsingApkSignatureSchemeV4) { + outputV4Filename = args[args.length - 1]; + } JarFile inputJar = null; FileOutputStream outputFile = null; @@ -1233,6 +1250,13 @@ class SignApk { outputFile.close(); outputFile = null; apkSigner.outputDone(); + + if (signUsingApkSignatureSchemeV4) { + final DataSource outputApkIn = DataSources.asDataSource( + new RandomAccessFile(new File(outputFilename), "r")); + final File outputV4File = new File(outputV4Filename); + apkSigner.signV4(outputApkIn, outputV4File, false /* ignore failures */); + } } return; diff --git a/tools/warn/android_project_list.py b/tools/warn/android_project_list.py index 4726fa2368..1010b242d9 100644 --- a/tools/warn/android_project_list.py +++ b/tools/warn/android_project_list.py @@ -102,6 +102,7 @@ project_list = [ create_pattern('ndk'), # match vendor/unbungled_google/packages before other packages create_pattern('unbundled_google'), + create_pattern('packages/providers/MediaProvider'), create_pattern('packages'), create_pattern('pdk'), create_pattern('prebuilts'), |