Restrict register_dalvik_system_VMRuntime to targetSdkVersion<=34 am: 8e18c45e19
Original change: https://android-review.googlesource.com/c/platform/art/+/2965305
Change-Id: I0aa025e68641400da08ce619db58cfb9a09cb931
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/runtime/native/dalvik_system_VMRuntime.cc b/runtime/native/dalvik_system_VMRuntime.cc
index 3f71c31..593b98d 100644
--- a/runtime/native/dalvik_system_VMRuntime.cc
+++ b/runtime/native/dalvik_system_VMRuntime.cc
@@ -590,6 +590,15 @@
};
void register_dalvik_system_VMRuntime(JNIEnv* env) {
+ if (Runtime::Current()->GetTargetSdkVersion() <= static_cast<uint32_t>(SdkVersion::kU)) {
+ real_register_dalvik_system_VMRuntime(env);
+ } else {
+ Runtime::Current()->Abort(
+ "Call to internal function 'register_dalvik_system_VMRuntime' is not allowed");
+ }
+}
+
+void real_register_dalvik_system_VMRuntime(JNIEnv* env) {
REGISTER_NATIVE_METHODS("dalvik/system/VMRuntime");
}
diff --git a/runtime/native/dalvik_system_VMRuntime.h b/runtime/native/dalvik_system_VMRuntime.h
index ad1fcbe..3876a60 100644
--- a/runtime/native/dalvik_system_VMRuntime.h
+++ b/runtime/native/dalvik_system_VMRuntime.h
@@ -23,9 +23,13 @@
namespace art HIDDEN {
-// TODO(260881207): should be HIDDEN, but some apps fail to launch
-// (e.g. b/319255249)
+// TODO(260881207): register_dalvik_system_VMRuntime should be HIDDEN,
+// but some apps fail to launch (e.g. b/319255249).
+// The function is still exported for now, but it does a targetSdk check
+// and aborts for SdkVersion after U. Libart code should use
+// `real_register...` until exported function is removed.
EXPORT void register_dalvik_system_VMRuntime(JNIEnv* env);
+void real_register_dalvik_system_VMRuntime(JNIEnv* env);
} // namespace art
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 4279e0e..b7587c0 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -2381,7 +2381,7 @@
register_dalvik_system_DexFile(env);
register_dalvik_system_BaseDexClassLoader(env);
register_dalvik_system_VMDebug(env);
- register_dalvik_system_VMRuntime(env);
+ real_register_dalvik_system_VMRuntime(env);
register_dalvik_system_VMStack(env);
register_dalvik_system_ZygoteHooks(env);
register_java_lang_Class(env);