jitsi / jitsi-meet

Jitsi Meet - Secure, Simple and Scalable Video Conferences that you use as a standalone app or embed in your web application.
https://jitsi.org/meet
Apache License 2.0
23k stars 6.69k forks source link

Android App Crash: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so #11758

Closed daniello777 closed 1 year ago

daniello777 commented 2 years ago

Description:

It worked great in the jitsi SDK version of 2.9.3, though when I upgrade the jitsi SDK to 5.1.0, a crash always occurs whenever I initialize the jitsi SDK and join a meeting room

The crash log:

W/SoLoader: libjscexecutor.so not found on DirectAPKSoSource: 4
    java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "__cxa_bad_typeid" referenced by "/data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a/libjsc.so"...
        at java.lang.Runtime.load0(Runtime.java:939)
        at java.lang.System.load(System.java:1628)
        at com.facebook.soloader.SoLoader$1.load(SoLoader.java:529)
        at com.facebook.soloader.DirectApkSoSource.loadLibrary(DirectApkSoSource.java:77)
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1038)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)
D/SoLoader: libjscexecutor.so not found on /system/lib64
D/SoLoader: libjscexecutor.so not found on /vendor/lib64
E/SoLoader: couldn't find DSO to load: libjscexecutor.so
        SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
        SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
        SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
        SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
        Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
E/AndroidRuntime: FATAL EXCEPTION: create_react_context
    Process: com.my.app, PID: 17137
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
        SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
        SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
        SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
        SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
        Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)
E/JitsiMeetSDK: JitsiMeetUncaughtExceptionHandler FATAL ERROR
    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
        SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
        SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
        SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
        SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
        Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)

    java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libjscexecutor.so
        SoSource 0: com.facebook.soloader.DirectorySoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64 flags = 0]
        SoSource 1: com.facebook.soloader.DirectApkSoSource[root = /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/base.apk!/lib/arm64-v8a]
        SoSource 2: com.facebook.soloader.DirectorySoSource[root = /system/lib64 flags = 2]
        SoSource 3: com.facebook.soloader.DirectorySoSource[root = /vendor/lib64 flags = 2]
        Native lib dir: /data/app/~~PKlY1zxnY1I_9g3kewPBDA==/com.my.app-oPmcKhUyEBL8mkHRwrWxJA==/lib/arm64
     result: 0
        at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:1098)
        at com.facebook.soloader.SoLoader.loadLibraryBySoNameImpl(SoLoader.java:914)
        at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:826)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:773)
        at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:743)
        at com.facebook.react.jscexecutor.JSCExecutor.loadLibrary(JSCExecutor.java:24)
        at com.facebook.react.jscexecutor.JSCExecutor.<clinit>(JSCExecutor.java:20)
        at com.facebook.react.jscexecutor.JSCExecutorFactory.create(JSCExecutorFactory.java:29)
        at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.java:1112)
        at java.lang.Thread.run(Thread.java:923)

Steps to reproduce:

initialize the jitsi SDK and join a meeting room, it instantly crashes with the same crash log

Server information:

Client information:

daniello777 commented 2 years ago

2.9.3 works great for me, only the latest versions have the above crash. I want to upgrade from 2.9.3 to 5.1.0 because the 2.9.3 doesn't fully support the Android 12. (change targetSDKVersion to 31 to target android 12)

A way to work around the crash when targeting the android 12 is to add android:exported="true" to the <activity> in the build.gradle of the jitsi SDK 2.9.3: (the following code is from the app build.gradle of the android jitsi SDK)

def dropboxActivity = """
          <activity
              android:configChanges="keyboard|orientation"
              android:launchMode="singleTask"
              android:exported="true" (add this line will make the 2.9.3 SDK version support android 12)
              android:name="com.dropbox.core.android.AuthActivity">
            <intent-filter>
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.BROWSABLE" />
              <category android:name="android.intent.category.DEFAULT" />
              <data android:scheme="db-${dropboxAppKey}" />
            </intent-filter>
          </activity>"""

would you mind to help me do that in the 2.9.3 SDK version? I tried to download the 2.9.3 SDK manually (without gradle), import it and modify the build.gradle, though the imported jitsi SDK is not recognized.

Thanks for checking!

saghul commented 2 years ago

Hi there!

2.9.3 is ancient, we no longer support it, sorry!

How have you integrated the SDK in your project? (Show the gradle files) 5.1.0 should work fine.

daniello777 commented 2 years ago

I integrated the android jitsi SDK into my project, and the 2.9.3 version worked fine for the past several years, the crash only happens if I upgrade it to a newer version for example the 5.1.0.

here is my app build.gradle file, I added some dependencies related to react native and didn't work out:

