| Index: webrtc/examples/unityplugin/ANDROID_INSTRUCTION
 | 
| diff --git a/webrtc/examples/unityplugin/ANDROID_INSTRUCTION b/webrtc/examples/unityplugin/ANDROID_INSTRUCTION
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..d782e9423468cc97b8f06041a86079153cf8e44a
 | 
| --- /dev/null
 | 
| +++ b/webrtc/examples/unityplugin/ANDROID_INSTRUCTION
 | 
| @@ -0,0 +1,33 @@
 | 
| +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
 | 
| +   Modify file src/build/android/android_only_jni_exports.lst, to expose all functions. Namely, change "global" section to "*", and remove "local" section. Otherwise, Unity C# code will not be able to access the functions defined in the plugin.
 | 
| +   Run ninja -C out/Android webrtc_unity_plugin
 | 
| +
 | 
| +2. On Linux machine, compile 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. Again, this is hacky, and the purpose is to let the java code in libwebrtc.jar to find their JNI implementation. And 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 webrtcClass = new AndroidJavaClass("org.webrtc.PeerConnectionFactory");
 | 
| +        if (webrtcClass != null)
 | 
| +        {
 | 
| +            webrtcClass.CallStatic("initializeAndroidGlobals", new object[2] { activity, false });
 | 
| +        }
 | 
| +#endif
 | 
| +
 | 
| +6. Compile the unity project into an APK, and decompile the apk using apktool you can download from internet. And copy the AndroidManifest.xml 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.
 | 
| 
 |