Git Product home page Git Product logo

react-native-jitsi-meet's Introduction

❗ This library is now deprecated since the jitsi Team published an official react native sdk

react-native-jitsi-meet

React native wrapper for Jitsi Meet SDK

Important notice

Jitsi Meet SDK is a packed React Native SDK. Running react-native-jitsi-meet will run this React Native SDK inside your React Native app. We know that this is suboptimal but sadly we did not find any other solution without massive rewrite of Jitsi Meet SDK. Compatibility with other libraries used internally by Jitsi Meet SDK might be broken (version mismatch) or you might experience performance issues or touch issues in some edge cases.

Install

npm install react-native-jitsi-meet --save

If you are using React-Native < 0.60, you should use a version < 2.0.0.
For versions higher than 2.0.0, you need to add the following piece of code in your metro.config.js file to avoid conflicts between react-native-jitsi-meet and react-native in metro bundler.

const blacklist = require('metro-config/src/defaults/blacklist');

module.exports = {
  resolver: {
    blacklistRE: blacklist([
      /ios\/Pods\/JitsiMeetSDK\/Frameworks\/JitsiMeet.framework\/assets\/node_modules\/react-native\/.*/,
    ]),
  },
};

Although most of the process is automated, you still have to follow the platform install guide below (iOS and Android) to get this library to work.

Use (>= 2.0.0)

The following component is an example of use:

import React, { useEffect } from 'react';
import { View } from 'react-native';
import JitsiMeet, { JitsiMeetView } from 'react-native-jitsi-meet';

const VideoCall = () => {
  const onConferenceTerminated = (nativeEvent) => {
    /* Conference terminated event */
  }

  const onConferenceJoined = (nativeEvent) => {
    /* Conference joined event */
  }

  const onConferenceWillJoin= (nativeEvent) => {
    /* Conference will join event */
  }

  useEffect(() => {
    setTimeout(() => {
      const url = 'https://meet.jit.si/deneme'; // can also be only room name and will connect to jitsi meet servers
      const userInfo = { displayName: 'User', email: '[email protected]', avatar: 'https:/gravatar.com/avatar/abc123' };
      const options = {
        audioMuted: false,
        audioOnly: false,
        videoMuted: false,
        subject: "your subject",
        token: "your token"
      }
      const meetFeatureFlags = {
        addPeopleEnabled: true,
        calendarEnabled: true,
        callIntegrationEnabled: true,
        chatEnabled: true,
        closeCaptionsEnabled: true,
        inviteEnabled: true,
        androidScreenSharingEnabled: true,
        liveStreamingEnabled: true,
        meetingNameEnabled: true,
        meetingPasswordEnabled: true,
        pipEnabled: true,
        kickOutEnabled: true,
        conferenceTimerEnabled: true,
        videoShareButtonEnabled: true,
        recordingEnabled: true,
        reactionsEnabled: true,
        raiseHandEnabled: true,
        tileViewEnabled: true,
        toolboxAlwaysVisible: false,
        toolboxEnabled: true,
        welcomePageEnabled: false,
      }
      JitsiMeet.call(url, userInfo, options, meetFeatureFlags);
      /* You can also use JitsiMeet.audioCall(url) for audio only call */
      /* You can programmatically end the call with JitsiMeet.endCall() */
    }, 1000);
  }, [])

  return (
    <View style={{ backgroundColor: 'black', flex: 1 }}>
      <JitsiMeetView onConferenceTerminated={onConferenceTerminated} onConferenceJoined={onConferenceJoined} onConferenceWillJoin={onConferenceWillJoin} style={{ flex: 1, height: '100%', width: '100%' }} />
    </View>
  )
}

export default VideoCall;

You can also check the ExampleApp

Events

You can add listeners for the following events:

  • onConferenceJoined
  • onConferenceTerminated
  • onConferenceWillJoin

Use (< 2.0.0 and RN<0.60)

In your component,

1.) import JitsiMeet and JitsiMeetEvents: import JitsiMeet, { JitsiMeetEvents } from 'react-native-jitsi-meet';

2.) add the following code:

  const initiateVideoCall = () => {
    JitsiMeet.initialize();
    JitsiMeetEvents.addListener('CONFERENCE_LEFT', (data) => {
      console.log('CONFERENCE_LEFT');
    });
    setTimeout(() => {
      JitsiMeet.call(`<your url>`);
    }, 1000);
  };

Events

You can add listeners for the following events:

  • CONFERENCE_JOINED
  • CONFERENCE_LEFT
  • CONFERENCE_WILL_JOIN

iOS Configuration

1.) navigate to <ProjectFolder>/ios/<ProjectName>/
2.) edit Info.plist and add the following lines

<key>NSCameraUsageDescription</key>
<string>Camera Permission</string>
<key>NSMicrophoneUsageDescription</key>
<string>Microphone Permission</string>

3.) in Info.plist, make sure that

<key>UIBackgroundModes</key>
<array>
</array>

contains <string>voip</string>

iOS Install for RN >= 0.60

1.) Modify your Podfile to have platform :ios, '10.0' and execute pod install
2.) In Xcode, under Build setting set Enable Bitcode to No

iOS Install for RN < 0.60

Step 1. Add Files Into Project

  • 1-1.) in Xcode: Right click LibrariesAdd Files to [project]
  • 1-2.) choose node_modules/react-native-jitsi-meet/ios/RNJitsiMeet.xcodeproj then Add
  • 1-3.) add node_modules/react-native-jitsi-meet/ios/WebRTC.framework and node_modules/react-native-jitsi-meet/ios/JitsiMeet.framework to the Frameworks folder
  • 1-4.) add node_modules/react-native-jitsi-meet/ios/JitsiMeet.storyboard in the same folder as AppDelegate.m
  • 1-5.) Replace the following code in AppDelegate.m:
  UIViewController *rootViewController = [UIViewController new];
  rootViewController.view = rootView;
  self.window.rootViewController = rootViewController;

with this one

  UIViewController *rootViewController = [UIViewController new];
  UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:rootViewController];
  navigationController.navigationBarHidden = YES;
  rootViewController.view = rootView;
  self.window.rootViewController = navigationController; 

This will create a navigation controller to be able to navigate between the Jitsi component and your react native screens.

Step 2. Add Library Search Path

2-1.) select Build Settings, find Search Paths
2-2.) edit BOTH Framework Search Paths and Library Search Paths
2-3.) add path on BOTH sections with: $(SRCROOT)/../node_modules/react-native-jitsi-meet/ios with recursive

Step 3. Change General Setting and Embed Framework

3-1.) go to General tab
3-2.) change Deployment Target to 8.0
3-3.) add WebRTC.framework and JitsiMeet.framework in Embedded Binaries

Step 4. Link/Include Necessary Libraries

  • 4-1.) click Build Phases tab, open Link Binary With Libraries
  • 4-2.) add libRNJitsiMeet.a
  • 4-3.) make sure WebRTC.framework and JitsiMeet.framework linked
  • 4-4.) add the following libraries depending on your version of XCode, some libraries might exist or not:
AVFoundation.framework
AudioToolbox.framework
CoreGraphics.framework
GLKit.framework
CoreAudio.framework
CoreVideo.framework
VideoToolbox.framework
libc.tbd
libsqlite3.tbd
libstdc++.tbd
libc++.tbd
  • 4-5.) Under Build setting set Dead Code Stripping to No, set Enable Bitcode to No and Always Embed Swift Standard Libraries to Yes
  • 4-6.) Add the following script in a new "Run Script" phase in "Build Phases":
echo "Target architectures: $ARCHS"

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")

FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp"

# remove simulator's archs if location is not simulator's directory
case "${TARGET_BUILD_DIR}" in
*"iphonesimulator")
echo "No need to remove archs"
;;
*)
if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then
lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH"
echo "i386 architecture removed"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
fi
if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then
lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH"
echo "x86_64 architecture removed"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
fi
;;
esac

echo "Completed for executable $FRAMEWORK_EXECUTABLE_PATH"
echo $

done

This will run a script everytime you build to clean the unwanted architecture

Android Install

1.) In android/app/build.gradle, add/replace the following lines:

project.ext.react = [
    entryFile: "index.js",
    bundleAssetName: "app.bundle",
]

2.) In android/app/src/main/java/com/xxx/MainApplication.java add/replace the following methods:

  import androidx.annotation.Nullable; // <--- Add this line if not already existing
  ...
    @Override
    protected String getJSMainModuleName() {
      return "index";
    }

    @Override
    protected @Nullable String getBundleAssetName() {
      return "app.bundle";
    }

3.) In android/build.gradle, add the following code

allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        maven {
            url "https://maven.google.com"
        }
        maven { // <---- Add this block
            url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
        }
        maven { url "https://jitpack.io" }
    }
}

Android Additional Install for RN < 0.60

1.) In android/app/src/main/AndroidManifest.xml add these permissions

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" // <--- Add this line if not already existing

