빈 프로젝트를 생성한다.
Name, Package name을 변경하고,
Mininum SDK를 설정한다.
(유니티에 설정된 버전과 동일해야 한다.)
File -> New -> New Module로 새 모듈을 생성한다.
Android Library를 선택하고 Module name을 입력한다.
유니티 폴더 경로에서 classes.jar 파일을 찾는다.
유니티폴더\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Classes
plugin에 libs 폴더를 만들고 classes.jar 파일을 복사한다.
plugin의 Gradle 파일에 .jar 파일에 대한 컴파일을 추가한다.
compileOnly(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
package com.mrw0119.plugin;
import android.app.Activity;
import android.widget.Toast;
import com.unity3d.player.UnityPlayer;
public class UnityPlugin
{
private static UnityPlugin _instance;
private static Activity _context;
public static UnityPlugin instance()
{
if (_instance == null) {
_instance = new UnityPlugin();
_context = UnityPlayer.currentActivity;
}
return _instance;
}
public void showToast(String text)
{
_context.runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(_context, text, Toast.LENGTH_LONG).show();
}
});
}
}
Build -> Make Module 모듈을 빌드한다.
build 폴더에 aar 파일이 생성된 것을 확인할 수 있다.
aar 파일을 유니티의 plugins 폴더로 복사한다.
유니티 테스트용 스크립트를 작성한다.
using UnityEngine;
using UnityEngine.UI;
public class AndroidPluginSample : MonoBehaviour
{
public AndroidJavaObject PluginInstance { get; private set; }
public Button toastButton;
void Awake()
{
var pluginClass = new AndroidJavaClass("com.mrw0119.plugin.UnityPlugin");
PluginInstance = pluginClass.CallStatic<AndroidJavaObject>("instance");
toastButton.onClick.AddListener(OnToastClick);
}
void OnToastClick()
{
PluginInstance.Call("showToast", "!!!TEST!!!");
}
}
UI 버튼을 만들고 스크립트를 연결한다.
Minimum API Version을 맞춰주고 Android 빌드한다.