Instruction of running webrtc_unity_plugin on Android Unity

1. On Linux machine, compile target webrtc_unity_plugin.
   Checkout WebRTC codebase: fetch --no-hooks webrtc_android
   If you already have a checkout for linux, add target_os=”android” into .gclient file.
      Run gclient sync
      Run gn args out/Android, and again set target_os=”android” in the args.gn
      Run ninja -C out/Android webrtc_unity_plugin

2. On Linux machine, build target libwebrtc_unity under webrtc checkout. This is the java code for webrtc to work on Android.

3. Copy libwebrtc_unity.jar and libwebrtc_unity_plugin.so into Unity project folder, under Assets/Plugins/Android folder.

4. Rename libwebrtc_unity_plugin.so to libjingle_peerconnection_so.so. This is hacky, and the purpose is to let the java code in libwebrtc_unity.jar to find their JNI implementations. Simultaneously, in your C# wrapper script for the native plugin libjingle_peerconnection_so.so, the dll_path should be set to “jingle_peerconnection_so”.

5. In the Unity Main Scene’s Start method, write the following code to initialize the Java environment for webrtc (otherwise, webrtc will not be able to access audio device or camera from C++ code):

#if UNITY_ANDROID
    AndroidJavaClass playerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    AndroidJavaObject activity = playerClass.GetStatic<AndroidJavaObject>("currentActivity");
    AndroidJavaClass utilityClass = new AndroidJavaClass("org.webrtc.UnityUtility");
    utilityClass.CallStatic("InitializePeerConncectionFactory", new object[1] { activity });
#endif

6. Compile the unity project into an APK, and decompile the apk using apktool that you can download from https://ibotpeaches.github.io/Apktool/
    Run apktool d apkname.apk.
Then copy the AndroidManifest.xml in the decompiled folder to the Assets/Plugins/Android folder, and add two lines:
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.CAMERA" />

The purpose of using apktool is to get a well-written android manifest xml file. If you know how to write manifest file from scratch, you can skip using apktool.

7. Compile the unity project into an APK again and deploy it to an android device.
