Closed welmas closed 9 months ago
crash starts with this --> Attempt to load writable dex file: /data/user/0/com.xxxxx.xxxxxx/cache/app_resources_lib.jar
//extern App *app; //-----------------
extern "C" JNIEXPORT jstring JNICALL Java_com_xxxxx_xxxxxxx_MainActivity_stringFromJNI( JNIEnv* env, jobject thiz) {
std::string hello = "Hello from C++";
app = ::firebase::App::Create(::firebase::AppOptions(), env, thiz);
return env->NewStringUTF(hello.c_str());
}
This looks like it's probably related to a change in more recent versions of Android that affects how we run dynamic code: https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading
We'll get working on a fix as suggested in that doc.
Thanks for bringing this to our attention!
This has been fixed in https://github.com/firebase/firebase-cpp-sdk/pull/1430 and will be included in the next SDK release (11.5.0). Thanks for the bug report!
[READ] For Firebase C++ SDK issues, please report to Firebase C++ open-source
Once you've read this section and determined that your issue is appropriate for this repository, please delete this section.
[REQUIRED] Please fill in the following fields:
[REQUIRED] Please describe the issue here:
only on API 34. issue is the jar file permission set rw--
my guess api 34 wants to see a read-only app_resources_lib.jar in cache directory
java_vm_ext.cc:591] JNI DETECTED ERROR IN APPLICATION: JNI NewStringUTF called with pending exception java.lang.SecurityException: Writable dex file '/data/user/0/com.xxxxx.xxxxxx/cache/app_resources_lib.jar' is not allowed. java_vm_ext.cc:591] at java.lang.Object dalvik.system.DexFile.openDexFileNative(java.lang.String, java.lang.String, int, java.lang.ClassLoader, dalvik.system.DexPathList$Element[]) (DexFile.java:-2) java_vm_ext.cc:591] at java.lang.Object dalvik.system.DexFile.openDexFile(java.lang.String, java.lang.String, int, java.lang.ClassLoader, dalvik.system.DexPathList$Element[]) (DexFile.java:406) java_vm_ext.cc:591] at void dalvik.system.DexFile.(java.lang.String, java.lang.ClassLoader, dalvik.system.DexPathList$Element[]) (DexFile.java:128)
java_vm_ext.cc:591] at void dalvik.system.DexFile.(java.io.File, java.lang.ClassLoader, dalvik.system.DexPathList$Element[]) (DexFile.java:101)
java_vm_ext.cc:591] at dalvik.system.DexFile dalvik.system.DexPathList.loadDexFile(java.io.File, java.io.File, java.lang.ClassLoader, dalvik.system.DexPathList$Element[]) (DexPathList.java:438)
java_vm_ext.cc:591] at dalvik.system.DexPathList$Element[] dalvik.system.DexPathList.makeDexElements(java.util.List, java.io.File, java.util.List, java.lang.ClassLoader, boolean) (DexPathList.java:397)
java_vm_ext.cc:591] at void dalvik.system.DexPathList.(java.lang.ClassLoader, java.lang.String, java.lang.String, java.io.File, boolean) (DexPathList.java:166)
java_vm_ext.cc:591] at void dalvik.system.BaseDexClassLoader.(java.lang.String, java.lang.String, java.lang.ClassLoader, java.lang.ClassLoader[], java.lang.ClassLoader[], boolean) (BaseDexClassLoader.java:160)
java_vm_ext.cc:591] at void dalvik.system.BaseDexClassLoader.(java.lang.String, java.io.File, java.lang.String, java.lang.ClassLoader) (BaseDexClassLoader.java:105)
java_vm_ext.cc:591] at void dalvik.system.DexClassLoader.(java.lang.String, java.lang.String, java.lang.String, java.lang.ClassLoader) (DexClassLoader.java:55)
java_vm_ext.cc:591] at java.lang.String com.com.xxxxx.xxxxxx.MainActivity.stringFromJNI() (MainActivity.java:-2)
java_vm_ext.cc:591] at void com.com.xxxxx.xxxxxx.MainActivity.onCreate(android.os.Bundle) (MainActivity.java:28)
java_vm_ext.cc:591] at void android.app.Activity.performCreate(android.os.Bundle, android.os.PersistableBundle) (Activity.java:8595)
java_vm_ext.cc:591] at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:8573)
java_vm_ext.cc:591] at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1456)
java_vm_ext.cc:591] at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:3764)
java_vm_ext.cc:591] at android.app.Activity android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.app.servertransaction.PendingTransactionActions, int, android.content.Intent) (ActivityThread.java:3922)
java_vm_ext.cc:591] at void android.app.servertransaction.LaunchActivityItem.execute(android.app.ClientTransactionHandler, android.os.IBinder, android.app.servertransaction.PendingTransactionActions) (LaunchActivityItem.java:103)
java_vm_ext.cc:591] at void android.app.servertransaction.TransactionExecutor.executeCallbacks(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:139)
java_vm_ext.cc:591] at void android.app.servertransaction.TransactionExecutor.execute(android.app.servertransaction.ClientTransaction) (TransactionExecutor.java:96)
java_vm_ext.cc:591] at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:2443)
java_vm_ext.cc:591] at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:106)
java_vm_ext.cc:591] at boolean android.os.Looper.loopOnce(android.os.Looper, long, int) (Looper.java:205)
java_vm_ext.cc:591] at void android.os.Looper.loop() (Looper.java:294)
java_vm_ext.cc:591] at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:8176)
java_vm_ext.cc:591] at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
java_vm_ext.cc:591] at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:552)
java_vm_ext.cc:591] at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:971)
java_vm_ext.cc:591]