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