Skip to content

Fix NullPointerException and Android Build Conflicts#161

Open
Earbaj wants to merge 3 commits intojitsi:mainfrom
Earbaj:bugfix/jitsi-crash-react-instance-null
Open

Fix NullPointerException and Android Build Conflicts#161
Earbaj wants to merge 3 commits intojitsi:mainfrom
Earbaj:bugfix/jitsi-crash-react-instance-null

Conversation

@Earbaj
Copy link
Copy Markdown

@Earbaj Earbaj commented Apr 14, 2026

Jitsi Meet Flutter SDK Fix (Crash + Dependency Conflict)

Overview

This project provides a fix for critical issues encountered while integrating the Jitsi Meet Flutter SDK (v12.0.0) into Android applications.

It resolves:

  • Runtime crash when joining a meeting (NullPointerException)
  • Android build failure due to duplicate Media3 classes

Problems

1. Crash on Joining Meeting

Error:

java.lang.NullPointerException: Attempt to invoke virtual method 
'com.facebook.react.ReactInstanceManager.createReactContextInBackground()'
on a null object reference

Cause:
The Jitsi React Native engine (ReactInstanceManager) was not initialized before launching the meeting activity.


2. Duplicate Class Build Error

Error:

Duplicate class androidx.media3.exoplayer.rtsp.RtspMediaSource

Cause:

  • Jitsi SDK bundles react-native-video

  • Another dependency also includes:

    androidx.media3:media3-exoplayer-rtsp
    
  • Result → Duplicate class conflict during Gradle build


Solutions


1. Fix Jitsi Initialization (CRASH FIX)

JitsiMeetPlugin.kt

Add explicit initialization before launching meeting:

JitsiMeet.setDefaultConferenceOptions(
    JitsiMeetConferenceOptions.Builder()
        .setRoom("default_room")
        .build()
)

WrapperJitsiMeetActivity.kt

Add fallback initialization inside onCreate():

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    if (!JitsiMeet.isInitialized()) {
        JitsiMeet.setDefaultConferenceOptions(
            JitsiMeetConferenceOptions.Builder().build()
        )
    }
}

Add Required Imports

import org.jitsi.meet.sdk.JitsiMeet
import org.jitsi.jitsi_meet_flutter_sdk.JitsiMeetEventStreamHandler

2. Fix Duplicate Class Issue (BUILD FIX)


Plugin Level (android/build.gradle or plugin module)

configurations.all {
    exclude group: "androidx.media3", module: "media3-exoplayer-rtsp"
}

Packaging Fix

android {
    packagingOptions {
        pickFirst 'androidx/media3/exoplayer/rtsp/RtspMediaSource.class'
        pickFirst 'androidx/media3/exoplayer/rtsp/RtspMediaSource$Factory.class'
    }
}

3. REQUIRED App-Level Fix (IMPORTANT)

Add this to:

android/app/build.gradle
configurations.configureEach {
    exclude group: "androidx.media3"
}

Changes Checklist

  • Fixed Jitsi initialization before activity launch
  • Added lifecycle-safe fallback initialization
  • Fixed React Native context crash
  • Resolved duplicate Media3 class conflict
  • Added dependency exclusion strategy
  • Documented required app-level fix

Verification

  • ✔ Reproduced crash using logs
  • ✔ Confirmed fix removes NullPointerException
  • ✔ Verified successful meeting join
  • ✔ Resolved Gradle duplicate class error
  • ✔ Tested clean build and run

Important Notes

  • Do NOT manually add Media3 dependencies when using Jitsi
  • Avoid mixing multiple video/media SDKs
  • Always initialize Jitsi before launching meeting
  • Keep dependencies minimal for stability

Result

  • Stable meeting join (no crash)
  • Clean Android build (no duplicate class errors)
  • Improved SDK reliability

Earbaj added 3 commits April 14, 2026 13:37
The initial implementation encountered build failures due to Jitsi Meet SDK 12.0.0 dependency conflicts and pub cache version mismatches.

1. Dependency Conflict (Duplicate Classes)
Jitsi's internal modules conflict with media3. Since this conflict occurs at the application level (where both Jitsi and other plugins' dependencies meet), you need to add an exclusion to your main application's build file.
onCreate
 to handle activity recreations.
    // Ensure JitsiMeet is initialized
    val defaultOptions = JitsiMeetConferenceOptions.Builder().build()
    JitsiMeet.setDefaultConferenceOptions(defaultOptions)

    WrapperJitsiMeetActivity.launch(activity!!, options)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant