Как собрать нативный адроид плагин для 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 добавляем ее в юнити и юнити уже напрямую вызывает нативные методы.

В целом вопрос в том, как правильно связать нативный код для андроид плагина в юнити?


Ответы (0 шт):