Developer Guide for Jitsi Meet
This guide will help you setup a development environment to start working on the Jitsi Meet mobile app itself.
Building the apps / SDKs is not supported on Windows.
Overview
This guide is about building the Jitsi Meet apps themselves. If you want to integrate the Jitsi Meet SDK into your own application check the dedicated page on the sidebar.
Jitsi Meet can be built as a standalone app for Android or iOS. It uses the React Native framework.
First make sure the following dependencies are installed:
watchman
nodejs
npm
Node 20.x and npm 10.x are required. Any other version may result in runtime errors.
Xcode 15 or higher is required.
iOS
- Install dependencies
-
Install main dependencies:
npm install
-
Install the required pods (CocoaPods must be installed first, it can be done with Homebrew:
brew install cocoapods
)cd ios
pod install
cd ..
-
Build the app using Xcode
-
Open
ios/jitsi-meet.xcworkspace
in Xcode. Make sure it's the workspace file! -
Select your device from the top bar and hit the Play ▶️ button.
When the app is launched from Xcode, the Debug Console will show the application output logs.
-
-
Other remarks
It's likely you'll need to change the bundle ID for deploying to a device. This can be changed in the General tab. Under Identity set Bundle Identifier to a different value, and adjust the Team in the Signing section to match your own.
Android
Make sure Android Studio is installed.
Set the JDK in Android Studio to at least Java 11: https://developer.android.com/studio/intro/studio-config#jdk
Adding extra dependencies
Due to how our project is structured, React Native's automatic linking won't work so Android dependencies need to be manually linked.
First, add your project to android/settings.gradle
like so:
include ':react-native-mydependency'
project(':react-native-mydependency').projectDir = new File(rootProject.projectDir, '../node_modules/@somenamespace/react-native-mydependency/android')
Then add a dependency on android/sdk/build.gradle
like so:
implementation project(':react-native-mydependency')
Last, link it in the getReactNativePackages
method in android/sdk/src/main/java/org/jitsi/meet/sdk/ReactInstanceManagerHolder.java
like so:
new com.companyname.library.AwesomeLibraryPackage(),
Make sure you adjust the fully qualified package name.
Debugging
The official documentation on debugging is quite extensive and specifies the preferred method for debugging.
When using Chrome Developer Tools for debugging the JavaScript source code is being interpreted by Chrome's V8 engine, instead of JSCore which React Native uses. It's important to keep this in mind due to potential differences in supported JavaScript features. Also note Jitsi Meet does not support Flipper.