버그 해결을 위한 모든 질문을 던져
0 votes
91 views
안녕하세요. 유니티에서 안드로이드 플러그인 함수를 호출 시 함수를 찾을 수 없는 문제가 있어 질문을 드립니다.

환경 : 유니티 2020.3.6f1

오류 내용:

AndroidJavaException: java.lang.NoSuchMethodError: no static method with name='kakaoLogin' signature='()V' in class Lcom.pe.blueangel.ys.farmer.kakaoplugin;
09-24 23:18:31.896  9677  9701 E Unity   : java.lang.NoSuchMethodError: no static method with name='kakaoLogin' signature='()V' in class Lcom.pe.blueangel.ys.farmer.kakaoplugin;

 

파일 트리:

Assets

  - Plugins

      - Android

          - globalapplication.kt

          - kakaoplugin.kt

kakaoplugin.kt

class kakaoplugin : UnityPlayerActivity()
{
    var TAG = "Unity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        Log.d(TAG, "KakaoPlugin onCreate");
    }

    fun kakaoLogin()
    {
        Log.i(TAG, "Call kakaoLogin")
    }
}
 

유니티에서 함수 호출

        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject unityActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

        if (unityActivity != null)
        {
            AndroidJavaClass toastClass = new AndroidJavaClass("android.widget.Toast");
            unityActivity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
            {
                AndroidJavaObject toastObject = toastClass.CallStatic<AndroidJavaObject>("makeText", unityActivity, "TEST CODE", 0);
                toastObject.Call("show");
            }));
        }

        unityActivity.Call("kakaoLogin");

* Toast  창은 정상적으로 출력이 됩니다.

unityActivity.Call("kakaoLogin"); 호출시 함수를 찾을 수 없는 오류가 발생합니다.

AndroidManifest.xml

      <activity android:name="com.pe.blueangel.ys.farmer.kakaoplugin"
               android:theme="@style/UnityThemeSelector">

        <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
      </activity>
      
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
        <!--    <meta-data android:name="unityplayer.UnityActivity" android:value="true" />  -->
        </activity>
 

kakaoplugin 클래스를 메인으로 잡고

Log.d(TAG, "KakaoPlugin onCreate"); 함수가 호출되는것 을 확인했습니다.

이 후 안드로이드에서 currentActivity 를 가져와서  kakaoLogin 함수를  call 하면 함수를 찾을 수 없다는 오류가 뜹니다.

함수 호출 방법을 변경해서 해봤는데 동일한 오류가 발생합니다.

androidPlugin = new AndroidJavaObject("com.pe.blueangel.ys.farmer.kakaoplugin");

androidPlugin.Call("kakaoLogin");

 

androidPlugin 값이  null이 아닌것으로 봐선 정상적으로 가져온것으로 판단이 되는데 함수 호출 시 오류가 발생합니다.

제가 놓친 부분이나 접근 방법에 대해서 알고 계신분 있으신가요?

 

미리 감사합니다.(__)
asked (2 point) , 91 views

1 답변

+1 vote
에러를 잘 보시면 no static method with name='kakaoLogin'

스태틱 함수를 호출해야됩니다.

코틀린에선 companion object 안에 넣으면 static으로 인식하나보네요.

 

https://forum.unity.com/threads/calling-kotlin-static-method.949770/
answered (107 point)

버그 해결을 위해 도움을 구하고, 도움을 주세요. 우리는 그렇게 발전합니다.

throw bug 는 프로그래밍에 대한 전분야를 다룹니다. 질문,논의거리,팁,정보공유 모든 것이 가능합니다. 프로그래밍과 관련이 없는 내용은 환영받지 못합니다.

533 질문
687 answers
674 댓글
118,203 users