...
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<permission android:name="${applicationId}.permission.JITSI_BROADCAST"
    android:label="Jitsi Meet Event Broadcast"
    android:protectionLevel="normal"></permission>
<uses-permission android:name="${applicationId}.permission.JITSI_BROADCAST"/>

2.) In the <application> section of android/app/src/main/AndroidManifest.xml, add

<activity android:name="com.reactnativejitsimeet.JitsiMeetNavigatorActivity" />

3.) In android/settings.gradle, include react-native-jitsi-meet module

include ':react-native-jitsi-meet'
project(':react-native-jitsi-meet').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-jitsi-meet/android')

4.) In android/app/build.gradle, add react-native-jitsi-meet to dependencies

android {
  ...
  packagingOptions {
      pickFirst 'lib/x86/libc++_shared.so'
      pickFirst 'lib/x86/libjsc.so'
      pickFirst 'lib/x86_64/libjsc.so'
      pickFirst 'lib/arm64-v8a/libjsc.so'
      pickFirst 'lib/arm64-v8a/libc++_shared.so'
      pickFirst 'lib/x86_64/libc++_shared.so'
      pickFirst 'lib/armeabi-v7a/libc++_shared.so'
      pickFirst 'lib/armeabi-v7a/libjsc.so'
  }
}
dependencies {
  ...
    implementation(project(':react-native-jitsi-meet'))
}

and set your minSdkVersion to be at least 24.

5.) In android/app/src/main/java/com/xxx/MainApplication.java

import com.reactnativejitsimeet.RNJitsiMeetPackage;  // <--- Add this line
import android.support.annotation.Nullable; // <--- Add this line if not already existing
...
    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new RNJitsiMeetPackage()                  // <--- Add this line
      );
    }

Side-note

If your app already includes react-native-locale-detector or react-native-vector-icons, you must exclude them from the react-native-jitsi-meet project implementation with the following code (even if you're app uses autolinking with RN > 0.60):

    implementation(project(':react-native-jitsi-meet')) {
      exclude group: 'com.facebook.react',module:'react-native-locale-detector'
      exclude group: 'com.facebook.react',module:'react-native-vector-icons'
      // Un-comment below if using hermes
      //exclude group: 'com.facebook',module:'hermes'
      // Un-comment any packages below that you have added to your project to prevent `duplicate_classes` errors
      //exclude group: 'com.facebook.react',module:'react-native-community-async-storage'
      //exclude group: 'com.facebook.react',module:'react-native-community_netinfo'
      //exclude group: 'com.facebook.react',module:'react-native-svg'
      //exclude group: 'com.facebook.react',module:'react-native-fetch-blob'
      //exclude group: 'com.facebook.react',module:'react-native-webview'
      //exclude group: 'com.facebook.react',module:'react-native-linear-gradient'
      //exclude group: 'com.facebook.react',module:'react-native-sound'
    }

react-native-jitsi-meet's People

Contributors

8enmann avatar akaramanapp avatar dependabot[bot] avatar jean-ben-guigui avatar joaodematejr avatar nerdymind-dev avatar nikilarigela avatar skrafft avatar vnphu avatar yogasw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-jitsi-meet's Issues

[Android] Issue while adding implementation jitsimeet 1.0.7

Hi @skrafft , its works properly in iOS, when I configuring for Android, I have faced with issue:
Activity com.sns.MainActivity has leaked IntentReceiver com.reactnativejitsimeet.JitsiBroadcastReceiver@8ae0cd0 that was originally registered here. Are you missing a call to unregisterReceiver()?
android.app.IntentReceiverLeaked: Activity com.sns.MainActivity has leaked IntentReceiver com.reactnativejitsimeet.JitsiBroadcastReceiver@8ae0cd0 that was originally registered here. Are you missing a call to unregisterReceiver()?
at android.app.LoadedApk$ReceiverDispatcher.(LoadedApk.java:1357)
at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1122)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1428)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1401)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:635)
at com.reactnativejitsimeet.JitsiMeetModule.initialize(JitsiMeetModule.java:41)
at com.facebook.react.bridge.ModuleHolder.doInitialize(ModuleHolder.java:223)
at com.facebook.react.bridge.ModuleHolder.markInitializable(ModuleHolder.java:98)
at com.facebook.react.bridge.NativeModuleRegistry.notifyJSInstanceInitialized(NativeModuleRegistry.java:102)
at com.facebook.react.bridge.CatalystInstanceImpl$2.run(CatalystInstanceImpl.java:405)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
at android.os.Looper.loop(Looper.java:164)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
at java.lang.Thread.run(Thread.java:764)

Do you know how to fix this? My gradle is 3.3.1

App restarts after JitsiMeet.call

2019-06-03 03:22:21.131 13312-13312/chat.rocket.reactnative E/HAL: PATH3 /odm/lib64/hw/gralloc.qcom.so
2019-06-03 03:22:21.131 13312-13312/chat.rocket.reactnative E/HAL: PATH2 /vendor/lib64/hw/gralloc.qcom.so
2019-06-03 03:22:21.131 13312-13312/chat.rocket.reactnative E/HAL: PATH1 /system/lib64/hw/gralloc.qcom.so
2019-06-03 03:22:21.131 13312-13312/chat.rocket.reactnative E/HAL: PATH3 /odm/lib64/hw/gralloc.msm8953.so
2019-06-03 03:22:21.131 13312-13312/chat.rocket.reactnative E/HAL: PATH2 /vendor/lib64/hw/gralloc.msm8953.so
2019-06-03 03:22:21.131 13312-13312/chat.rocket.reactnative E/HAL: PATH1 /system/lib64/hw/gralloc.msm8953.so

https://drive.google.com/file/d/1qVGBvHH7l-oMYkOT_UvEywZAEWEv-0B_/view?usp=sharing

Add 'video' or 'audio' option

We can add an option with 'video' or 'audio' on JitsiMeet.call or a callWithOptions(url, options)?
If you can't I will go to send a PR. :)

Android "You have been disconnected"

Saw this in my logcat, not sure if it's relevant

2018-11-17 13:36:29.401 9448-9545/com.cilantro E/ReactNativeJS: 'Failed to load config from https://meet.jit.si/static/config.js?room=dialininfo.html', undefined
2018-11-17 13:36:29.423 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "Failed to load config from https://meet.jit.si/static/config.js?room=dialininfo.html", undefined, stack:
    <unknown>@332:2579
    <unknown>@722:1142
    <unknown>@66:629
    <unknown>@66:657
    <unknown>@40:1772
    b@40:628
    w@40:992
    callImmediates@40:3173
    value@35:2778
    <unknown>@35:1360
    value@35:2606
    value@35:1330
    value@35:938
