Unity supports native plug-ins for Android written in C/C++ and packaged in a shared library (.so) or a static library (.a). When using the IL2CPP scripting backend, you can use C/C++ source files as plug-ins and Unity compiles them along with IL2CPP generated files. This includes all C/C++ source files with extensions .c, .cc, .cpp and .h.
To build a C++ plug-in for Android, use the Android NDK and get yourself familiar with the steps required to build a shared library. The same applies to static libraries.
If you are using C++ to implement the plug-in, you must ensure the methods are declared with C linkage to avoid name mangling issues. By default, only the C source files that have a .c file extension in the plug-ins have C linkage (not C++).
extern "C" {
float Foopluginmethod ();
}
After building the library, copy the output .so file(s) into the Assets/Plugins/Android directory in your Unity project. In the Inspector, mark your .so files as compatible with Android, and set the required CPU architecture in the dropdown box:
To call the methods in your native plug-in from within your C# scripts, use the following code:
[DllImport ("pluginName")]
private static extern float Foopluginmethod();
Note that pluginName should not include the prefix (‘lib’) or the extension (‘.so’) of the filename. It is recommended to wrap all the native plug-in method calls with an additional C# code layer. This code checks Application.platform and calls native methods only when the app is running on the actual device; dummy values are returned from the C# code when running in the Editor. Use platform defines to control platform dependent code compilation.
When you use C/C++ source files as plug-ins, you call them from C# in the same way except that you use __Internal
for plug-in name, for example:
[DllImport ("__Internal")]
private static extern float Foopluginmethod();
The AndroidNativePlugin.unitypackage zip file contains a simple example of a native code plug-in distributed as Unity package.
The sample shows how to invoke C++ code from a Unity application. The package includes a scene which displays the sum of two values as calculated by the native plug-in. To compile the plug-in must install the Android NDK.
To install the sample: