- Home /
managed unity plugin with native ios (framework) and android (aar) files
I have iOS framework and Android aar files and they work well with Unity as unmanaged plugins. To simplify the usage of my libraries, I want to create a wrapper unity plugin for the unmanaged iOS and Android plugins.
So unity apps will call this one method in this wrapper plugin which will then call the corresponding methods in the native libraries.
Is this possible?
Answer by devgirlllllll · Apr 17, 2019 at 05:54 AM
Yes, this is possible. Since you're already using the native libraries, it sounds like you already know how to call the native functions from Unity. So, what you want to do is create an interface for you plugin that will be the same across both platforms:
interface IWidget {
void DoSomething();
}
The next step is to create Android and iOS specific implementations of that interface:
class iOSWidget : IWidget {
public void DoSomething() {
// Call into your native iOS code
}
}
class AndroidWidget : IWidget {
public void DoSomething() {
// Call into your native Android code
}
}
Next, create a factory class that provides the right implementation based on the platform:
class WidgetFactory {
public IWidget GetInstance() {
#if UNITY_IOS
return new iOSWidget();
#elif UNITY_ANDROID
return new AndroidWidget();
#else
throw new System.Exception("Unsupported platform");
#endif
}
Finally, in your application, you can use the factory to get an instance of your plugin interface and use it in a platform-agnostic way:
var widget = WidgetFactory.GetInstance();
widget.DoSomething();
If you don't want to deal with using the factory in your application code, you could create another implementation of the interface that does that for you, like this:
class MultiPlatformWidget : IWidget {
public void DoSomething() {
WidgetFactory.GetInstance().DoSomething();
}
}
Your answer
Follow this Question
Related Questions
Passing large Vector array to native plugin without copying 2 Answers
Unity 5 Managed DLL considered Native 0 Answers
Can I use preprocessor directives (e.g. UNITY_5) in a managed plugin? 1 Answer
Import (mixed assembly) managed C++/CLI DLL plugin 0 Answers
Add UIView to any Unity UI element (or maybe just to Transform) via some tricky wrapper? 0 Answers