2018-11-17 13:40:17.824 9448-9448/com.cilantro E/com.cilantro: No package ID ff found for ID 0xffffffff.
2018-11-17 13:40:17.836 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[modules/xmpp/strophe.util.js]", "<n>: ", "Strophe: request id 13.1 error 404 happened", stack:
    <unknown>@332:2579
    n@719:302307
    log@719:729081
    error@719:35648
    _onRequestStateChange@719:97598
    value@70:1493
    value@69:6759
    value@69:3514
    <unknown>@69:5848
    value@23:1366
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883
2018-11-17 13:40:17.840 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[modules/xmpp/xmpp.js]", "<n>: ", "XMPP connection dropped!", stack:
    <unknown>@332:2579
    n@719:302307
    value@719:944417
    _changeConnectStatus@719:45239
    _doDisconnect@719:45812
    _onRequestStateChange@719:97809
    value@70:1493
    value@69:6759
    value@69:3514
    <unknown>@69:5848
    value@23:1366
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883
2018-11-17 13:40:22.437 9448-9448/com.cilantro E/com.cilantro: No package ID ff found for ID 0xffffffff.
2018-11-17 13:40:22.664 9448-10455/com.cilantro E/libEGL: call to OpenGL ES API with no current context (logged once per thread)
2018-11-17 13:40:24.198 9448-9545/com.cilantro E/ReactNativeJS: '[__filename]', '<s>: ', '_REMOVE_AUDIO_ELEMENT: no sound for id: PARTICIPANT_JOINED_SOUND'
2018-11-17 13:40:24.202 9448-9545/com.cilantro E/ReactNativeJS: '[__filename]', '<s>: ', '_REMOVE_AUDIO_ELEMENT: no sound for id: PARTICIPANT_LEFT_SOUND'
2018-11-17 13:40:24.208 9448-9545/com.cilantro E/ReactNativeJS: '[__filename]', '<s>: ', '_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_EXPIRED_SOUND_ID'
2018-11-17 13:40:24.213 9448-9545/com.cilantro E/ReactNativeJS: '[__filename]', '<s>: ', '_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_REJECTED_SOUND_ID'
2018-11-17 13:40:24.217 9448-9545/com.cilantro E/ReactNativeJS: '[__filename]', '<s>: ', '_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_RINGING_SOUND_ID'
2018-11-17 13:40:24.220 9448-9545/com.cilantro E/ReactNativeJS: '[__filename]', '<s>: ', '_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_START_SOUND_ID'
2018-11-17 13:40:24.226 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[__filename]", "<s>: ", "_REMOVE_AUDIO_ELEMENT: no sound for id: PARTICIPANT_JOINED_SOUND", stack:
    <unknown>@332:2579
    s@676:833
    <unknown>@844:562
    <unknown>@844:600
    <unknown>@642:4980
    v@642:3138
    <unknown>@970:174
    <unknown>@1151:838
    <unknown>@1148:179
    <unknown>@1145:1117
    <unknown>@1132:2244
    <unknown>@1133:823
    <unknown>@1130:570
    <unknown>@1117:273
    <unknown>@1103:151
    <unknown>@1091:820
    <unknown>@1063:2466
    <unknown>@1039:1029
    <unknown>@1033:2776
    <unknown>@1018:266
    <unknown>@996:192
    <unknown>@967:437
    <unknown>@965:217
    <unknown>@963:163
    <unknown>@956:1252
    <unknown>@949:948
    <unknown>@941:880
    <unknown>@937:579
    <unknown>@919:1624
    <unknown>@908:1163
    <unknown>@871:3531
    <unknown>@867:200
    <unknown>@724:1274
    <unknown>@742:1450
    <unknown>@861:935
    <unknown>@857:234
    <unknown>@832:2791
    <unknown>@843:668
    <unknown>@824:1529
    <unknown>@829:220
    <unknown>@821:1765
    <unknown>@798:335
    <unknown>@737:688
    <unknown>@730:167
    <unknown>@678:312
    _removeAudioElement@842:1154
    value@842:1188
    value@811:725
    value@809:995
    <unknown>@31:38231
    m@31:38252
    g@31:37100
    y@31:37641
    commitDeletion@31:39523
    Q@31:45503
    G@31:46096
    ee@31:47942
    ne@31:48890
    le@31:51364
    ue@31:50745
    <unknown>@31:57241
    updateContainer@31:57248
    unmountComponentAtNode@31:79178
    unmountComponentAtNodeAndRemoveContainer@31:79296
    unmountApplicationComponentAtRootTag@299:2127
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883
2018-11-17 13:40:24.243 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[__filename]", "<s>: ", "_REMOVE_AUDIO_ELEMENT: no sound for id: PARTICIPANT_LEFT_SOUND", stack:
    <unknown>@332:2579
    s@676:833
    <unknown>@844:562
    <unknown>@844:600
    <unknown>@642:4980
    v@642:3138
    <unknown>@970:174
    <unknown>@1151:838
    <unknown>@1148:179
    <unknown>@1145:1117
    <unknown>@1132:2244
    <unknown>@1133:823
    <unknown>@1130:570
    <unknown>@1117:273
    <unknown>@1103:151
    <unknown>@1091:820
    <unknown>@1063:2466
    <unknown>@1039:1029
    <unknown>@1033:2776
    <unknown>@1018:266
    <unknown>@996:192
    <unknown>@967:437
    <unknown>@965:217
    <unknown>@963:163
    <unknown>@956:1252
    <unknown>@949:948
    <unknown>@941:880
    <unknown>@937:579
    <unknown>@919:1624
    <unknown>@908:1163
    <unknown>@871:3531
    <unknown>@867:200
    <unknown>@724:1274
    <unknown>@742:1450
    <unknown>@861:935
    <unknown>@857:234
    <unknown>@832:2791
    <unknown>@843:668
    <unknown>@824:1529
    <unknown>@829:220
    <unknown>@821:1765
    <unknown>@798:335
    <unknown>@737:688
    <unknown>@730:167
    <unknown>@678:312
    _removeAudioElement@842:1154
    value@842:1188
    value@811:725
    value@809:995
    <unknown>@31:38231
    m@31:38252
    g@31:37100
    y@31:37641
    commitDeletion@31:39523
    Q@31:45503
    G@31:46096
    ee@31:47942
    ne@31:48890
    le@31:51364
    ue@31:50745
    <unknown>@31:57241
    updateContainer@31:57248
    unmountComponentAtNode@31:79178
    unmountComponentAtNodeAndRemoveContainer@31:79296
    unmountApplicationComponentAtRootTag@299:2127
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883
2018-11-17 13:40:24.280 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[__filename]", "<s>: ", "_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_EXPIRED_SOUND_ID", stack:
    <unknown>@332:2579
    s@676:833
    <unknown>@844:562
    <unknown>@844:600
    <unknown>@642:4980
    v@642:3138
    <unknown>@970:174
    <unknown>@1151:838
    <unknown>@1148:179
    <unknown>@1145:1117
    <unknown>@1132:2244
    <unknown>@1133:823
    <unknown>@1130:570
    <unknown>@1117:273
    <unknown>@1103:151
    <unknown>@1091:820
    <unknown>@1063:2466
    <unknown>@1039:1029
    <unknown>@1033:2776
    <unknown>@1018:266
    <unknown>@996:192
    <unknown>@967:437
    <unknown>@965:217
    <unknown>@963:163
    <unknown>@956:1252
    <unknown>@949:948
    <unknown>@941:880
    <unknown>@937:579
    <unknown>@919:1624
    <unknown>@908:1163
    <unknown>@871:3531
    <unknown>@867:200
    <unknown>@724:1274
    <unknown>@742:1450
    <unknown>@861:935
    <unknown>@857:234
    <unknown>@832:2791
    <unknown>@843:668
    <unknown>@824:1529
    <unknown>@829:220
    <unknown>@821:1765
    <unknown>@798:335
    <unknown>@737:688
    <unknown>@730:167
    <unknown>@678:312
    _removeAudioElement@842:1154
    value@842:1188
    value@811:725
    value@809:995
    <unknown>@31:38231
    m@31:38252
    g@31:37100
    y@31:37641
    commitDeletion@31:39523
    Q@31:45503
    G@31:46096
    ee@31:47942
    ne@31:48890
    le@31:51364
    ue@31:50745
    <unknown>@31:57241
    updateContainer@31:57248
    unmountComponentAtNode@31:79178
    unmountComponentAtNodeAndRemoveContainer@31:79296
    unmountApplicationComponentAtRootTag@299:2127
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883
2018-11-17 13:40:24.295 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[__filename]", "<s>: ", "_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_REJECTED_SOUND_ID", stack:
    <unknown>@332:2579
    s@676:833
    <unknown>@844:562
    <unknown>@844:600
    <unknown>@642:4980
    v@642:3138
    <unknown>@970:174
    <unknown>@1151:838
    <unknown>@1148:179
    <unknown>@1145:1117
    <unknown>@1132:2244
    <unknown>@1133:823
    <unknown>@1130:570
    <unknown>@1117:273
    <unknown>@1103:151
    <unknown>@1091:820
    <unknown>@1063:2466
    <unknown>@1039:1029
    <unknown>@1033:2776
    <unknown>@1018:266
    <unknown>@996:192
    <unknown>@967:437
    <unknown>@965:217
    <unknown>@963:163
    <unknown>@956:1252
    <unknown>@949:948
    <unknown>@941:880
    <unknown>@937:579
    <unknown>@919:1624
    <unknown>@908:1163
    <unknown>@871:3531
    <unknown>@867:200
    <unknown>@724:1274
    <unknown>@742:1450
    <unknown>@861:935
    <unknown>@857:234
    <unknown>@832:2791
    <unknown>@843:668
    <unknown>@824:1529
    <unknown>@829:220
    <unknown>@821:1765
    <unknown>@798:335
    <unknown>@737:688
    <unknown>@730:167
    <unknown>@678:312
    _removeAudioElement@842:1154
    value@842:1188
    value@811:725
    value@809:995
    <unknown>@31:38231
    m@31:38252
    g@31:37100
    y@31:37641
    commitDeletion@31:39523
    Q@31:45503
    G@31:46096
    ee@31:47942
    ne@31:48890
    le@31:51364
    ue@31:50745
    <unknown>@31:57241
    updateContainer@31:57248
    unmountComponentAtNode@31:79178
    unmountComponentAtNodeAndRemoveContainer@31:79296
    unmountApplicationComponentAtRootTag@299:2127
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883
2018-11-17 13:40:24.306 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[__filename]", "<s>: ", "_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_RINGING_SOUND_ID", stack:
    <unknown>@332:2579
    s@676:833
    <unknown>@844:562
    <unknown>@844:600
    <unknown>@642:4980
    v@642:3138
    <unknown>@970:174
    <unknown>@1151:838
    <unknown>@1148:179
    <unknown>@1145:1117
    <unknown>@1132:2244
    <unknown>@1133:823
    <unknown>@1130:570
    <unknown>@1117:273
    <unknown>@1103:151
    <unknown>@1091:820
    <unknown>@1063:2466
    <unknown>@1039:1029
    <unknown>@1033:2776
    <unknown>@1018:266
    <unknown>@996:192
    <unknown>@967:437
    <unknown>@965:217
    <unknown>@963:163
    <unknown>@956:1252
    <unknown>@949:948
    <unknown>@941:880
    <unknown>@937:579
    <unknown>@919:1624
    <unknown>@908:1163
    <unknown>@871:3531
    <unknown>@867:200
    <unknown>@724:1274
    <unknown>@742:1450
    <unknown>@861:935
    <unknown>@857:234
    <unknown>@832:2791
    <unknown>@843:668
    <unknown>@824:1529
    <unknown>@829:220
    <unknown>@821:1765
    <unknown>@798:335
    <unknown>@737:688
    <unknown>@730:167
    <unknown>@678:312
    _removeAudioElement@842:1154
    value@842:1188
    value@811:725
    value@809:995
    <unknown>@31:38231
    m@31:38252
    g@31:37100
    y@31:37641
    commitDeletion@31:39523
    Q@31:45503
    G@31:46096
    ee@31:47942
    ne@31:48890
    le@31:51364
    ue@31:50745
    <unknown>@31:57241
    updateContainer@31:57248
    unmountComponentAtNode@31:79178
    unmountComponentAtNodeAndRemoveContainer@31:79296
    unmountApplicationComponentAtRootTag@299:2127
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883
2018-11-17 13:40:24.321 9448-9546/com.cilantro E/unknown:ReactNative: console.error: "[__filename]", "<s>: ", "_REMOVE_AUDIO_ELEMENT: no sound for id: OUTGOING_CALL_START_SOUND_ID", stack:
    <unknown>@332:2579
    s@676:833
    <unknown>@844:562
    <unknown>@844:600
    <unknown>@642:4980
    v@642:3138
    <unknown>@970:174
    <unknown>@1151:838
    <unknown>@1148:179
    <unknown>@1145:1117
    <unknown>@1132:2244
    <unknown>@1133:823
    <unknown>@1130:570
    <unknown>@1117:273
    <unknown>@1103:151
    <unknown>@1091:820
    <unknown>@1063:2466
    <unknown>@1039:1029
    <unknown>@1033:2776
    <unknown>@1018:266
    <unknown>@996:192
    <unknown>@967:437
    <unknown>@965:217
    <unknown>@963:163
    <unknown>@956:1252
    <unknown>@949:948
    <unknown>@941:880
    <unknown>@937:579
    <unknown>@919:1624
    <unknown>@908:1163
    <unknown>@871:3531
    <unknown>@867:200
    <unknown>@724:1274
    <unknown>@742:1450
    <unknown>@861:935
    <unknown>@857:234
    <unknown>@832:2791
    <unknown>@843:668
    <unknown>@824:1529
    <unknown>@829:220
    <unknown>@821:1765
    <unknown>@798:335
    <unknown>@737:688
    <unknown>@730:167
    <unknown>@678:312
    _removeAudioElement@842:1154
    value@842:1188
    value@811:725
    value@809:995
    <unknown>@31:38231
    m@31:38252
    g@31:37100
    y@31:37641
    commitDeletion@31:39523
    Q@31:45503
    G@31:46096
    ee@31:47942
    ne@31:48890
    le@31:51364
    ue@31:50745
    <unknown>@31:57241
    updateContainer@31:57248
    unmountComponentAtNode@31:79178
    unmountComponentAtNodeAndRemoveContainer@31:79296
    unmountApplicationComponentAtRootTag@299:2127
    value@35:3177
    <unknown>@35:911
    value@35:2606
    value@35:883

