91 마켓 플랫폼 SDK와 바이두 Duoku SDK 통합시 충돌사항
The method dkLogin(Activity, DkProCallbackListener.OnLoginProcessListener) in the type DkPlatform is not applicable for the arguments (Activity, new NdMiscCallbackListener.OnLoginProcessListener(){}) MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 545 Java Problem
The method onLoginProcess(int) of type new NdMiscCallbackListener.OnLoginProcessListener(){} must override or implement a supertype method MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 548 Java Problem
The type new NdMiscCallbackListener.OnLoginProcessListener(){} must implement the inherited abstract method NdMiscCallbackListener.OnLoginProcessListener.finishLoginProcess(int) MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 545 Java Problem
GameNoll과 91 마켓, 그리고 바이두 Duoku 3개를 하나의 유니티3D 안드로이드 플러그인으로 통합하던중 에러가 발생했었습니다. 현재는 여기다가 UC Game 총 4개를 하나로 통합을 한 상태이긴합니다. 보통은 마켓별로 빌드를 따로 하지 않을까 하는데 저희 팀은 통합해서 하나의 플러그인으로 가자고 일정이 정해졌기에 이런 이슈가 있었습니다.
The method finishLoginProcess(int) of type new DkProCallbackListener.OnLoginProcessListener(){} must override or implement a supertype method MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 203 Java Problem
The type new DkProCallbackListener.OnLoginProcessListener(){} must implement the inherited abstract method DkProCallbackListener.OnLoginProcessListener.onLoginProcess(int) MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 201 Java Problem
The method ndLogin(Context, NdMiscCallbackListener.OnLoginProcessListener) in the type NdCommplatform is not applicable for the arguments (Activity, new DkProCallbackListener.OnLoginProcessListener(){}) MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 201 Java Problem
The import com.nd.commplatform.NdMiscCallbackListener.OnLoginProcessListener collides with another import statement MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 25 Java Problem
둘다 임포트하면 위와 같은 에러가 추가되구요.
눈치채셨겠지만 위 스샷과 같이 다른 소스파일에 분리해서 구현해주고 호출해 사용하면 됩니다. 샘플이다보니 MainActivity.java라는 곳에 몽땅 넣어서 구현해서 생긴 문제였던거죠. DkDuokuLoginListener.java라고 바이두 Duoku SDK중 Login관련 기능만 따로 뺀 싱글턴 클래스를 만들었습니다.
The method onLoginProcess(int) of type new NdMiscCallbackListener.OnLoginProcessListener(){} must override or implement a supertype method MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 548 Java Problem
The type new NdMiscCallbackListener.OnLoginProcessListener(){} must implement the inherited abstract method NdMiscCallbackListener.OnLoginProcessListener.finishLoginProcess(int) MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 545 Java Problem
GameNoll과 91 마켓, 그리고 바이두 Duoku 3개를 하나의 유니티3D 안드로이드 플러그인으로 통합하던중 에러가 발생했었습니다. 현재는 여기다가 UC Game 총 4개를 하나로 통합을 한 상태이긴합니다. 보통은 마켓별로 빌드를 따로 하지 않을까 하는데 저희 팀은 통합해서 하나의 플러그인으로 가자고 일정이 정해졌기에 이런 이슈가 있었습니다.
import com.nd.commplatform.NdMiscCallbackListener.OnLoginProcessListener; //import com.duoku.platform.DkProCallbackListener.OnLoginProcessListener;위 91과 바이두 sdk import부분을 보면 비슷한다못해 최종 클래스 이름이 똑같다는 걸 볼 수 있습니다. 91과 바이두가 충돌이 발생하는거죠. 꼭 유니티3D 안드로이드 플러그인이 아니라 일반 이클립스 안드로이드 프로젝트에서 통합을 해도 같은 이슈가 있을 듯 합니다.
//import com.nd.commplatform.NdMiscCallbackListener.OnLoginProcessListener; import com.duoku.platform.DkProCallbackListener.OnLoginProcessListener;이런식으로 import를 바꿔줘봐야
The method finishLoginProcess(int) of type new DkProCallbackListener.OnLoginProcessListener(){} must override or implement a supertype method MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 203 Java Problem
The type new DkProCallbackListener.OnLoginProcessListener(){} must implement the inherited abstract method DkProCallbackListener.OnLoginProcessListener.onLoginProcess(int) MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 201 Java Problem
The method ndLogin(Context, NdMiscCallbackListener.OnLoginProcessListener) in the type NdCommplatform is not applicable for the arguments (Activity, new DkProCallbackListener.OnLoginProcessListener(){}) MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 201 Java Problem
이런 다른 에러만 날뿐입니다.
The import com.nd.commplatform.NdMiscCallbackListener.OnLoginProcessListener collides with another import statement MainActivity.java /WWFoeverGameNoll91DK/src/com/wwfoevergamenoll91dk line 25 Java Problem
눈치채셨겠지만 위 스샷과 같이 다른 소스파일에 분리해서 구현해주고 호출해 사용하면 됩니다. 샘플이다보니 MainActivity.java라는 곳에 몽땅 넣어서 구현해서 생긴 문제였던거죠. DkDuokuLoginListener.java라고 바이두 Duoku SDK중 Login관련 기능만 따로 뺀 싱글턴 클래스를 만들었습니다.
private void DuokuLoginRequest() { runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub DkDuokuLoginListener.getInstance().DuokuLogin(); /* // 로그인 요청과 로그인 리스너 등록 DkPlatform.getInstance().dkLogin(UnityPlayer.currentActivity, new OnLoginProcessListener() { @Override public void onLoginProcess(int arg0) { // TODO Auto-generated method stub switch(arg0) { // 로그인 성공 case DkErrorCode.DK_LOGIN_SUCCESS: Log.d(LOG_TAG, "DK_LOGIN_SUCCESS"); //DkBaseUserInfo baseInfo = DkPlatform.getInstance().dkGetMyBaseInfo(UnityPlayer.currentActivity); //Log.d(LOG_TAG, "UID == " + baseInfo.getUid() + ", SESSIONID == " + baseInfo.getSessionId()); break; // 네트워크 불량 case DkErrorCode.DK_LOGIN_FAILED_BAD_NET: Log.d(LOG_TAG, "DK_LOGIN_FAILED_BAD_NET"); break; // 타임 아웃 case DkErrorCode.DK_LOGIN_FAILED_NET_TIME_OUT: Log.d(LOG_TAG, "DK_LOGIN_FAILED_NET_TIME_OUT"); break; // 데이터 에러 case DkErrorCode.DK_LOGIN_FAILED_DATA_ERROR: Log.d(LOG_TAG, "DK_LOGIN_FAILED_DATA_ERROR"); break; // 서버 에러 case DkErrorCode.DK_LOGIN_FAILED_SERVER_FAIL: Log.d(LOG_TAG, "DK_LOGIN_FAILED_SERVER_FAIL"); break; // 계정 id 또는 패스워드 에러 case DkErrorCode.DK_LOGIN_FAILED_USERNAME_OR_PWD_ERROR: Log.d(LOG_TAG, "DK_LOGIN_FAILED_USERNAME_OR_PWD_ERROR"); break; default: Log.d(LOG_TAG, "onLoginProcess Error" + arg0); break; } UnityPlayer.UnitySendMessage("GameNoll91DKManager", "DuokuLoginResult_J", Integer.toString(arg0)); } }); */ } }); }주석은 기존에 충돌이 발생하는 부분이고 그 위에 DkDuokuLoginListener를 사용하는 것처럼 해주면 되겠죠. 꼭 싱글턴이 아니더라도 Handler와 Message 같은걸 사용해도 되겠네요. 실제로도 프로젝트에 정식으로 적용한 플러그인은 그런식으로 처리를 했습니다.
댓글
댓글 쓰기