From 09d30048e6cf8a86507bda1872fd7d9f653ec9ed Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Wed, 20 Jul 2016 15:46:32 +0300 Subject: Make sure JNI_OnLoad is not called more than once Since Android 5.0 Google introduce a nasty bug[1] which calls JNI_OnLoad more than once. Basically every time when a library is loaded JNI_OnLoad is called if found, but it calls *again* JNI_OnLoad of its .so dependencies! [1] Workaround https://code.google.com/p/android/issues/detail?id=215069 Change-Id: I2894dd24afa9c51582f20ab44d83e9ce86751716 Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/bluetooth/android/jni_android.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/bluetooth/android') diff --git a/src/bluetooth/android/jni_android.cpp b/src/bluetooth/android/jni_android.cpp index 061d7d96..61225d76 100644 --- a/src/bluetooth/android/jni_android.cpp +++ b/src/bluetooth/android/jni_android.cpp @@ -278,6 +278,11 @@ static bool registerNatives(JNIEnv *env) Q_BLUETOOTH_EXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* /*reserved*/) { + static bool initialized = false; + if (initialized) + return JNI_VERSION_1_6; + initialized = true; + typedef union { JNIEnv *nativeEnvironment; void *venv; -- cgit v1.2.3