`

Bad implementation in latest version using jitsi 1.21

There is a problem, at least in android

Jitsi people encapsulate main object in another way (differs from 1.16 version).

When use your plugin latest version and run on studio shows:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.eternity.nulesinfo/com.reactnativejitsimeet.JitsiMeetNavigatorActivity}: java.lang.RuntimeException: Enclosing Activity must implement JitsiMeetActivityInterface

I just uninstall older one and reinstall this version.

Runing on Android Studio fires this error.

I think this can help:

jitsi/jitsi-meet#3698

Native module cannot be null

Hello, I just tried using this library.
After following the steps for installing it and importing it in the main RN component, it still shows me this error message when i build the project
can you help out?
bildschirmfoto 2018-09-12 um 11 38 08

App keeps stopping on react 0.58.5

Hi
Many thanks for tremendous work on this project!
I have a react native app which I already connected to iOS and it works perfectly on both iPhone and iPad
But with Android, I have problems with integration. I’ve tried 2 times to add it to my project as manual says and came up with app crashing when I call initiateVideoCall.

I’ve even created a brand new project with only one purpose: add react-native-jitsi-meet dependency to the project.

Disclaimer: I'm new to the react native world. I've come up here from Java backend world, so maybe there are some obvious things I missed.

During 3 tries this is what I always bumped to after doing doing readme installation and re-running react-native run-android over and over again:

First error:

> Task :app:preDebugBuild FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.facebook.react:react-native' has different version for the compile (0.58.5) and runtime (0.57.8) classpath. You should manually set the same version via DependencyResolution

My solution: in app/build.gradle:
dependencies {
implementation project(':react-native-gesture-handler')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:0.58.5" // changed this to 0.58.5
implementation(project(':react-native-jitsi-meet'))
}

Second error:

> Task :app:processDebugManifest FAILED
/Users/herman/Documents/work/BoozerApp/android/app/src/main/AndroidManifest.xml:24:7-34 Error:
        Attribute application@allowBackup value=(false) from AndroidManifest.xml:24:7-34
        is also present at [org.jitsi.react:jitsi-meet-sdk:1.21.0] AndroidManifest.xml:31:9-35 value=(true).
        Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xml:19:5-38:19 to override.
/Users/herman/Documents/work/BoozerApp/android/app/src/main/AndroidManifest.xml Error:
        uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared in library [org.jitsi.react:jitsi-meet-sdk:1.21.0] /Users/herman/.gradle/caches/transforms-1/files-1.1/jitsi-meet-sdk-1.21.0.aar/68ab6f17f2b7329fac831cb6388f136c/AndroidManifest.xml as the library might be using APIs not available in 16
        Suggestion: use a compatible library with a minSdk of at most 16,
                or increase this project's minSdk version to at least 21,
                or use tools:overrideLibrary="org.jitsi.meet.sdk" to force usage (may lead to runtime failures)

See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.

My solution, in build.gradle change
minSdkVersion = 21

Next error:

> Task :app:processDebugManifest FAILED
/Users/herman/Documents/work/BoozerApp/android/app/src/main/AndroidManifest.xml:24:7-34 Error:
        Attribute application@allowBackup value=(false) from AndroidManifest.xml:24:7-34
        is also present at [org.jitsi.react:jitsi-meet-sdk:1.21.0] AndroidManifest.xml:31:9-35 value=(true).
        Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xml:19:5-38:19 to override.

Solution is to change AndroidManifest:

    <application
      android:name=".MainApplication"
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:allowBackup="false" //<---------------------- I removed this line
      android:theme="@style/AppTheme">

This one is pretty simple, a compilation error for @nullable annotation:

> Task :app:compileDebugJavaWithJavac FAILED
/Users/herman/Documents/work/BoozerApp/android/app/src/main/java/com/boozerbar/MainApplication.java:39: error: cannot find symbol
    protected @Nullable String getBundleAssetName() {
               ^
  symbol: class Nullable
1 error

In MainApplication.java added import android.support.annotation.Nullable;. I also tried with import javax.annotation.Nullable; no difference

This one has pretty big stacktrace, but in the end it says something about Java 8:

> Task :app:transformClassesWithDexBuilderForDebug
com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process /Users/herman/.gradle/caches/transforms-1/files-1.1/react-native-webrtc-1.67.1-jitsi-9.aar/225980d4b2d9d17294dc212a2fcf0eb3/jars/classes.jar
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
        at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600)
        at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
        at java.base/java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:722)
        at com.android.ide.common.internal.WaitableExecutor.waitForTasksWithQuickFail(WaitableExecutor.java:146)
        at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.transform(DexArchiveBuilderTransform.java:405)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
        at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
        at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
        at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
        at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:50)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
        at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
        at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
        at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:317)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:309)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:185)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:97)
        at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:596)
        at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
        at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Failed to process /Users/herman/.gradle/caches/transforms-1/files-1.1/react-native-webrtc-1.67.1-jitsi-9.aar/225980d4b2d9d17294dc212a2fcf0eb3/jars/classes.jar
        at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.launchProcessing(DexArchiveBuilderTransform.java:900)
        at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.lambda$convertToDexArchive$6(DexArchiveBuilderTransform.java:825)
        at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1448)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1603)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
Caused by: com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.
The dependency contains Java 8 bytecode. Please enable desugaring by adding the following to build.gradle
android {
    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}
See https://developer.android.com/studio/write/java8-support.html for details. Alternatively, increase the minSdkVersion to 26 or above.

        at com.android.builder.dexing.D8DexArchiveBuilder.getExceptionToRethrow(D8DexArchiveBuilder.java:124)
        at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:101)
        at com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform.launchProcessing(DexArchiveBuilderTransform.java:895)
        ... 5 more
Caused by: com.android.tools.r8.CompilationFailedException: Compilation failed to complete
        at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:65)
        at com.android.tools.r8.utils.ExceptionUtils.withD8CompilationHandler(ExceptionUtils.java:43)
        at com.android.tools.r8.D8.run(D8.java:90)
        at com.android.builder.dexing.D8DexArchiveBuilder.convert(D8DexArchiveBuilder.java:99)
        ... 6 more
Caused by: com.android.tools.r8.utils.AbortException: Error: Invoke-customs are only supported starting with Android O (--min-api 26)
        at com.android.tools.r8.utils.Reporter.failIfPendingErrors(Reporter.java:116)
        at com.android.tools.r8.utils.Reporter.fatalError(Reporter.java:74)
        at com.android.tools.r8.utils.ExceptionUtils.withCompilationHandler(ExceptionUtils.java:59)
        ... 9 more


> Task :app:transformClassesWithDexBuilderForDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process /Users/herman/.gradle/caches/transforms-1/files-1.1/react-native-webrtc-1.67.1-jitsi-9.aar/225980d4b2d9d17294dc212a2fcf0eb3/jars/classes.jar

My solution is to add:

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }

to android section

This one is pretty mythical for me:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDebug'.
> More than one file was found with OS independent path 'lib/x86_64/libjsc.so'

so I've googled around and copy pasted from here
Solution is to edit android/app/build.gradle

android {
    ...
    packagingOptions {
        pickFirst 'lib/x86_64/libjsc.so'
        pickFirst 'lib/arm64-v8a/libjsc.so'
    }
    ...
}

SO, after everything I've done I've come up with green build, app is up and running, but unfortunately, app is crashing with the message: 'jetsitest keeps stopping', when I call initiateVideoCall.
I've tried to move initiateVideoCall function from componentDidMount to <Button title='Enter chat' onPress={()=> this.initiateVideoCall()}/> with the same result, only difference is now I can crash app via button 🗡 👯‍♂️
I've also tried to do ./gradlew clean, delete node_modules and do yarn. Also, cleared ~/.gradle/cache folder a couple of times with all possible combinations.

The app is crashing when calling initiateVideoCall both on emulators(Pixel and Pixel 2 with Android 9) and on device (Sumsung galaxy s8 with (?)Android 8)

Logs are clear both in adb logcat | grep 'jitsitest' and remote debugger is clean

I have a react-native v. 0.58.5

jitsitest herman$ react-native info

  React Native Environment Info:
    System:
      OS: macOS 10.14.3
      CPU: (8) x64 Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
      Memory: 115.56 MB / 16.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 8.11.1 - /usr/local/bin/node
      Yarn: yarn install v0.27.5
[1/4] Resolving packages...
success Already up-to-date.
Done in 0.65s. - /usr/local/bin/yarn
      npm: 6.0.1 - /usr/local/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
    IDEs:
      Android Studio: 3.3 AI-182.5107.16.33.5264788
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.6.3 => 16.6.3 
      react-native: 0.58.5 => 0.58.5 
    npmGlobalPackages:
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7

I've posted that journey so maybe somebody can save some time or @skrafft could benefit from my issues and updates a readme, or maybe I'm just stupid and missing some obvios solution

TL;dr
After successful build app is crashing without any logs with error App keeps stoping.

@skrafft thanks again for your work!

Execution failed for task ':app:transformClassesWithMultidexlistForDebug'. Error while generating the main dex list.

can you help me bro, i get stuck with this over 1 week now, alraedy try many things, the error also variety, but for now i got this error,:

Configure project :rn-fetch-blob
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html

Task :app:processDebugGoogleServices
Parsing json file: /Users/michaellim/Documents/Project/reactnative/new/euphebe/android/app/google-services.json

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.

com.android.build.api.transform.TransformException: Error while generating the main dex list.

RN : 0.57.8
app/build.gradle :

apply plugin: "com.android.application"

import com.android.build.OutputFile

/**

  • The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
  • and bundleReleaseJsAndAssets).
  • These basically call react-native bundle with the correct arguments during the Android build
  • cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
  • bundle directly from the development server. Below you can see all the possible configurations
  • and their defaults. If you decide to add a configuration block, make sure to add it before the
  • apply from: "../../node_modules/react-native/react.gradle" line.
  • project.ext.react = [
  • // the name of the generated asset file containing your JS bundle
  • bundleAssetName: "index.android.bundle",
  • // the entry file for bundle generation
  • entryFile: "index.android.js",
  • // whether to bundle JS and assets in debug mode
  • bundleInDebug: false,
  • // whether to bundle JS and assets in release mode
  • bundleInRelease: true,
  • // whether to bundle JS and assets in another build variant (if configured).
  • // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
  • // The configuration property can be in the following formats
  • // 'bundleIn${productFlavor}${buildType}'
  • // 'bundleIn${buildType}'
  • // bundleInFreeDebug: true,
  • // bundleInPaidRelease: true,
  • // bundleInBeta: true,
  • // whether to disable dev mode in custom build variants (by default only disabled in release)
  • // for example: to disable dev mode in the staging build type (if configured)
  • devDisabledInStaging: true,
  • // The configuration property can be in the following formats
  • // 'devDisabledIn${productFlavor}${buildType}'
  • // 'devDisabledIn${buildType}'
  • // the root of your project, i.e. where "package.json" lives
  • root: "../../",
  • // where to put the JS bundle asset in debug mode
  • jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
  • // where to put the JS bundle asset in release mode
  • jsBundleDirRelease: "$buildDir/intermediates/assets/release",
  • // where to put drawable resources / React Native assets, e.g. the ones you use via
  • // require('./image.png')), in debug mode
  • resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
  • // where to put drawable resources / React Native assets, e.g. the ones you use via
  • // require('./image.png')), in release mode
  • resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
  • // by default the gradle tasks are skipped if none of the JS files or assets change; this means
  • // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
  • // date; if you have any other folders that you want to ignore for performance reasons (gradle
  • // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
  • // for example, you might want to remove it from here.
  • inputExcludes: ["android/", "ios/"],
  • // override which node gets called and with what additional arguments
  • nodeExecutableAndArgs: ["node"],
  • // supply additional arguments to the packager
  • extraPackagerArgs: []
  • ]
    */

project.ext.react = [
entryFile: "index.js",
bundleAssetName: "app.bundle"
]

apply from: "../../node_modules/react-native/react.gradle"

/**

  • Set this to true to create two separate APKs instead of one:
    • An APK that only works on ARM devices
    • An APK that only works on x86 devices
  • The advantage is the size of the APK is reduced by about 4MB.
  • Upload all the APKs to the Play Store and people will download
  • the correct one based on the CPU architecture of their device.
    */
    def enableSeparateBuildPerCPUArchitecture = false

/**

  • Run Proguard to shrink the Java bytecode in release builds.
    */
    def enableProguardInReleaseBuilds = false

project.ext.vectoricons = [
iconFontNames: [ 'FontAwesome.ttf', 'icomoon.ttf' ] // Name of the font files you want to copy
]

apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"

android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion

defaultConfig {
    applicationId "com.carii.euphebe"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 24
    versionName "1.24"
    multiDexEnabled true
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
    vectorDrawables.useSupportLibrary = true
}
signingConfigs {
    release {
        if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
            storeFile file(MYAPP_RELEASE_STORE_FILE)
            storePassword MYAPP_RELEASE_STORE_PASSWORD
            keyAlias MYAPP_RELEASE_KEY_ALIAS
            keyPassword MYAPP_RELEASE_KEY_PASSWORD
        }
    }
}
dexOptions {
    javaMaxHeapSize "4g"
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86"
    }
}
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        signingConfig signingConfigs.release
    }
    debug {
        minifyEnabled enableProguardInReleaseBuilds
        signingConfig signingConfigs.release
    }
}
// applicationVariants are e.g. debug, release
applicationVariants.all { variant ->
    variant.outputs.each { output ->
        // For each separate APK per architecture, set a unique version code as described here:
        // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
        def versionCodes = ["armeabi-v7a":1, "x86":2]
        def abi = output.getFilter(OutputFile.ABI)
        if (abi != null) {  // null for the universal-debug, universal-release variants
            output.versionCodeOverride =
                    versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
        }
    }
}

}

dependencies {
implementation project(':rn-fetch-blob')
//implementation project(':react-native-firebase')
implementation project(':react-native-image-crop-picker')
implementation project(':react-native-youtube')
implementation project(':react-native-webview-bridge')
implementation project(':react-native-video')
implementation project(':react-native-spinkit')
implementation project(':react-native-image-picker')
implementation project(':react-native-config')
implementation project(':react-native-i18n')
implementation project(':react-native-vector-icons')
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation ("com.facebook.react:react-native:0.57.8") { force = true } // From node_modules
implementation "com.google.android.gms:play-services-base:16.0.1"
//implementation "com.google.firebase:firebase-core:16.0.4"
//implementation 'com.google.firebase:firebase-messaging:17.3.4'
implementation 'me.leolin:ShortcutBadger:1.1.21@aar'
implementation(project(':react-native-jitsi-meet')){
exclude group: 'com.facebook.react',module:'react-native-locale-detector'
exclude group: 'com.facebook.react',module:'react-native-vector-icons'
exclude group: 'com.facebook.react',module:'rn-fetch-blob'
//exclude group: 'com.facebook.react',module:'react-native-firebase'
}
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}

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

android/build.gradle :
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext {
buildToolsVersion = "27.0.3"
minSdkVersion = 19
compileSdkVersion = 27
targetSdkVersion = 26
supportLibVersion = "27.1.1"
}
repositories {
google()
jcenter()

    // mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.4'
    classpath 'com.google.gms:google-services:4.0.1'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}

allprojects {
repositories {
mavenLocal()
google()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
maven { // <---- Add this block
url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
}
maven { url "https://jitpack.io" }
}
}

subprojects {
if (project.name.contains('react-native-image-picker')) {
buildscript {
repositories {
jcenter()
maven { url "https://dl.bintray.com/android/android-tools/" }
}
}
}
}

task wrapper(type: Wrapper) {
gradleVersion = '4.4'
//distributionUrl = distributionUrl.replace("bin", "all")
}

Location of libRNJitsiMeet.a

Hi everyone. I want to thanks to all person who build this project. But, can you guys help me how to get location of "libRNJitsiMeet.a" in "Step 4. Link/Include Necessary Libraries" when i want to manual linking for iOS ?

I have build for android and running well. But in iOS there is error.

Thanks you!

Maybe the README needs a change ?

Hi !

For some reasons I recently had to reinstall 3 times every library in my application, which includes react-native-jitsi-meet, and I noticed that the README might be missing some instructions which would save time.

Here I put all the code I had to write in order to have react-native-jitsi-meet work in my app (and I am positively sure that it doesn't build without any of it) :

For Android :

In android/app/src/main/java/com/appname/MainApplication.java :

import com.reactnativejitsimeet.JitsiMeetPackage; 
import android.support.annotation.Nullable; //Add this line

In android/app/src/main/AndroidManifest.xml :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools" //Add this line

...

<application
      ...
      tools:replace="android:allowBackup">

In android/app/build.gradle :

android{ 
    ...

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

In android/build.gradle :

        minSdkVersion = 21 //Doesn't work with lower

Also for iOS :
Step 4 --> libstd++.tbd should be libc++.std

Hope that the README will be changed or at least that it will save some time to others

Appart from this, keep up the great work on the library, it's very useful 👍

Crash on Android, possible conflict with react-native-firebase plugin

I install your plugin in an app that uses react-native-firebase too.

I has not problems with firebase and recives notifications and messages without problems.

When I put a button on view and onPress call your example function the app crashes:

The code in react native app is:

JSX:
onPress={ () => {this.iniciaVideoLlamada()} }>

Js:

iniciaVideoLlamada = () => {
    JitsiMeet.initialize();
    JitsiMeetEvents.addListener('CONFERENCE_LEFT', (data) => {
      console.log('CONFERENCE_LEFT');
    });
    setTimeout(() => {
      JitsiMeet.call('https://meet.jit.si/pepe');
    }, 1000);
  }

The only change to your code is the url (and the function name)

The FATAL error that shows android studio is:

E/ReactNativeJS: RNFirebase core module was not found natively on Android, ensure you have correctly added the RNFirebase and Firebase gradle dependencies to your `android/app/build.gradle` file.
    
     See http://invertase.link/android for the android setup guide.
E/ReactNativeJS: Module AppRegistry is not a registered callable module (calling runApplication)
E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
    Process: com.eternity.nulesinfo, PID: 10629
    com.facebook.react.common.JavascriptException: RNFirebase core module was not found natively on Android, ensure you have correctly added the RNFirebase and Firebase gradle dependencies to your `android/app/build.gradle` file.
    
     See http://invertase.link/android for the android setup guide., stack:
    t@645:640
    <unknown>@645:2187
    v@2:1496
    d@2:949
    o@2:435
    <unknown>@644:127
    v@2:1496
    d@2:949
    o@2:435
    <unknown>@641:206
    v@2:1496
    d@2:949
    o@2:435
    <unknown>@466:354
    v@2:1496
    d@2:949
    o@2:435
    <unknown>@339:229
    v@2:1496
    d@2:949
    o@2:435
    <unknown>@11:58
    v@2:1496
    d@2:879
    o@2:435
    global code@884:4
    
        at com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:54)
        at com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:38)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
        at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:160)
        at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
        at android.os.Handler.handleCallback(Handler.java:836)
        at android.os.Handler.dispatchMessage(Handler.java:103)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
        at android.os.Looper.loop(Looper.java:203)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
        at java.lang.Thread.run(Thread.java:761)

The exact error place is in JitsiMeetView.class file, line 199

this.reactRootView.startReactApplication(ReactInstanceManagerHolder.getReactInstanceManager(), "App", props);

Any idea?, thanks in advance for your help (and this plugin too)

How can i detect other user join my room

I have some problem with detecting user join my room
i've listen to "CONFERENCE_JOINED" event but it trigger only when my phone join the room
not when my computer join the same room

Reason: image not found

Hi @skrafft , thank for building this lib.
I got an issue while embedding lib into my prj.
Here is log from xCode:
dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib
Referenced from: /private/var/containers/Bundle/Application/9F2AC667-CB5B-4F5D-8C21-3245281C8010/SNS.app/Frameworks/JitsiMeet.framework/JitsiMeet
Reason: image not found

How can I resolve this issue? Thanks

Picture in Picture Function

Hi,

I successfully added Jitsi to my project thanks to you, and it works great. Really appreciate it!
Now I'm trying to allow users to be able to see other contents within my app while they are on a video call (on Jitsi) by creating a floating view, by making Jitsi re-sizable, or at least by letting users to minimize it. I do see a little arrow up in the screen which I assume should be used for the picture in picture function, but it does not work. Is there anyway I can make it work?
Please guide me on how I should go about it.

Problem when compiling with react-native-image-crop-picker

Hi, I am trying to install the library and after installing and trying the behavior of run-native-run-android it shows me the following error.


* What went wrong:
There was a problem configuring the project ': react-native-image-crop-picker'.
> The android () method could not be found for the arguments [build_da19jjiwehyn3y6csdfr4tm2u $ _run_closure2 $ _closure7 $ _closure8 @ d02f582] in the project ': react-native-image-crop-picker' of type org.gradle.api.Project.

It seems to be incompatible with this library?

2018-10-12 15:00:34.803988-0400 OPTIC[18931:3761266] Load URL https://meet.jit.si/serviciosenlinea 2018-10-12 15:00:34.826396-0400 OPTIC[18931:3761076] Unknown class JitsiMeetView in Interface Builder file

Getting this error on ios any Idea here the complete log:

2018-10-12 15:00:34.804 [info][tid:com.facebook.react.RNJitsiMeetNavigatorManagerQueue][RNJitsiMeetNavigator.m:56] Load URL https://meet.jit.si/serviciosenlinea
2018-10-12 15:00:34.803988-0400 OPTIC[18931:3761266] Load URL https://meet.jit.si/serviciosenlinea
2018-10-12 15:00:34.826396-0400 OPTIC[18931:3761076] Unknown class JitsiMeetView in Interface Builder file.
2018-10-12 15:00:34.828725-0400 OPTIC[18931:3761076] -[UIView setDelegate:]: unrecognized selector sent to instance 0x7fef90c03130
2018-10-12 15:00:34.870963-0400 OPTIC[18931:3761076] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setDelegate:]: unrecognized selector sent to instance 0x7fef90c03130'
*** First throw call stack:
(
0 CoreFoundation 0x000000011106712b __exceptionPreprocess + 171
1 libobjc.A.dylib 0x000000010ff87f41 objc_exception_throw + 48
2 CoreFoundation 0x00000001110e8024 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3 UIKit 0x0000000113f11f51 -[UIResponder doesNotRecognizeSelector:] + 295
4 CoreFoundation 0x0000000110fe9f78 forwarding + 1432
5 CoreFoundation 0x0000000110fe9958 _CF_forwarding_prep_0 + 120
6 OPTIC 0x000000010c55d94a -[JitsiMeetViewController setDelegate:] + 106
7 OPTIC 0x000000010c55e319 __36-[RNJitsiMeetNavigatorManager call:]_block_invoke + 297
8 libdispatch.dylib 0x0000000115f8433d _dispatch_client_callout + 8
9 libdispatch.dylib 0x0000000115f913a0 _dispatch_sync_thread_bound_invoke + 386
10 libdispatch.dylib 0x0000000115f8433d _dispatch_client_callout + 8
11 libdispatch.dylib 0x0000000115f8f5f9 _dispatch_main_queue_callback_4CF + 628
12 CoreFoundation 0x0000000111029e39 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE + 9
13 CoreFoundation 0x0000000110fee462 __CFRunLoopRun + 2402
14 CoreFoundation 0x0000000110fed889 CFRunLoopRunSpecific + 409
15 GraphicsServices 0x0000000116cab9c6 GSEventRunModal + 62
16 UIKit 0x0000000113cde5d6 UIApplicationMain + 159
17 OPTIC 0x000000010c55d870 main + 112
18 libdyld.dylib 0x0000000116000d81 start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

leave conference manually

I noticed that the app crashes when I press the home button of the phone while I am in a meet conference and then open the app again.
(Error: 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported)
I assume, this is because the conference was not left properly and the view controller was not popped.
Do you know about a way to leave the conference that I can manually invoke when the app goes to background?

I have added this code to the JitsiMeetNavigator.m and I call leaveConference() when the App goes to the background, but that doesn't fix it.

{
  dispatch_sync(dispatch_get_main_queue(), ^{
    RCTLogInfo(@"Conference left");
    UIViewController* rootViewController = [[[[UIApplication sharedApplication]delegate] window] rootViewController];
    UINavigationController *navigationController = (UINavigationController *) rootViewController;
    [navigationController popViewControllerAnimated:NO];
  });
}```

