It seems creating plugin for Android is easier than iOS. Less boilerplate code, and research time. In iOS, major time is to spend finding a way to pass and do random access to array. I found it to pass as pointer, accept on C# as IntPtr and do random access on array via addition of size of data type (struct is easiest) to pointer and cast it via MarShal.PtrToStructure. It works but lots of boilerplate code. In Android, it seems like AndroidJavaProxy is the way to go to inherit that class to accept return response back from API. Then it's all yours. Just properly parse data and send back. Lots less boilerplate code. Interesting question is why on Android has less boilerplate code. It might be because of using AndroidJavaProxy that helps and contain everything we want. But I ever looked at JNI. To be honest, that's a lot more to get to work and it's low level than this. Good JNI example is Flurry for cocos2dx at https://github.com/diwu/AnalyticX.