Merge "Remove PRODUCT_SHIPPING_API_LEVEL in assemble_vintf" into main
diff --git a/core/soong_config.mk b/core/soong_config.mk
index 12b4135..9be3340 100644
--- a/core/soong_config.mk
+++ b/core/soong_config.mk
@@ -361,6 +361,12 @@
$(call add_json_list, OemProperties, $(PRODUCT_OEM_PROPERTIES))
+# Do not set ArtTargetIncludeDebugBuild into any value if PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD is not set,
+# to have the same behavior from runtime_libart.mk.
+ifneq ($(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD),)
+$(call add_json_bool, ArtTargetIncludeDebugBuild, $(PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD))
+endif
+
$(call json_end)
$(file >$(SOONG_VARIABLES).tmp,$(json_contents))
diff --git a/target/product/build_variables.mk b/target/product/build_variables.mk
index 5fe5333..9fc9ff9 100644
--- a/target/product/build_variables.mk
+++ b/target/product/build_variables.mk
@@ -17,5 +17,8 @@
# This file contains the trunk-stable flags that should be exported to all
# Android targets.
+# Control libbinder client caching
+$(call soong_config_set, libbinder, release_libbinder_client_cache, $(RELEASE_LIBBINDER_CLIENT_CACHE))
+
# Use the configured release of sqlite
$(call soong_config_set, libsqlite3, release_package_libsqlite3, $(RELEASE_PACKAGE_LIBSQLITE3))
diff --git a/target/product/go_defaults_common.mk b/target/product/go_defaults_common.mk
index 5218f29..fd4047a 100644
--- a/target/product/go_defaults_common.mk
+++ b/target/product/go_defaults_common.mk
@@ -37,9 +37,9 @@
# leave less information available via JDWP.
PRODUCT_MINIMIZE_JAVA_DEBUG_INFO := true
-# Disable Scudo outside of eng builds to save RAM.
+# Use the low memory allocator outside of eng builds to save RSS.
ifneq (,$(filter eng, $(TARGET_BUILD_VARIANT)))
- PRODUCT_DISABLE_SCUDO := true
+ MALLOC_LOW_MEMORY := true
endif
# Add the system properties.
diff --git a/tools/aconfig/aconfig/src/codegen/java.rs b/tools/aconfig/aconfig/src/codegen/java.rs
index ec22ebc..3523b50 100644
--- a/tools/aconfig/aconfig/src/codegen/java.rs
+++ b/tools/aconfig/aconfig/src/codegen/java.rs
@@ -677,7 +677,7 @@
modified_parsed_flags.into_iter(),
mode,
flag_ids,
- false,
+ true,
)
.unwrap();
@@ -870,7 +870,7 @@
modified_parsed_flags.into_iter(),
mode,
flag_ids,
- false,
+ true,
)
.unwrap();
@@ -991,7 +991,7 @@
modified_parsed_flags.into_iter(),
mode,
flag_ids,
- false,
+ true,
)
.unwrap();
let expect_featureflags_content = r#"
diff --git a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
index cd2e3db..a6e1cf3 100644
--- a/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
+++ b/tools/aconfig/aconfig/templates/FeatureFlagsImpl.java.template
@@ -10,12 +10,14 @@
import android.provider.DeviceConfig.Properties;
+{{ -if not library_exported }}
{{ -if allow_instrumentation }}
import android.aconfig.storage.StorageInternalReader;
import android.util.Log;
import java.io.File;
{{ -endif }}
+{{ -endif }}
{{ -endif }}
/** @hide */
@@ -30,6 +32,7 @@
private static boolean {flag.method_name} = {flag.default_value};
{{ -endif }}
{{ -endfor }}
+{{ -if not library_exported }}
{{ -if allow_instrumentation }}
StorageInternalReader reader;
boolean readFromNewStorage;
@@ -40,23 +43,31 @@
File file = new File("/metadata/aconfig_test_missions/mission_1");
if (file.exists()) \{
readFromNewStorage = true;
- reader = new StorageInternalReader("{container}", "{package_name}");
+ try \{
+ reader = new StorageInternalReader("{container}", "{package_name}");
+ } catch(Exception e) \{
+ reader = null;
+ }
}
}
{{ -endif }}
+{{ -endif }}
{{ for namespace_with_flags in namespace_flags }}
private void load_overrides_{namespace_with_flags.namespace}() \{
try \{
+{{ -if not library_exported }}
{{ -if allow_instrumentation }}
boolean val;
{{ -endif }}
+{{ -endif }}
Properties properties = DeviceConfig.getProperties("{namespace_with_flags.namespace}");
{{ -for flag in namespace_with_flags.flags }}
{{ -if flag.is_read_write }}
{flag.method_name} =
properties.getBoolean(Flags.FLAG_{flag.flag_name_constant_suffix}, {flag.default_value});
+{{ -if not library_exported }}
{{ -if allow_instrumentation }}
- if (readFromNewStorage) \{
+ if (readFromNewStorage && reader != null) \{
try \{
val = reader.getBooleanFlagValue({flag.flag_offset});
if (val == {flag.method_name}) \{
@@ -67,11 +78,12 @@
val, {flag.method_name}));
}
} catch (Exception e) \{
- Log.e(TAG,"error: failed to read flag value of {flag.method_name}");
+ Log.e(TAG,"error: failed to read flag value of {flag.method_name}", e);
}
}
{{ -endif }}
{{ -endif }}
+{{ -endif }}
{{ -endfor }}
} catch (NullPointerException e) \{
throw new RuntimeException(
diff --git a/tools/aconfig/aconfig_storage_file/Android.bp b/tools/aconfig/aconfig_storage_file/Android.bp
index 3859194..70171ed 100644
--- a/tools/aconfig/aconfig_storage_file/Android.bp
+++ b/tools/aconfig/aconfig_storage_file/Android.bp
@@ -145,4 +145,10 @@
"srcs/**/*.java",
],
sdk_version: "core_current",
+ min_sdk_version: "29",
+ host_supported: true,
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
}
\ No newline at end of file
diff --git a/tools/aconfig/aconfig_storage_read_api/Android.bp b/tools/aconfig/aconfig_storage_read_api/Android.bp
index c2f4c18..b4bb06f 100644
--- a/tools/aconfig/aconfig_storage_read_api/Android.bp
+++ b/tools/aconfig/aconfig_storage_read_api/Android.bp
@@ -175,4 +175,10 @@
"aconfig_storage_file_java",
],
sdk_version: "core_current",
+ host_supported: true,
+ min_sdk_version: "29",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
}
diff --git a/tools/aconfig/aflags/src/aconfig_storage_source.rs b/tools/aconfig/aflags/src/aconfig_storage_source.rs
index d9dc15f..0dfb956 100644
--- a/tools/aconfig/aflags/src/aconfig_storage_source.rs
+++ b/tools/aconfig/aflags/src/aconfig_storage_source.rs
@@ -65,7 +65,9 @@
} else {
FlagPermission::ReadOnly
};
- let value_picked_from = if Some(value) == default_value {
+ let value_picked_from = if listed_flag.has_local_override {
+ ValuePickedFrom::Local
+ } else if Some(value) == default_value {
ValuePickedFrom::Default
} else {
ValuePickedFrom::Server
diff --git a/tools/aconfig/aflags/src/main.rs b/tools/aconfig/aflags/src/main.rs
index 6d76fd0..0a5c989 100644
--- a/tools/aconfig/aflags/src/main.rs
+++ b/tools/aconfig/aflags/src/main.rs
@@ -50,6 +50,7 @@
enum ValuePickedFrom {
Default,
Server,
+ Local,
}
impl std::fmt::Display for ValuePickedFrom {
@@ -60,6 +61,7 @@
match &self {
Self::Default => "default",
Self::Server => "server",
+ Self::Local => "local",
}
)
}
diff --git a/tools/aconfig/fake_device_config/src/android/provider/Log.java b/tools/aconfig/fake_device_config/src/android/provider/Log.java
new file mode 100644
index 0000000..3e7fd0f
--- /dev/null
+++ b/tools/aconfig/fake_device_config/src/android/provider/Log.java
@@ -0,0 +1,15 @@
+package android.util;
+
+public final class Log {
+ public static int i(String tag, String msg) {
+ return 0;
+ }
+
+ public static int e(String tag, String msg) {
+ return 0;
+ }
+
+ public static int e(String tag, String msg, Throwable tr) {
+ return 0;
+ }
+}