블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

이거 해결하려고 죽는줄 알았다........


이번 게임을 제작하면서 facebook sdk plugin과 googlePlay sdk plugin 을 함께 사용하였다. 


이클립스에 손안대고 쉽게 코딩을 하려 plugin을 사용하였는데 생각지도 못했던 AndroidManifest.xml에서의 Activity충돌 문제가 발생하였다. 


AndroidManifest.xml에서 무언가 답이 있지 않을까 고민하여...

수정하고 빌드돌리고 폰에 넣고.. 테스트하고.. 

수정하고 빌드돌리고 폰에 넣고.. 테스트하고.. 

수정하고 빌드돌리고 폰에 넣고.. 테스트하고.. 

수정하고 빌드돌리고 폰에 넣고.. 테스트하고.. 

수정하고 빌드돌리고 폰에 넣고.. 테스트하고.. 

안된다. 그 어떤 방법을 해보아도 안된다.. ㅋㅋ



그리고 많은 사이트와 많은 구글링을 통하여 힌트를 얻었다. 


그리하여 내가 얻은 결론은,

나만의 MainActivity를 작성하여야 한다!!!!!!!

진리다! 방법 없다. 

귀찮아도 어쩔수없다. 거진 3일을 소비하여 다른방법을 갈구해 보았으나 없다. 방법은 이것뿐이다!!!!


생각보단 양이 되어 보이지만 따라하다보면 금방 해결할 수 있을 것이다.



참고한 사이트

나와 동일한 문제. 허나 이대로하면 문제있음.

http://stackoverflow.com/questions/18970822/conflict-with-activity-tags-on-android-manifest-facebook-and-google-play-games/18971204#18971204


Activity생성방법

http://sungho0459.blog.me/40167910950


우선 위의 두 링크를 참고하길 바란다.


첫번째 링크에서 보면 아래와 같이 설명하고 있다.


import android.content.Intent;
import android.os.Bundle;
import com.facebook.Session;

public class MyMainUnityPlayerActivity extends com.bfsgooglegames.GoogleGamesUnityPlayerActivity {
  @Override
  protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
  } 
}

근데 이대로하면 역시나 문제 생긴다.


이유는 facebook.Session자체가 아직 null이기 때문이다!!!! 



그러므로 완성되어야할 소스는 바로,


package com.snowberry01.blockbind;

import android.content.Intent;
import android.os.Bundle;
import com.facebook.Session;
import com.unity3d.player.UnityPlayerNativeActivity;

public class MainActivity extends UnityPlayerNativeActivity {
  @Override
  protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    
    if( null != Session.getActiveSession() )
    {	
    	Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }
  } 
}


이리하여 아무런 문제없이 facebook sdk와 googlePlay sdk를 함께 사용하였다.

( 참고로 위의 소스는 실제 나의 소스에서 발취한 것 )


그리고 AndroidManifest.xml는, (그외 다른 소스부분은 뺏음)


<activity android:name="com.snowberry01.blockbind.MainActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" /> </activity> <activity android:name="com.facebook.unity.FBUnityPlayerActivity" android:label="@string/app_name" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"> </activity>


보면 FBUnityPlayerActivity를 메인으로 두질 않아도 잘 된다.



이거 해결하느라 정말 죽는 줄 알았다......



ps - 도움이 되셨으면 제가 만든 게임좀 받아주시고.... (아래에 링크)

(구걸.. 전체다운수 40개도안됨;;) 리뷰 한줄 부탁드립니다!!^^


구글플레이 링크

https://play.google.com/store/apps/details?id=com.snowberry01.blockbind



출처 : http://snowberrydev.tistory.com/2

반응형

'Unity3D > Tips' 카테고리의 다른 글

[펌] Find references in scene  (0) 2016.02.26
Texture, Resource.... and Memory!!  (0) 2016.01.07
유니티 admob 클릭이 안되는 경우  (0) 2016.01.04
Animation(Legacy) 최적화  (0) 2015.11.16
코루틴(Coroutine)++  (0) 2015.10.19
Posted by blueasa
, |