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 같은걸 사용해도 되겠네요. 실제로도 프로젝트에 정식으로 적용한 플러그인은 그런식으로 처리를 했습니다.


댓글
댓글 쓰기