Developer Guide (Mobile)
Welcome to the developers guide for mobile applications! This guide will help you setup a development environment to start working on the Jitsi Meet applications.
IMPORTANT: Building the applications is not supported on Windows.
Overview
Jitsi Meet can be built as a standalone app for Android or iOS. It uses the React Native framework.
First make sure the React Native dependencies are installed.
NOTE: Node 12.X and npm 6.X are required. NOTE: Xcode 12 is required.
iOS
- Install dependencies
Install main dependencies:
npm install
Install the required pods (CocoaPods must be installled first, it can be done with Homebrew:
brew install cocoapods
)cd ios pod install cd ..
Build the app
There are 2 ways to build the app: using the CLI or using Xcode. Using Xcode is recommended.
Using the CLI:
react-native run-ios --device
When the app is launched from the CLI the output can be checked with the following command:
react-native log-ios
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 output logs the application creates.
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
The React Native dependencies page has very detailed information on how to setup Android Studio and the required components for getting the necessary build environment. Make sure you follow it closely.
Building the app
The app can be built using the CLI utility as follows:
react-native run-android
It will be launched on the connected Android device.
Debugging
The official documentation on debugging is quite extensive and specifies the preferred method for debugging.
NOTE: 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.