Janus Mobile SDK

Mobile SDK for interacting with Janus instance.

Contribution Guide

This guide is mostly for macOS users, if you found your way to build it on windows or linux feel free to open a PR!

Apple

System Requirements

It only requires XCode and the iOS target triplets

rustup target add \
    aarch64-apple-ios \
    x86_64-apple-ios \
    aarch64-apple-ios-sim

Swift Package Manager

We're using SPM (swift package manager), a limitation while using an xcframework locally is having to specify the path, which doesn't play well when publishing on remote. A work around for this limitation is to set the useLocalFramework to true and return it back to false before pushing.

Building

To generate swift bindings run:

make apple

This will generate the swift bindings and create an xcframework with the built rust static libraries.

Releasing

Similar to the building command but we should pass --release

make apple -- --release

This will create a ZIP archive of the xcframework and update Package.swift with the computed checksum. This is only needed when cutting a new release, not for local development.

Android

System Requirements

Android Studio

Follow the installation instructions on the official website

Java

Install java 17

brew install --cask zulu@17

NDK (native development kit)

We're writing native code so NDK is required for this task, and we're using cargo-ndk

To install cargo-ndk run:

cargo install cargo-ndk

And add the android target triplets

rustup target add \
    aarch64-linux-android \
    armv7-linux-androideabi \
    x86_64-linux-android \
    i686-linux-android

And to install the NDK itself, in Android studio open SettingsLanguages & FrameworksAndroid SDKSDK Tools

Check the Show Package Details and pick NDK (Side by side) version 23.1.7779620

android studio ndk

Add to Path

Add the following lines to your ~/.zprofile or ~/.zshrc (if you are using bash, then ~/.bash_profile or ~/.bashrc) config file:

export ANDROID_HOME=$HOME/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/platform-tools
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/23.1.7779620

Run source ~/.zprofile (or source ~/.bash_profile for bash) to load the config into your current shell. Verify that ANDROID_HOME has been set by running echo $ANDROID_HOME and the appropriate directories have been added to your path by running echo $PATH.

Please make sure you use the correct Android SDK path. You can find the actual location of the SDK in the Android Studio "Settings" dialog, under Languages & Frameworks → Android SDK.

Building

Change directory into the android directory and run:

./gradlew :bindings:assembleDebug

This will generate the kotlin bindings and link .so files to the jni directory.

Documentation

We're using mdbook as a general purpose documentation tool. Run cargo install mdbook to install it. And to run it open the docs directory in terminal and run mdbook server --open.