Merge "aconfig: add create_flag_info cc api" into main
diff --git a/core/OWNERS b/core/OWNERS
index 36951a9..1c3d017 100644
--- a/core/OWNERS
+++ b/core/OWNERS
@@ -10,3 +10,6 @@
# For Ravenwood test configs
per-file ravenwood_test_config_template.xml = jsharkey@google.com,omakoto@google.com
+
+# For binary_translation
+per-file berberis_test.mk = levarum@google.com,khim@google.com,dimitry@google.com
diff --git a/core/product.mk b/core/product.mk
index 01b5ead..aa9a9a3 100644
--- a/core/product.mk
+++ b/core/product.mk
@@ -456,7 +456,7 @@
_product_single_value_vars += PRODUCT_BUILD_FROM_SOURCE_STUB
-_product_list_vars += PRODUCT_BUILD_IGNORE_APEX_CONTRIBUTION_CONTENTS
+_product_single_value_vars += PRODUCT_BUILD_IGNORE_APEX_CONTRIBUTION_CONTENTS
_product_single_value_vars += PRODUCT_HIDDEN_API_EXPORTABLE_STUBS
diff --git a/core/product_config.mk b/core/product_config.mk
index 4525423..d16c38d 100644
--- a/core/product_config.mk
+++ b/core/product_config.mk
@@ -301,6 +301,23 @@
PRODUCT_INCLUDE_TAGS += com.android.mainline mainline_module_prebuilt_nightly
endif
+# AOSP and Google products currently share the same `apex_contributions` in next.
+# This causes issues when building <aosp_product>-next-userdebug in main.
+# Create a temporary allowlist to ignore the google apexes listed in `contents` of apex_contributions of `next`
+# *for aosp products*.
+# TODO(b/308187268): Remove this denylist mechanism
+# Use PRODUCT_PACKAGES to determine if this is an aosp product. aosp products do not use google signed apexes.
+ignore_apex_contributions :=
+ifeq (,$(findstring com.google.android.conscrypt,$(PRODUCT_PACKAGES))$(findstring com.google.android.go.conscrypt,$(PRODUCT_PACKAGES)))
+ ignore_apex_contributions := true
+endif
+ifeq (true,$(PRODUCT_MODULE_BUILD_FROM_SOURCE))
+ ignore_apex_contributions := true
+endif
+ifeq (true, $(ignore_apex_contributions))
+PRODUCT_BUILD_IGNORE_APEX_CONTRIBUTION_CONTENTS := true
+endif
+
#############################################################################
# Quick check and assign default values
@@ -552,20 +569,27 @@
$(PRODUCT_ENFORCE_RRO_EXEMPTED_TARGETS))
endif
-# Get the board API level.
-board_api_level := $(PLATFORM_SDK_VERSION)
-ifdef BOARD_API_LEVEL
- board_api_level := $(BOARD_API_LEVEL)
-else ifdef BOARD_SHIPPING_API_LEVEL
- # Vendors with GRF must define BOARD_SHIPPING_API_LEVEL for the vendor API level.
- board_api_level := $(BOARD_SHIPPING_API_LEVEL)
-endif
+# This table maps sdk version 35 to vendor api level 202404 and assumes yearly
+# release for the same month.
+define sdk-to-vendor-api-level
+ $(if $(call math_lt_or_eq,$(1),34),$(1),20$(call int_subtract,$(1),11)04)
+endef
-# Calculate the VSR vendor API level.
-VSR_VENDOR_API_LEVEL := $(board_api_level)
-
-ifdef PRODUCT_SHIPPING_API_LEVEL
- VSR_VENDOR_API_LEVEL := $(call math_min,$(PRODUCT_SHIPPING_API_LEVEL),$(board_api_level))
+ifdef PRODUCT_SHIPPING_VENDOR_API_LEVEL
+# Follow the version that is set manually.
+ VSR_VENDOR_API_LEVEL := $(PRODUCT_SHIPPING_VENDOR_API_LEVEL)
+else
+ # VSR API level is the vendor api level of the product shipping API level.
+ VSR_VENDOR_API_LEVEL := $(call sdk-to-vendor-api-level,$(PLATFORM_SDK_VERSION))
+ ifdef PRODUCT_SHIPPING_API_LEVEL
+ VSR_VENDOR_API_LEVEL := $(call sdk-to-vendor-api-level,$(PRODUCT_SHIPPING_API_LEVEL))
+ endif
+ ifdef BOARD_SHIPPING_API_LEVEL
+ # Vendors with GRF must define BOARD_SHIPPING_API_LEVEL for the vendor API level.
+ # In this case, the VSR API level is the minimum of the PRODUCT_SHIPPING_API_LEVEL
+ # and RELEASE_BOARD_API_LEVEL
+ VSR_VENDOR_API_LEVEL := $(call math_min,$(VSR_VENDOR_API_LEVEL),$(RELEASE_BOARD_API_LEVEL))
+ endif
endif
.KATI_READONLY := VSR_VENDOR_API_LEVEL
@@ -580,7 +604,7 @@
# Boolean variable determining if selinux labels of /dev are enforced
CHECK_DEV_TYPE_VIOLATIONS := false
-ifneq ($(call math_gt,$(VSR_VENDOR_API_LEVEL),35),)
+ifneq ($(call math_gt,$(VSR_VENDOR_API_LEVEL),202404),)
CHECK_DEV_TYPE_VIOLATIONS := true
else ifneq ($(PRODUCT_CHECK_DEV_TYPE_VIOLATIONS),)
CHECK_DEV_TYPE_VIOLATIONS := $(PRODUCT_CHECK_DEV_TYPE_VIOLATIONS)
@@ -606,15 +630,6 @@
endif
endef
-ifndef PRODUCT_VIRTUAL_AB_COW_VERSION
- PRODUCT_VIRTUAL_AB_COW_VERSION := 2
- ifdef PRODUCT_SHIPPING_API_LEVEL
- ifeq (true,$(call math_gt_or_eq,$(PRODUCT_SHIPPING_API_LEVEL),34))
- PRODUCT_VIRTUAL_AB_COW_VERSION := 3
- endif
- endif
-endif
-
# Copy and check the value of each PRODUCT_BUILD_*_IMAGE variable
$(foreach image, \
PVMFW \
diff --git a/core/soong_config.mk b/core/soong_config.mk
index 1e419f3..e382407 100644
--- a/core/soong_config.mk
+++ b/core/soong_config.mk
@@ -339,7 +339,7 @@
$(call add_json_bool, CheckVendorSeappViolations, $(filter true,$(CHECK_VENDOR_SEAPP_VIOLATIONS)))
-$(call add_json_list, BuildIgnoreApexContributionContents, $(sort $(PRODUCT_BUILD_IGNORE_APEX_CONTRIBUTION_CONTENTS)))
+$(call add_json_bool, BuildIgnoreApexContributionContents, $(PRODUCT_BUILD_IGNORE_APEX_CONTRIBUTION_CONTENTS))
$(call add_json_map, PartitionVarsForBazelMigrationOnlyDoNotUse)
$(call add_json_str, ProductDirectory, $(dir $(INTERNAL_PRODUCT)))
diff --git a/core/tasks/berberis_test.mk b/core/tasks/berberis_test.mk
new file mode 100644
index 0000000..8604709
--- /dev/null
+++ b/core/tasks/berberis_test.mk
@@ -0,0 +1,25 @@
+#
+# Copyright (C) 2023 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.
+#
+
+BERBERIS_DIR := frameworks/libs/binary_translation
+
+# Berberis includes some components which may conflict with other packages.
+# Only build it when requested explicitly.
+ifeq ($(BUILD_BERBERIS),true)
+
+include $(BERBERIS_DIR)/tests/run_host_tests.mk
+
+endif # BUILD_BERBERIS
diff --git a/target/product/handheld_system_ext.mk b/target/product/handheld_system_ext.mk
index 1218f7a..187b627 100644
--- a/target/product/handheld_system_ext.mk
+++ b/target/product/handheld_system_ext.mk
@@ -29,8 +29,3 @@
StorageManager \
SystemUI \
WallpaperCropper \
-
-# Base modules when shipping api level is less than or equal to 34
-PRODUCT_PACKAGES_SHIPPING_API_LEVEL_34 += \
- hwservicemanager \
- android.hidl.allocator@1.0-service \
diff --git a/target/product/sdk.mk b/target/product/sdk.mk
index 04649a2..1a07363 100644
--- a/target/product/sdk.mk
+++ b/target/product/sdk.mk
@@ -34,6 +34,9 @@
PRODUCT_BUILD_FROM_SOURCE_STUB := true
+# Use sources of mainline modules
+PRODUCT_MODULE_BUILD_FROM_SOURCE := true
+
ifeq ($(WITHOUT_CHECK_API),true)
$(error WITHOUT_CHECK_API cannot be set to true for SDK product builds)
endif
diff --git a/target/product/virtual_ab_ota/android_t_baseline.mk b/target/product/virtual_ab_ota/android_t_baseline.mk
index 418aaa4..af0f7a9 100644
--- a/target/product/virtual_ab_ota/android_t_baseline.mk
+++ b/target/product/virtual_ab_ota/android_t_baseline.mk
@@ -20,3 +20,5 @@
#
# All U+ launching devices should instead use vabc_features.mk.
$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/vabc_features.mk)
+
+PRODUCT_VIRTUAL_AB_COW_VERSION ?= 2
diff --git a/tools/aconfig/TEST_MAPPING b/tools/aconfig/TEST_MAPPING
index 31b3410..638b92a 100644
--- a/tools/aconfig/TEST_MAPPING
+++ b/tools/aconfig/TEST_MAPPING
@@ -39,6 +39,10 @@
// "name": "aconfig.exported_mode.test.rust"
// },
{
+ // aflags CLI unit tests
+ "name": "aflags.test"
+ },
+ {
// printflags unit tests
"name": "printflags.test"
},
@@ -92,11 +96,6 @@
{
// aconfig_storage write api cpp integration tests
"name": "aconfig_storage_write_api.test.cpp"
- },
- {
- // aflags CLI unit tests
- // TODO(b/326062088): add to presubmit once proven in postsubmit.
- "name": "aflags.test"
}
]
}
diff --git a/tools/aconfig/aconfig/src/codegen/java.rs b/tools/aconfig/aconfig/src/codegen/java.rs
index fab2fa3..920d5fa 100644
--- a/tools/aconfig/aconfig/src/codegen/java.rs
+++ b/tools/aconfig/aconfig/src/codegen/java.rs
@@ -180,27 +180,36 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public interface FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean disabledRw();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean disabledRwExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean disabledRwInOtherNamespace();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledFixedRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledFixedRoExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRoExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
boolean enabledRw();
}
@@ -231,43 +240,52 @@
/** @hide */
public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw";
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRo() {
return FEATURE_FLAGS.disabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean disabledRw() {
return FEATURE_FLAGS.disabledRw();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean disabledRwExported() {
return FEATURE_FLAGS.disabledRwExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean disabledRwInOtherNamespace() {
return FEATURE_FLAGS.disabledRwInOtherNamespace();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledFixedRo() {
return FEATURE_FLAGS.enabledFixedRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledFixedRoExported() {
return FEATURE_FLAGS.enabledFixedRoExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRo() {
return FEATURE_FLAGS.enabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRoExported() {
return FEATURE_FLAGS.enabledRoExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@UnsupportedAppUsage
public static boolean enabledRw() {
return FEATURE_FLAGS.enabledRw();
@@ -458,12 +476,13 @@
other_namespace_is_cached = true;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRo() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRw() {
@@ -472,6 +491,7 @@
}
return disabledRw;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwExported() {
@@ -480,6 +500,7 @@
}
return disabledRwExported;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwInOtherNamespace() {
@@ -488,26 +509,31 @@
}
return disabledRwInOtherNamespace;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRoExported() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRoExported() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRw() {
@@ -566,13 +592,15 @@
public static final String FLAG_ENABLED_FIXED_RO_EXPORTED = "com.android.aconfig.test.enabled_fixed_ro_exported";
/** @hide */
public static final String FLAG_ENABLED_RO_EXPORTED = "com.android.aconfig.test.enabled_ro_exported";
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
public static boolean disabledRwExported() {
return FEATURE_FLAGS.disabledRwExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
public static boolean enabledFixedRoExported() {
return FEATURE_FLAGS.enabledFixedRoExported();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
public static boolean enabledRoExported() {
return FEATURE_FLAGS.enabledRoExported();
}
@@ -584,8 +612,11 @@
package com.android.aconfig.test;
/** @hide */
public interface FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
boolean disabledRwExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
boolean enabledFixedRoExported();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
boolean enabledRoExported();
}
"#;
@@ -623,7 +654,7 @@
}
aconfig_test_is_cached = true;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
public boolean disabledRwExported() {
if (!aconfig_test_is_cached) {
@@ -631,7 +662,7 @@
}
return disabledRwExported;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
public boolean enabledFixedRoExported() {
if (!aconfig_test_is_cached) {
@@ -639,7 +670,7 @@
}
return enabledFixedRoExported;
}
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
public boolean enabledRoExported() {
if (!aconfig_test_is_cached) {
@@ -761,54 +792,63 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRo() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRw() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwExported() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwInOtherNamespace() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRo() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRoExported() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRo() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRoExported() {
throw new UnsupportedOperationException(
"Method is not implemented.");
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRw() {
@@ -861,21 +901,27 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public interface FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRw();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
boolean disabledRwInOtherNamespace();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledFixedRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRo();
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
boolean enabledRw();
@@ -887,31 +933,37 @@
import android.compat.annotation.UnsupportedAppUsage;
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags {
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRo() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRw() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean disabledRwInOtherNamespace() {
return false;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledFixedRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRo() {
return true;
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
@UnsupportedAppUsage
public boolean enabledRw() {
@@ -938,32 +990,37 @@
public static final String FLAG_ENABLED_RO = "com.android.aconfig.test.enabled_ro";
/** @hide */
public static final String FLAG_ENABLED_RW = "com.android.aconfig.test.enabled_rw";
-
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRo() {
return FEATURE_FLAGS.disabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRw() {
return FEATURE_FLAGS.disabledRw();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeFalseForR8
@UnsupportedAppUsage
public static boolean disabledRwInOtherNamespace() {
return FEATURE_FLAGS.disabledRwInOtherNamespace();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledFixedRo() {
return FEATURE_FLAGS.enabledFixedRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRo() {
return FEATURE_FLAGS.enabledRo();
}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@com.android.aconfig.annotations.AssumeTrueForR8
@UnsupportedAppUsage
public static boolean enabledRw() {
diff --git a/tools/aconfig/aconfig/templates/FeatureFlags.java.template b/tools/aconfig/aconfig/templates/FeatureFlags.java.template
index 13edcb4..b90b201 100644
--- a/tools/aconfig/aconfig/templates/FeatureFlags.java.template
+++ b/tools/aconfig/aconfig/templates/FeatureFlags.java.template
@@ -6,6 +6,7 @@
/** @hide */
public interface FeatureFlags \{
{{ for item in flag_elements }}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
{{ -if not item.is_read_write }}
{{ -if item.default_value }}
@com.android.aconfig.annotations.AssumeTrueForR8
diff --git a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
index 12b2fc1..704f25b 100644
--- a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
+++ b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
@@ -45,6 +45,7 @@
{{ endfor- }}
{{ -endif }}{#- end of runtime_lookup_required #}
{{ -for flag in flag_elements }}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
{{ -if not library_exported }}
@UnsupportedAppUsage
@@ -66,6 +67,7 @@
/** @hide */
public final class FeatureFlagsImpl implements FeatureFlags \{
{{ for flag in flag_elements }}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
@Override
{{ -if not library_exported }}
@UnsupportedAppUsage
diff --git a/tools/aconfig/aconfig/templates/Flags.java.template b/tools/aconfig/aconfig/templates/Flags.java.template
index e105991..55db924 100644
--- a/tools/aconfig/aconfig/templates/Flags.java.template
+++ b/tools/aconfig/aconfig/templates/Flags.java.template
@@ -10,6 +10,7 @@
public static final String FLAG_{item.flag_name_constant_suffix} = "{item.device_config_flag}";
{{- endfor }}
{{ -for item in flag_elements}}
+ @com.android.aconfig.annotations.AconfigFlagAccessor
{{ -if not item.is_read_write }}
{{ -if item.default_value }}
@com.android.aconfig.annotations.AssumeTrueForR8
diff --git a/tools/finalization/OWNERS b/tools/finalization/OWNERS
index 518b60d..b00b774 100644
--- a/tools/finalization/OWNERS
+++ b/tools/finalization/OWNERS
@@ -1,5 +1,7 @@
include platform/build/soong:/OWNERS
-smoreland@google.com
-alexbuy@google.com
+amhk@google.com
+gurpreetgs@google.com
+michaelwr@google.com
patb@google.com
+smoreland@google.com
zyy@google.com