diff options
author | 2019-12-13 15:49:37 -0800 | |
---|---|---|
committer | 2020-01-21 23:09:34 +0000 | |
commit | 7ec3e60dd656509f4346fc94968f9de22cedcaaf (patch) | |
tree | 58b433781be85aa127334c315599b2eac5faf944 /runtime/native_bridge_art_interface.cc | |
parent | 87f3630befee523a9b384b95fc23bfaadcc404d6 (diff) |
nativebridge: Support app-zygote
1. Allow initialization without app data directory, since isolated
processes don't have any external storage
2. Skip initialization if it was already called. This happens for
an app forked from an app-zygote
Test: CtsExternalServiceTestCases
android.externalservice.cts.ExternalServiceTest
testBindExternalServiceWithZygote
Test: CtsSeccompHostTestCases
android.seccomp.cts.SeccompHostJUnit4DeviceTest
testAppZygoteSyscalls
both for Q.sdk_gphone_x86_arm.armeabi-v7a
Bug: 143143718
Bug: 146904103
Change-Id: I08b51504ccba11dd0e5c03ca7ac728d38e7cde9c
Diffstat (limited to 'runtime/native_bridge_art_interface.cc')
-rw-r--r-- | runtime/native_bridge_art_interface.cc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/runtime/native_bridge_art_interface.cc b/runtime/native_bridge_art_interface.cc index def48e8be9..9287536ae6 100644 --- a/runtime/native_bridge_art_interface.cc +++ b/runtime/native_bridge_art_interface.cc @@ -111,6 +111,11 @@ void PreInitializeNativeBridge(const std::string& dir) { } void InitializeNativeBridge(JNIEnv* env, const char* instruction_set) { + if (android::NativeBridgeInitialized()) { + // This happens in apps forked from app-zygote, since native bridge + // is initialized in the zygote. + return; + } if (android::InitializeNativeBridge(env, instruction_set)) { if (android::NativeBridgeGetVersion() >= 2U) { #ifdef _NSIG // Undefined on Apple, but we don't support running on Mac, anyways. |