could not resolve all files for configuration

hi,
i'm new to react native and i try to make an app lie WhatsApp with some communication
I've decided to use a jisti server for this and now i try to implement jitsi in my app thank to your module.
I've installed the library and followed your step but i cant builld the project

the terminal render an error like:

Task: app:preDebugBuild FAILED
Failure: Build failed with an exception
*What went wrong:
could not resolve all files for configuration ':app:debugCompileClasspath'.
Could not find org.webkit:android-jsc:r224109
Required by:
project :app > project :react-native-jitsi-meet

Can someone help me with this error or had the same output? :)

New JitsiMeet Api

Hi @skrafft

JitsiMeet has updated their api and now you can pass the options easily.

- (void)viewDidLoad {
  [super viewDidLoad];

  JitsiMeetView *jitsiMeetView = (JitsiMeetView *) self.view;
  jitsiMeetView.delegate = self;

  JitsiMeetConferenceOptions *options = [JitsiMeetConferenceOptions fromBuilder:^(JitsiMeetConferenceOptionsBuilder *builder) {
      builder.serverURL = [NSURL URLWithString:@"https://meet.jit.si"];
      builder.room = @"test123";
      builder.audioOnly = YES;
  }];

  [jitsiMeetView join:options];
}

I successfully created the Jitsi Frameword from the lagest code but when I add the above code in this library, it shows the following error:

