2020-08-17 16:03:43 +08:00
# Jitsi in Element Android
2022-05-30 20:34:32 +08:00
<!-- - TOC -->
2022-05-30 20:35:11 +08:00
* [Native Jitsi SDK ](#native-jitsi-sdk )
* [How to build the Jitsi Meet SDK ](#how-to-build-the-jitsi-meet-sdk )
* [Jitsi version ](#jitsi-version )
* [Run the build script ](#run-the-build-script )
* [Link with the new generated library ](#link-with-the-new-generated-library )
* [Sanity tests ](#sanity-tests )
* [Export the build library ](#export-the-build-library )
2022-05-30 20:34:32 +08:00
<!-- - END -->
2023-12-13 18:01:40 +08:00
Native Jitsi support has been added to Element Android by the PR [#1914 ](https://github.com/element-hq/element-android/pull/1914 ). The description of the PR contains some documentation about the behaviour in each possible room configuration.
2020-08-17 16:03:43 +08:00
2023-12-13 18:01:40 +08:00
Also, ensure to have a look on [the documentation from Element Web ](https://github.com/element-hq/element-web/blob/develop/docs/jitsi.md )
2020-08-17 16:03:43 +08:00
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.
2022-05-30 20:34:32 +08:00
## Native Jitsi SDK
2020-08-17 16:03:43 +08:00
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.
2023-12-13 18:01:40 +08:00
The generated maven repository is then host in the project https://github.com/element-hq/jitsi_libre_maven
2020-08-17 16:03:43 +08:00
2022-05-30 20:34:32 +08:00
### How to build the Jitsi Meet SDK
2020-08-17 16:03:43 +08:00
2022-05-30 20:34:32 +08:00
#### Jitsi version
2020-08-17 16:03:43 +08:00
Update the script `./tools/jitsi/build_jisti_libs.sh` with the tag of the project `https://github.com/jitsi/jitsi-meet` .
2022-03-29 19:26:41 +08:00
Latest tag can be found from this page: https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md
2023-05-02 20:29:41 +08:00
Currently we are building the version with the tag `android-sdk-8.1.1` .
2020-08-17 16:03:43 +08:00
2022-05-30 20:34:32 +08:00
#### Run the build script
2020-08-17 16:03:43 +08:00
At the root of the Element Android, run the following script:
```shell 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`
2022-05-30 20:34:32 +08:00
#### Link with the new generated library
2020-08-17 16:03:43 +08:00
- Update the file `./build.gradle` to use the previously created local Maven repository. Currently we have this line:
```groovy
2023-12-13 18:01:40 +08:00
url "https://github.com/element-hq/jitsi_libre_maven/raw/main/android-sdk-8.1.1"
2020-08-17 16:03:43 +08:00
```
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.
2021-02-10 19:15:32 +08:00
- Update the dependency of the Jitsi Meet library in the file `./vector/build.gradle` . Currently we have this line:
2020-08-17 16:03:43 +08:00
```groovy
2023-05-02 20:29:41 +08:00
api('org.jitsi.react:jitsi-meet-sdk:8.1.1')
2020-08-17 16:03:43 +08:00
```
2021-02-10 19:15:32 +08:00
- Update the dependency of the WebRTC library in the file `./vector/build.gradle` . Currently we have this line:
2020-08-17 16:03:43 +08:00
```groovy
2023-05-02 20:29:41 +08:00
implementation('com.facebook.react:react-native-webrtc:111.0.0-jitsi-13672566@aar')
2020-08-17 16:03:43 +08:00
```
- Perform a gradle sync and build the project
- Perform test
2022-05-30 20:34:32 +08:00
#### Sanity tests
2020-08-17 16:03:43 +08:00
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.
2022-05-30 20:34:32 +08:00
#### Export the build library
2020-08-17 16:03:43 +08:00
If all the tests are passed, you can export the generated Jitsi library to our Maven repository.
2023-12-13 18:01:40 +08:00
- Clone the project https://github.com/element-hq/jitsi_libre_maven.
2020-08-17 16:03:43 +08:00
- Create a new folder with the version name.
- Copy every generated files form `/tmp/jitsi` to the folder you have just created.
2023-12-13 18:01:40 +08:00
- Commit and push the change on https://github.com/element-hq/jitsi_libre_maven.
2020-08-17 16:03:43 +08:00
- Update the file `./build.gradle` to use the previously created Maven repository. Currently we have this line:
```groovy
2023-12-13 18:01:40 +08:00
url "https://github.com/element-hq/jitsi_libre_maven/raw/main/android-sdk-8.1.1"
2020-08-17 16:03:43 +08:00
```
- Build the project and perform the sanity tests again.
2022-05-31 03:07:26 +08:00
- Create a PR for project Element Android and add a changelog file `<PR_NUMBER>.misc` to notify about the library upgrade.