Unity3D Baidu MobAds 광고뷰가 보이지 않는다면

 유니티3D 안드로이드에 중국 바이두의 광고 SDK인 Baidu MobAds를 연동 중 뷰가 보이지 않는 증상이 있었습니다. 플러그인 작업하면서 수많은 이슈를 겪어봐서 금방 처리될 줄 알았는데 의외로 시간 좀 걸렸네요. 일단 삽질기를 정리하고 따로 튜토리얼을 정리하겠습니다.

 기본적으로 이클립스에서 jar를 만들어 유니티3D에서 안드로이드 빌드하는 플러그인 방식으로 작업했었습니다. RelativeLayout으로 해봤다가 LinearLayout 해봤다가, AndroidManifest.xml도 다시 살펴보고 LayoutParams 이 잘 못 된 건가 등등 삽질을 했었죠. 답답해서 안드로이드 기본 EditText를 붙여보니 잘 나오더군요. 그래서 커스텀 뷰를 붙이는 코드는 이상이 없다는 결론을 내렸습니다.

 다음으로 SDK에 포함된 데모를 실행해보니 아래와 같은 로그가 나오더군요.

DexOpt: --- BEGIN '__pasys_remote_banner.jar' (bootstrap=0) ---
DexOpt: --- END '__pasys_remote_banner.jar' (success) ---
DEX prep '/data/data/com.baidu.mobads.demo.unzip in 12ms, rewrite 468ms
Baidu Mobads SDK Core Version:  3.68
您现在是debug模式,在测试完毕正式发布时,务必替换成正确的APPSID和计费名!
exp sn 2864 at http://mobads.baidu.com/ads/js/exp.js:1
exp e2: nth 13 [6500, 7000) at http://mobads.baidu.com/ads/js/exp.js:1
exp trunk 3.8.9 at http://mobads.baidu.com/ads/js/exp.js:1
onAdReady com.baidu.mobads.AdView@410e8b50
DexOpt: sleeping on flock(/data/data/com.baidu.mobads.demo.main/files/__pasys.dex)
11-27 14:33:52.360: W/(28004): onAdSwitch

 제가 작업한 플러그인에서는 볼 수 없던 로그였습니다. Baidu_MobAds_SDK.jar 파일 압축 해제하면 extra 폴더에 __pasys_remote_banner.jar 가 있는데 이것을 Plugins\Android 나 하위로 extra 폴더를 추가해서 복사해 테스트 해봤지만 안되더군요. 안드로이드 dexopt라는 것과 관련이 있는 것 같네요.

 삽질 끝에 좀 더 안드로이드 친화?적인 이클립스에서 유니티3D 안드로이드 프로젝트를 빌드하는 방식으로 했더니 되는군요.

 이 방식으로 하는데도 유니티3D가 버전업 하면서 생긴 이슈인지 임시 StagingArea 프로젝트가 기존에 정리했을 때는 UnityPlayerProxyActivity였는데 지금은 UnityPlayerNativeActivity 입니다. 안드로이드 최소 지원 SDK 버전이 9 이상이면 NativeActivity를 상속받으면서 UnityPlayerNativeActivity로 되는 것 같습니다. 또한 기존에는 assets\libs 를 복사해줬었는데 이제는 assets\bin 만 복사해주면 되는군요.

 어쨌든 다음에는 기존에 정리했던 2가지 방식의 플러그인 말고 유니티3D 4.x 되면서 지원하는 Google Android Project 체크 옵션을 사용해서 바이두 MobAds 광고 SDK 적용하는 것을 정리해보겠습니다. 어떻게 보면 2가지 방식의 하이브리드라고 할 수 있겠네요.

 유니티3D에서 플러그인 작업을 한다면 개인적으로는 유니티3D에서 안드로이드 빌드하는 것 보다는 이클립스에서 빌드하는 방식이 나중에 이런저런 플러그인 때문에 더 좋은 것 같네요.

이 블로그의 인기 게시물

CMake Windows에 설치하기

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

Unity3D 안드로이드 Keystore 생성하기