Showing All Messages "_OBJC_CLASS_$_JitsiMeetConferenceOptions", referenced from: objc-class-ref in libRNJitsiMeet.a(JitsiMeetViewController.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

'React/RCTBridgeModule.h' file not found

RN: 60
node: 10.13.0
After i install and follow all the steps of manual installation on iOS it shows an error: 'React/RCTBridgeModule.h' file not found'. Untill now i can't find a solution, someone help me please?

nullable not find

/home/pranav/Desktop/myRepo/Rocket.Chat.ReactNative/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java:89: error: cannot find symbol
protected @nullable String getBundleAssetName() {
^
symbol: class Nullable
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 erro

Some questions

hi,buddy
this‘s great,and now I’m using it。
But is this have change displayname api and other jitsi-meet apis,
is this have a JitsiMeet.call()

display name

how can i change the display name when joining the chatroom? Thanks

Conference Fail with prosody security activated on server

Hello,

If the jitsi server has prosody security (user/pass os room creation) the conference fails.

The problem is that is not developed in maven 1.16 brach, but it is in 1.21.

there is a possibility that you update the plugin to use version 1.21?

(It works on 1.21, confirmed by Jitsi people)

JitsiMeetEvents "CONFERENCE_LEFT" event Not working

Hello Skraft,
I installed react-native-jitsi-meet and use it but I was not able to retrieve the data of a call with JitsiMeetEvents => CONFERENCE_LEFT.
I think the listenner does not even detect the end or the stop of the call.
Thank you for announcing me if there is any solution for this.

embedding jitsi meet latest version

Hi there,

Thank you for your contribution.

Jitsi meet has changed their api method for calling and and building room.

i have tried to use your wrapper with the latest jitsi meet version. since they have changed their api method to join and build the room. i was able to make some changes and joining the room was possible and jitsi meet was initialized properly. but the overflows like menu button or chat are not displaying on the screen. the buttons seems to work but they do not display. do you have any idea about that? or would you be releasing new version of your library working well with jitsi meet latest api

Can't make it work on Android

Hey Skrafft! I'm trying to make this lib work but I'm being unsuccessfull.

I've tried doing the guide

include ':WebRTCModule', ':app'
project(':WebRTCModule').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-jitsi-meet/android')

implementation(project(':react-native-jitsi-meet'))

but gradle keeps failing saying that it cant find raect-native-jitsi-meet project, should we replace WebRTCModule to react-native-jitsi-meet in gradle.settings like this?

include ':react-native-jitsi-meet', ':app'
project(':react-native-jitsi-meet').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-jitsi-meet/android')

implementation(project(':react-native-jitsi-meet'))

Also this way I'm missing something because it doesnt work :(

Thanks

error when building in a project

Hey skrafft,
I am getting the following error when integrating the library in an existing iOS-app.
Can it have something to do with react-native vector icons?

dyld: Symbol not found: _SDWebImageCoderScaleDownLargeImagesKey Referenced from: /Users/xxx/Library/Developer/CoreSimulator/Devices/8A86B9B8-BB3F-442F-8B1C-3DFCCEACEA3D/data/Containers/Bundle/Application/6D1163D1-68E6-492A-AC5F-5533B7C18C1A/xxx.app/xxx Expected in: /Users/xxx/Library/Developer/CoreSimulator/Devices/8A86B9B8-BB3F-442F-8B1C-3DFCCEACEA3D/data/Containers/Bundle/Application/6D1163D1-68E6-492A-AC5F-5533B7C18C1A/xxx.app/Frameworks/JitsiMeet.framework/JitsiMeet in /Users/xxx/Library/Developer/CoreSimulator/Devices/8A86B9B8-BB3F-442F-8B1C-3DFCCEACEA3D/data/Containers/Bundle/Application/6D1163D1-68E6-492A-AC5F-5533B7C18C1A/xxx.app/xxx

build ios device error [ clang: error: linker command failed with exit code 1 ]

Hello

I have configured your document about react-native-jitsi-meet.
I have experimented with my iphone and tried to adapt to your requirements.
Clang: error: linker failed with exit code 1 (use -v to see invocation)
I hope you can tell me the problem.

Did I show you my structure initially, right?
And I do not have the libstdc++.tbd I replaced it to libc++.tbd file.

2
3
4

Thank You

React Native Navigation V2

Hey @skrafft ,

I have successfully implemented your library on android with React-native-navigtaion. Bu i get the follwoing error on ios. Can you please help?

2019-02-14 00:25:54.608 [info][tid:com.facebook.react.RNJitsiMeetNavigatorManagerQueue][RNJitsiMeetNavigator.m:49] Initialize
2019-02-14 00:25:54.607719+0500 VideoApp[3176:725577] Initialize
2019-02-14 00:25:55.617 [info][tid:com.facebook.react.RNJitsiMeetNavigatorManagerQueue][RNJitsiMeetNavigator.m:56] Load URL https://meet.jit.si/test
2019-02-14 00:25:55.617744+0500 VideoApp[3176:726809] Load URL https://meet.jit.si/test
2019-02-14 00:25:55.618656+0500 VideoApp[3176:725382] -[RNNTabBarController pushViewController:animated:]: unrecognized selector sent to instance 0x109838000
2019-02-14 00:25:55.619398+0500 VideoApp[3176:725382] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RNNTabBarController pushViewController:animated:]: unrecognized selector sent to instance 0x109838000'
*** First throw call stack:
(0x1bc775ea4 0x1bb945a50 0x1bc68eb14 0x1e997e418 0x1bc77b7bc 0x1bc77d46c 0x104984e68 0x108704dc8 0x1087139a0 0x108704dc8 0x108712a78 0x1bc705ce4 0x1bc700bac 0x1bc7000e0 0x1be979584 0x1e9950c00 0x104130ed4 0x1bc1bebb4)
libc++abi.dylib: terminating with uncaught exception of type NSException

Android build failed due to gradle lint

Could not find lint-gradle-api.jar (com.android.tools.lint:lint-gradle-api:26.1.2).
Searched in the following locations:
    https://jcenter.bintray.com/com/android/tools/lint/lint-gradle-api/26.1.2/lint-gradle-api-26.1.2.jar

my android/build.gradle looks like this:

allprojects {
    repositories {
        // Add jitpack repository (added by tipsi-stripe)
        maven { url "https://jitpack.io" }
        mavenLocal()
        google()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        maven {
            url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
        }
    }
}

Error while updating property 'streamURL' of a view managed by: RTCVideoView

ONLY ! on android!

It works fine on IOS!

Update to Android version 28 and webrtc is not working.
2019-04-22 16:49:21.073 13561-13561/jp.co.neolab.calling.dev E/unknown:ViewManager: Error while updating prop streamURL java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:83) at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.java:132) at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:51) at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:37) at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:265) at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:200) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1109) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1080) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:166) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:869) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:616) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.IllegalArgumentException: Could not find @ReactModule annotation in com.oney.WebRTCModule.WebRTCModule at com.facebook.react.bridge.CatalystInstanceImpl.getNameFromAnnotation(CatalystInstanceImpl.java:438) at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:427) at com.facebook.react.bridge.ReactContext.getNativeModule(ReactContext.java:128) at com.oney.WebRTCModule.WebRTCView.getVideoTrackForStreamURL(WebRTCView.java:231) at com.oney.WebRTCModule.WebRTCView.setStreamURL(WebRTCView.java:541) at com.oney.WebRTCModule.RTCVideoViewManager.setStreamURL(RTCVideoViewManager.java:59) at java.lang.reflect.Method.invoke(Native Method) at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:83) at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.java:132) at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:51) at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:37) at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:265) at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:200) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1109) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1080) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:166) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:869) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:616) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) 2019-04-22 16:49:21.073 13561-13561/jp.co.neolab.calling.dev E/unknown:ReactNative: Exception in native call com.facebook.react.bridge.JSApplicationIllegalArgumentException: Error while updating property 'streamURL' of a view managed by: RTCVideoView at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:95) at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.java:132) at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:51) at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:37) at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:265) at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:200) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1109) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1080) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:166) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:869) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:616) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:83) at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.java:132) at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:51) at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:37) at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:265) at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:200) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1109) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1080) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:166) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:869) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:616) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) Caused by: java.lang.IllegalArgumentException: Could not find @ReactModule annotation in com.oney.WebRTCModule.WebRTCModule at com.facebook.react.bridge.CatalystInstanceImpl.getNameFromAnnotation(CatalystInstanceImpl.java:438) at com.facebook.react.bridge.CatalystInstanceImpl.getNativeModule(CatalystInstanceImpl.java:427) at com.facebook.react.bridge.ReactContext.getNativeModule(ReactContext.java:128) at com.oney.WebRTCModule.WebRTCView.getVideoTrackForStreamURL(WebRTCView.java:231) at com.oney.WebRTCModule.WebRTCView.setStreamURL(WebRTCView.java:541) at com.oney.WebRTCModule.RTCVideoViewManager.setStreamURL(RTCVideoViewManager.java:59) at java.lang.reflect.Method.invoke(Native Method) at com.facebook.react.uimanager.ViewManagersPropertyCache$PropSetter.updateViewProp(ViewManagersPropertyCache.java:83) at com.facebook.react.uimanager.ViewManagerPropertyUpdater$FallbackViewManagerSetter.setProperty(ViewManagerPropertyUpdater.java:132) at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:51) at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:37) at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:265) at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:200) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1109) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1080) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:166) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:869) at android.view.Choreographer.doCallbacks(Choreographer.java:683) at android.view.Choreographer.doFrame(Choreographer.java:616) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
56495312-95047680-651f-11e9-949d-9b68e3700da2