buildscript {
    repositories {
        google()

        mavenCentral()
        mavenLocal()
        maven {
            url("$rootDir/../node_modules/react-native/android")
        }
        maven {
            url("$rootDir/../node_modules/jsc-android/dist")
        }
    }

    dependencies {
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
        classpath 'com.android.tools:r8:3.0.73'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'

apply plugin: 'com.google.firebase.crashlytics'

repositories {
    google()

    maven {
        url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
    }

    maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
    maven { url "https://jitpack.io" }
    maven { url 'https://www.jitpack.io' }
    mavenCentral()
    jcenter()
}

dependencies {
    implementation 'org.apache.commons:commons-lang3:3.12.0'
    implementation 'commons-io:commons-io:2.11.0'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.2'

    //! network
    implementation 'com.squareup.okhttp3:okhttp:3.14.9'
    implementation 'com.squareup.retrofit2:retrofit:2.9.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

    //! flexbox layout, used for tracks badges listing in session list
    implementation 'com.google.android.flexbox:flexbox:3.0.0'

    //! support libraries
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.vectordrawable:vectordrawable-animated:1.1.0'
    implementation 'androidx.browser:browser:1.4.0'
    implementation 'androidx.appcompat:appcompat:1.4.0'
    implementation 'androidx.recyclerview:recyclerview:1.2.1'
    implementation 'androidx.gridlayout:gridlayout:1.0.0'
    implementation 'androidx.exifinterface:exifinterface:1.3.3'
    implementation 'androidx.emoji:emoji-appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.2'

    //! play services
    implementation 'com.google.android.gms:play-services-analytics:18.0.0'
    implementation 'com.google.android.gms:play-services-maps:18.0.1'

    //! firebase & crashlytics
    implementation 'com.google.firebase:firebase-core:20.0.2'
    implementation 'com.google.firebase:firebase-analytics:20.0.2'
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
    implementation 'com.google.firebase:firebase-crashlytics:18.2.6'
    implementation 'com.google.firebase:firebase-perf:20.0.4'

    implementation "androidx.camera:camera-camera2:1.0.0-beta11"
    implementation "androidx.camera:camera-lifecycle:1.0.0-beta11"
    implementation "androidx.camera:camera-view:1.0.0-alpha18"

    //! XMPP
    implementation 'org.igniterealtime.smack:smack-android:4.1.9'
    implementation 'org.igniterealtime.smack:smack-tcp:4.1.9'
    implementation 'org.igniterealtime.smack:smack-im:4.1.9'
    implementation 'org.igniterealtime.smack:smack-extensions:4.1.9'

    //! Testing
    testImplementation 'junit:junit:4.13.2'
    testImplementation 'org.powermock:powermock-module-junit4:2.0.9'
    testImplementation 'org.powermock:powermock-api-mockito2:2.0.9'
    testImplementation 'androidx.arch.core:core-testing:2.1.0'
    testImplementation "com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0"
    testImplementation "io.mockk:mockk:1.12.1"
    testImplementation 'org.json:json:20201115'

    configurations {
        all*.exclude group: 'xpp3', module: 'xpp3'
        all*.exclude module: 'httpclient'
        all*.exclude module: 'commons-logging'
        all*.exclude group: 'com.google.firebase', module: 'firebase-core'

        all {
            resolutionStrategy {
                force 'androidx.media:media:1.0.0'
            }
        }
    }

    implementation "androidx.core:core-ktx:1.7.0"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

    implementation project(path: ':zoom_commonlib')
    implementation project(path: ':zoom_mobilertc')

    implementation "com.google.crypto.tink:tink-android:1.5.0"
    implementation "androidx.security:security-crypto:1.1.0-alpha03"
    implementation "com.google.android.exoplayer:exoplayer-core:2.16.1"
    implementation "com.google.android.exoplayer:exoplayer-ui:2.16.1"
    implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
    implementation "com.google.code.gson:gson:2.8.6"
    implementation "com.github.bumptech.glide:annotations:4.12.0"
    implementation "androidx.window:window:1.0.0"
    implementation "androidx.window:window-java:1.0.0"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.6.0"
    implementation "com.airbnb.android:lottie:4.0.0"

    //! jitsi SDK
    implementation ('org.jitsi.react:jitsi-meet-sdk:5.1.0') { transitive = true }
    implementation 'org.webkit:android-jsc:+'
    implementation 'com.facebook.soloader:soloader:0.6.1'
    api 'com.facebook.react:react-native:+'
    implementation 'com.facebook.fresco:animated-gif:2.5.0'
    implementation 'com.dropbox.core:dropbox-core-sdk:4.0.1'
    implementation 'com.jakewharton.timber:timber:4.7.1'
    implementation 'com.squareup.duktape:duktape-android:1.3.0'
    implementation "androidx.startup:startup-runtime:1.1.0"

    def room_version = "2.4.1"
    implementation("androidx.room:room-runtime:$room_version")
    annotationProcessor "androidx.room:room-compiler:$room_version"
    implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1")
    implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.4.1")
    kapt("androidx.room:room-compiler:$room_version")
    implementation("androidx.room:room-ktx:$room_version")
    implementation "androidx.room:room-rxjava3:$room_version"

    def composeVersion = "1.0.5"
    implementation "androidx.compose.runtime:runtime:$composeVersion"
    implementation "androidx.compose.ui:ui:$composeVersion"
    implementation "androidx.compose.foundation:foundation:$composeVersion"
    implementation "androidx.compose.foundation:foundation-layout:$composeVersion"
    implementation "androidx.compose.material:material:$composeVersion"
    implementation "androidx.compose.runtime:runtime-livedata:$composeVersion"
    implementation "androidx.compose.ui:ui-tooling:$composeVersion"
    implementation "com.google.android.material:compose-theme-adapter:$composeVersion"
    implementation "androidx.activity:activity-compose:1.4.0"
}

android {
    compileSdkVersion 31

    dexOptions {
        jumboMode = true
        javaMaxHeapSize "4g"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "com.my.app"
        minSdkVersion 23
        targetSdkVersion 31
        versionCode 1100
        versionName "9.9.9"
        multiDexEnabled true

        ndk {
            abiFilters = []
            abiFilters.addAll(['armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'])
        }
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/INDEX.LIST'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'

        pickFirst 'lib/x86/libc++_shared.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        pickFirst 'lib/x86_64/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'

        pickFirst '**/armeabi-v7a/libc++_shared.so'
        pickFirst '**/x86/libc++_shared.so'
        pickFirst '**/arm64-v8a/libc++_shared.so'
        pickFirst '**/x86_64/libc++_shared.so'
        pickFirst '**/x86/libjsc.so'
        pickFirst '**/armeabi-v7a/libjsc.so'
    }

    buildTypes {
        release {
            minifyEnabled false
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            zipAlignEnabled true
        }
    }

    lintOptions {
        lintConfig file("lint.xml")
    }

    //! enable the Jetpack Compose
    buildFeatures {
        compose true
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    composeOptions {
        kotlinCompilerExtensionVersion "1.0.5"
    }

}

apply plugin: 'com.google.gms.google-services'

apply plugin: 'com.jaredsburrows.license'

apply plugin: 'org.owasp.dependencycheck'

dependencyCheck {
    failBuildOnCVSS = 1
    suppressionFile = 'config/dependency_check/suppressions.xml'
}

project.ext.react = [
        enableHermes: false,
        deleteDebugFilesForVariant: { false },
        enableVmCleanup: false,
        entryFile: "index.js",
]

Thanks for help check!

saghul commented 2 years ago

Why are you specifying react native dependencies by hand instead of allowing Jitsi Meet to pull them?

amankumarchoudhary commented 2 years ago

I am facing the exact same issue.

packagingOptions { pickFirst 'lib/x86/libc++_shared.so' pickFirst 'lib/arm64-v8a/libc++_shared.so' pickFirst 'lib/x86_64/libc++_shared.so' pickFirst 'lib/armeabi-v7a/libc++_shared.so' }

I have included these things in my app level gradle for some conflicting with others library. @saghul please try to run your code with these 4 lines. Then you will definitely face this problem. And please provide us a solution.

saghul commented 2 years ago

What problem do you run into, if you remove them?

amankumarchoudhary commented 2 years ago

2 files found with path 'lib/arm64-v8a/libc++_shared.so'

like for all 4 files

saghul commented 2 years ago

Do you have any other react native dependencies, aside from those pulled in by our SDK?

amankumarchoudhary commented 2 years ago

I have included zoom aar file as well. I think these include those files.

My code works fine with jitsi 2.10.0. But after 3+. I am getting error

saghul commented 2 years ago

Have you tried adding the missing library to the pickFirst list too?

amankumarchoudhary commented 2 years ago

I have added the pickFirst list only in my app level gradle.

saghul commented 2 years ago

Same error?

daniello777 commented 2 years ago

Why are you specifying react native dependencies by hand instead of allowing Jitsi Meet to pull them?

I didn't specify the react native dependencies at the very beginning, and I still got the crash. I added them because the crash log says that the react native library has some issue so then I manually add them in the gradle file, and it makes no difference, I'm still getting the same crash.

I also have to specify the following because of the Zoom SDK:

packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
}
amankumarchoudhary commented 2 years ago

Same error?

Yes

saghul commented 2 years ago

I honestly don't know what's going on there.

If you can create a small projects that reproduces the issue I'll take a look.

rodcrespo commented 2 years ago

Any news? This is also happening to us only on release builds for Android.

saghul commented 2 years ago

Any news? This is also happening to us only on release builds for Android.

How did you integrate the SDK? Do you have a small sample project that can reproduce the issue?

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.