diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index d04295f116801..a4be784ce4e46 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -664,6 +664,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) char lockProfThresholdBuf[sizeof("-Xlockprofthreshold:")-1 + PROPERTY_VALUE_MAX]; char nativeBridgeLibrary[sizeof("-XX:NativeBridge=") + PROPERTY_VALUE_MAX]; char cpuAbiListBuf[sizeof("--cpu-abilist=") + PROPERTY_VALUE_MAX]; + char corePlatformApiPolicyBuf[sizeof("-Xcore-platform-api-policy:") + PROPERTY_VALUE_MAX]; char methodTraceFileBuf[sizeof("-Xmethod-trace-file:") + PROPERTY_VALUE_MAX]; char methodTraceFileSizeBuf[sizeof("-Xmethod-trace-file-size:") + PROPERTY_VALUE_MAX]; std::string fingerprintBuf; @@ -1010,6 +1011,16 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote) addOption("--generate-mini-debug-info"); } + // If set, the property below can be used to enable core platform API violation reporting. + property_get("persist.debug.dalvik.vm.core_platform_api_policy", propBuf, ""); + if (propBuf[0] != '\0') { + snprintf(corePlatformApiPolicyBuf, + sizeof(corePlatformApiPolicyBuf), + "-Xcore-platform-api-policy:%s", + propBuf); + addOption(corePlatformApiPolicyBuf); + } + /* * Retrieve the build fingerprint and provide it to the runtime. That way, ANR dumps will * contain the fingerprint and can be parsed.