카카오 아이디로 로그인 java.lang.NoClassDefFoundError

안녕하세요.

유니티 프로젝트에 카카오 아이디로 로그인을 구현하기위해, 아래 있는 내용과 샘플앱을 보면서 aar 플러그인을 만들었습니다.
https://developers.kakao.com/docs/android/user-management#로그인

  1. GlobalApplication.java 파일입니다. (뒤에 내용은 예제 그대로 가져와서 생략했습니다.)

     public class GlobalApplication extends Application {
         private static volatile GlobalApplication instance = null;
         private static volatile Activity currentActivity = null;
    
         public static GlobalApplication getInstance() {
             UnityPlayer.UnitySendMessage("KakaoSDK", "KakaoCallback", "GAgetInstance");
             if(instance == null) {
                 instance = new GlobalApplication();
             }
             return instance;
         }
    
         // 유니티에서 호출
         public void onCreate() {
             UnityPlayer.UnitySendMessage("KakaoSDK", "KakaoCallback", "GAonCreate");
             super.onCreate();
             instance = this;
             KakaoSDK.init(new KakaoSDKAdapter());           // 이 부분에서 에러가 납니다.
         }
        ...
    
  2. KakaoSDKAdapter.java 파일입니다. KakaoAdapter를 상속받았습니다.

    public class KakaoSDKAdapter extends KakaoAdapter {
    
        @Override
        public ISessionConfig getSessionConfig() {
            return new ISessionConfig() {
                @Override
                public AuthType[] getAuthTypes() { return new AuthType[] {AuthType.KAKAO_LOGIN_ALL}; }
    
                @Override
                public boolean isSecureMode() { return false; }
    
                @Override
                public boolean isUsingWebviewTimer() { return false; }
    
                @Override
                public ApprovalType getApprovalType() { return ApprovalType.INDIVIDUAL; }
    
                @Override
                public boolean isSaveFormData() { return true; }
           };   
        }    
    
        @Override
        public IApplicationConfig getApplicationConfig() {
            return new IApplicationConfig() {
                @Override
                public Context getApplicationContext() { return GlobalApplication.getGlobalApplicationContext(); }
            };
        }
    }
    
  3. 프로젝트 build.gradle 파일입니다.

    ...
    
    allprojects {
        repositories {
            google()
            jcenter()
            mavenCentral()
            maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/'}
        }
    }
    
    ...
    
  4. app의 build.gradle 파일입니다.

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion 27
        defaultConfig {
            minSdkVersion 21
            targetSdkVersion 27
            multiDexEnabled true
        }
        dexOptions {
            javaMaxHeapSize = "4g"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs', exclude: ["unity-classes.jar"])
        implementation 'com.android.support:appcompat-v7:27.1.1'
        implementation 'com.android.support.constraint:constraint-layout:1.1.1'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        // kakao login
        implementation group: project.KAKAO_SDK_GROUP, name: 'usermgmt', version: project.KAKAO_SDK_VERSION
        implementation 'com.android.support:multidex:1.0.0'
        compileOnly files('libs/unity-classes.jar')
    }
    

이렇게 하여 생성한 aar 플러그인을 유니티에서 임포트 후에, 유니티에서 안드로이드 빌드까지 문제가 없습니다.
생성된 apk에서 로그인 버튼을 누르면 GlobalApplication.java에 있는 KakaoSDK.init(new KakaoSDKAdapter()); 를 호출하는데 다음과 같은 에러 메시지가 뜹니다.

AndroidJavaException: java.lang.NoClassDefFoundError: company.test.kakaosdk.KakaoSDKAdapter
E/Unity   (13573): java.lang.NoClassDefFoundError: company.test.kakaosdk.KakaoSDKAdapter
E/Unity   (13573): 	at company.test.kakaosdk.GlobalApplication.onCreate(GlobalApplication.java:60)
E/Unity   (13573): 	at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
....

생성한 java 파일들 위치
image

External Library들 위치
image
안드로이드 스튜디오에서 빌드 시에도 아무 문제가 없는데, 왜 앱에서 클래스를 불러올 수 없는지 궁금합니다 ㅠㅠ

오래된 질문이지만 혹시라도 검색해보시는 분들을 위해… aar 은 리소스는 포함되지만 라이브러리는 포함이 안됩니다.
그래서 auth.aar, common.aar, usermgmt.aar, util.aar, network.aar 등 필요한 aar 라이브러리를 함께 포함시켜줘야 합니다…
unity 같은경우엔 assets/resources/plugins/android 폴더에 저 aar 파일들을 추가해줘야 겠죠…

다운은 여기서 최신버전으로…
http://devrepo.kakao.com:8088/nexus/content/repositories/kakaodev-releases/com/kakao/sdk/