Как собрать нативный адроид плагин для Unity?
Я новичок в юнити. Что у меня есть - нативная статическая адроидовская библиотека с которой я работаю в приложении через JNI. Мне нужно взять эту библиотеку и сделать из нее андроид плагин для юнити.
Мне кажется, что это должно выглядеть так, собираем aar файл в андроид студии вместе с JNI интегрируем в юнити и используем вот так
using UnityEngine;
public class PluginTest : MonoBehaviour
{
const string pluginName = "com.myapp.unity.MyPlugin";
static AndroidJavaClass _pluginClass;
static AndroidJavaObject _pluginObject;
public static AndroidJavaClass PluginClass
{
get
{
if(_pluginClass == null)
{
_pluginClass = new AndroidJavaClass(pluginName);
}
return _pluginClass;
}
}
public static AndroidJavaObject PluginInstance
{
get
{
if(_pluginObject == null)
{
_pluginObject = PluginClass.CallStatic<AndroidJavaObject>("getInstance");
}
return _pluginObject;
}
}
// Start is called before the first frame update
void Start()
{
Debug.Log($"Elapsed time : {getElapsedTime()}");
}
float elapsedTime = 0f;
// Update is called once per frame
void Update()
{
elapsedTime += Time.deltaTime;
if(elapsedTime >= 5)
{
elapsedTime -= 5;
Debug.Log($"Tick : {getElapsedTime()}");
}
}
double getElapsedTime()
{
if(Application.platform == RuntimePlatform.Android)
{
return PluginInstance.Call<double>("getElapsedTime");
}
Debug.LogWarning("Wrong platform");
return 0;
}
}
Как показано в этом видео https://www.youtube.com/watch?v=bmNMugkOQBI
Но, что мне не нравиться в этом подходе это то, что вызов метода из нетив будет выглядеть вот так - вызываем метод в C# скрипте он обращается к aar JNI и JNI уже вызывает нативный метод.
Мне кажется, что это должно быть так - собираем натив либу в андроид студии без JNI добавляем ее в юнити и юнити уже напрямую вызывает нативные методы.
В целом вопрос в том, как правильно связать нативный код для андроид плагина в юнити?