Screen Shot 2019-04-22 at 4 49 51 PM

56495304-903fc280-651f-11e9-977f-bac575952e20

Example

You can give me a working example? (iOS).

Clean Install getting Memory Read Failed on iOS device

I am attempting to run the react-native-jitsi-meet sdk wrapper on a clean react-native project that only has the jitsi-meet sdk wrapper added. Build's fine. I verified the dependencies and library inclusions. I am getting the following error:

xcode_error

This is all I have in the App.js file:
app_js

When I click the start button the error occurs. Any guidance would be great!

Would there be any issues running this on an iPad with iOS 10? I did set the deployment target to 8.

Realm has no setter or ivar for its bridge

@skrafft when I apply all the steps mentioned in the readme, I start getting the below realm error. Realm works fine otherwise.

2018-12-28 16:22:34.504 [error][tid:main][RCTModuleData.mm:179] Realm has no setter or ivar for its bridge, which is not permitted. You must either @synthesize the bridge property, or provide your own setter method.

"react-native": "0.57.8",
"realm": "^2.19.1"

realm works fine if I remove the library.

Android crash with Jitsi-Meet: Module AppRegistry is not a registered callable module (calling runApplication) - Jitsi-meet

I am using react-native-Jitsi-Meet dependency in android for one of my react native application. I setup everything in Android and calling initialize method from React Native. It always crashes on android saying
Module AppRegistry is not a registered callable module (calling runApplication)

