SchildiChat-android/docs/jitsi.md
2023-05-02 14:38:40 +02:00

4 KiB

Jitsi in Element Android

Native Jitsi support has been added to Element Android by the PR #1914. The description of the PR contains some documentation about the behaviour in each possible room configuration.

Also, ensure to have a look on the documentation from Element Web

The official documentation about how to integrate the Jitsi SDK in an Android app is available here: https://jitsi.github.io/handbook/docs/dev-guide/dev-guide-android-sdk.

Native Jitsi SDK

The Jitsi SDK is built by ourselves with the flag LIBRE_BUILD, to be able to be integrated on the F-Droid version of Element Android.

The generated maven repository is then host in the project https://github.com/vector-im/jitsi_libre_maven

How to build the Jitsi Meet SDK

Jitsi version

Update the script ./tools/jitsi/build_jisti_libs.sh with the tag of the project https://github.com/jitsi/jitsi-meet.

Latest tag can be found from this page: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md

Currently we are building the version with the tag android-sdk-8.1.1.

Run the build script

At the root of the Element Android, run the following script:

./tools/jitsi/build_jisti_libs.sh

It will build the Jitsi Meet Android library and put every generated files in the folder /tmp/jitsi

  • Update the file ./build.gradle to use the previously created local Maven repository. Currently we have this line:
url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-8.1.1"

You can uncomment and update the line starting with // url "file://... and comment the line starting with url, to test the library using the locally generated Maven repository.

  • Update the dependency of the Jitsi Meet library in the file ./vector/build.gradle. Currently we have this line:
api('org.jitsi.react:jitsi-meet-sdk:8.1.1')
  • Update the dependency of the WebRTC library in the file ./vector/build.gradle. Currently we have this line:
implementation('com.facebook.react:react-native-webrtc:111.0.0-jitsi-13672566@aar')
  • Perform a gradle sync and build the project
  • Perform test

Sanity tests

In order to validate that the upgrade of the Jitsi and WebRTC dependency does not break anything, the following sanity tests have to be performed, using two devices:

  • Make 1-1 audio call (so using WebRTC)
  • Make 1-1 video call (so using WebRTC)
  • Create and join a conference call with audio only (so using Jitsi library). Leave the conference. Join it again.
  • Create and join a conference call with audio and video (so using Jitsi library) Leave the conference. Join it again.

Export the build library

If all the tests are passed, you can export the generated Jitsi library to our Maven repository.

url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-8.1.1"
  • Build the project and perform the sanity tests again.

  • Create a PR for project Element Android and add a changelog file <PR_NUMBER>.misc to notify about the library upgrade.