Here is full crash log:

2019-05-23 19:42:17.157 9640-9722/com.telecare E/ReactNativeJS: null is not an object (evaluating 'M.Aspect')
2019-05-23 19:42:17.169 9640-9722/com.telecare E/ReactNativeJS: Module 

AppRegistry is not a registered callable module (calling runApplication)
2019-05-23 19:42:17.174 9640-9723/com.telecare E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
    Process: com.telecare , PID: 9640
    com.facebook.react.common.JavascriptException: null is not an object (evaluating 'M.Aspect'), stack:
    <unknown>@944:6009
    h@2:1670
    <unknown>@943:292
    h@2:1670
    <unknown>@942:280
    h@2:1670
    <unknown>@11:743
    h@2:1670
    d@2:868
    global code@1008:4

        at 
com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:54)
        at 

com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:38)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
        at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
        at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at 
com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
        at android.os.Looper.loop(Looper.java:164)
        at 

com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
        at java.lang.Thread.run(Thread.java:764)

Code I am using in Android which is being called from React-Native:

JitsiMeet.initialize();
     JitsiMeetEvents.addListener('CONFERENCE_LEFT', (data) => {
       console.log('CONFERENCE_LEFT');
     });
     JitsiMeetEvents.addListener('CONFERENCE_JOINED', (data) => {
       console.log('CONFERENCE_JOINED');
     });
     JitsiMeetEvents.addListener('CONFERENCE_WILL_JOIN', (data) => {
       console.log('CONFERENCE_WILL_JOIN');
     });
     setTimeout(() => {
       JitsiMeet.call("XXXX");
     }, 5000);

when this line JitsiMeet.call("XXXX"); is being called, it opens another screen and crash in android just after that.

Here is my Manifest:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 <permission android:name="com.telehealthcare.permission.JITSI_BROADCAST"
        android:label="Jitsi Meet Event Broadcast"
        android:protectionLevel="normal"></permission>
    <uses-permission android:name="com.telehealthcare.permission.JITSI_BROADCAST"/>

<application
    android:name=".MainApplication"
    android:icon="@drawable/logo"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<activity android:name="com.reactnativejitsimeet.JitsiMeetNavigatorActivity" />
</application>

Here is my app level build.gradle:

apply plugin: "com.android.application"

import com.android.build.OutputFile

project.ext.react = [
    entryFile: "index.js",
    bundleAssetName: "app.bundle",
]

apply from: "../../node_modules/react-native/react.gradle"

def enableSeparateBuildPerCPUArchitecture = false

def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.healthcare"
        minSdkVersion 21
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def versionCodes = ["armeabi-v7a":1, "x86":2]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}

dependencies {
    implementation project(':react-native-camera')
    implementation project(':react-native-cardview')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation 'com.facebook.fresco:animated-gif:1.10.0'
//    implementation project(':react-native-vector-icons')
    implementation project(':react-native-contacts')
 implementation project(':react-native-jitsi-meet')
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

Here is my project level build.gradle file:

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 21
        compileSdkVersion = 28
        targetSdkVersion = 26
        supportLibVersion = "27.1.1"
    }
    repositories {
        google()
        jcenter()
        maven { // <---- Add this block
            url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
        }
    }
    dependencies {
//        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath 'com.android.tools.build:gradle:3.3.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        mavenLocal()
        google()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        maven { // <---- Add this block
            url "https://github.com/jitsi/jitsi-maven-repository/raw/master/releases"
        }
    }
}


task wrapper(type: Wrapper) {
    gradleVersion = '4.4'
    distributionUrl = distributionUrl.replace("bin", "all")
}

I also made a sample application for android only using same jitsi-meet dependency for android and everything works well.

It has been 2 days I am trying to resolve this issue.
Any help will be appreciate!

Ios setup failed

Hii
Can you please help me out with this error in ios
dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib

The following binaries use incompatible versions of Swift:

The following binaries use incompatible versions of Swift:
/Users/username/Library/Developer/Xcode/DerivedData/projectname-fzxkxjqmxsouqfemxtbunkbsymhh/Build/Products/Debug-iphonesimulator/projectname.app/Frameworks/JitsiMeet.framework/JitsiMeet
/Users/username/Library/Developer/Xcode/DerivedData/projectname-fzxkxjqmxsouqfemxtbunkbsymhh/Build/Products/Debug-iphonesimulator/projectname.app/projectname

any solution to this problem only on ios it's works fine with android.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.