목차

반응형

유니티의 애드몹은 안내가 매우 친절해서 딱히 가이드까지 올릴 필요는 없지만 가이드에 나와있지 않은 오류들을 설명하고자 한다.

 

유니티 애드몹 광고 출시 버전 모아놓은 곳

https://github.com/googleads/googleads-mobile-unity/releases

 

googleads/googleads-mobile-unity

Official Unity Plugin for the Google Mobile Ads SDK - googleads/googleads-mobile-unity

github.com

 

2019년 8월 1일 기준 유니티 애드몹 최신 버전은 3.18.2다.

적용도중 발생한 오류들을 기재하겠다.

 

목차

1. 애드몹 패키지 resolve 오류

2. 앱 빌드, 실행 시 AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener 오류

3. 앱 빌드, 실행 시 java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException 오류

4. 광고 테스트 시 유의 사항

 

 

1. 애드몹 패키지 resolve 오류

애드몹 패키지 임포트 후 android dependency resolve 과정

 

android resolve 도중 오류 발생

유니티 애드몹 패키지 임포트를 하면 알아서 android resolve를 진행하지만 위와 같이 Resoultion failed가 발생하면서 정상적으로 유니티 애드몹 패키지의 설치가 되지 않는다.

이 에러를 무시하고 빌드를 하게 되면 본문의 2번 오류로 이어질 가능성이 높다.

해당 에러 메시지가 난 후 Assets\Plugins\Android 경로로 이동해서 jar, aar 파일이 충분히 있는지 확인해보자

본인은 resolution failed 에러로 인하여 jar 파일과 aar 라이브러리 파일이 충분히 설치되지 않아서 빌드하고 실행하면 에러로 이어졌다.

정상적으로 설치가 되었다면 아래와 같이 파일들이 있어야 한다.

유니티 애드몹 패키지 정상 설치

해결 방법

간단하다. 현재 본인이 설치한 유니티 애드몹 패키지보다 높거나 낮은 버전으로 설치해본다.

본인은 2019.1.8f1 버전으로 Google Mobile Ads Unity Plugin v3.18.2를 설치했으나 위의 오류가 발생해서

3.18 버전으로 설치했더니 잘 작동했다.

https://github.com/googleads/googleads-mobile-unity/releases/tag/3.18.0

 

googleads/googleads-mobile-unity

Official Unity Plugin for the Google Mobile Ads SDK - googleads/googleads-mobile-unity

github.com

 

 

2. 앱 빌드, 실행 시 AndroidJavaException: java.lang.ClassNotFoundException: com.google.android.gms.ads.initialization.OnInitializationCompleteListener 오류

1번의 연장선상의 문제인데 이 에러는 되게 자주 보는데 설치가 정상적으로 안됐을때 뿐만 아니라 설치를 정상적으로 했지만 라이브러리에 필수 요소가 빠져있거나 하면 자주 만나는 오류 메시지다.

스스로 원인을 파악하고 해결 방법을 찾아내는 방법 과정에 대해서 말하겠다.

 

저 오류 메시지는 라이브러리 파일안에 OnInitializationCompleteListener 클래스가 없어서 발생하는 오류다.

일단 Assets\Plugins\Android 폴더로 가면 aar 파일과 jar 파일이 있다.(본인의 경우 해당 오류가 발생했을때 unity-plugin-library.jar 파일 하나밖에 없었다.)

파일을 압축해제 프로그램으로 열어보면

 

해당 라이브러리는 com.google.unity.ads 형식의 구조를 가지고 있음을 알고 있다.

아까 오류 메시지에서는 com.google.android.gms.ads.initialization.OnInitializationCompleteListener이라고 했으니까 구조가 달라도 한참 다르다는 것을 알 수있다.

(이번에 발생한 오류는 위의 오류가 아니지만 jar 파일들을 뒤지다가 오류와 똑같은 구조지만 에러가 발생하는 경우는 라이브러리의 버전이 달라서 발생하는 오류다.)

그렇다면 도대체 어떤 라이브러리를 받아야 저 클래스가 있는지 확인해보도록 하자

 

확인하는 방법은 maven 라이브러리 사이트로 가서 해당 구조를 검색하면 된다.

https://mvnrepository.com/artifact/

 

Maven Repository: com.google.android.gms » play-services-ads

 

mvnrepository.com

 

어느정도 상위 구조에서 검색을 한다. com.google.android.gms로 검색을 하였다.

검색 결과가 매우 많다. gms 아래에 다양한 서비스가 존재해서 그렇다.

그 중에 우리는 ads에 대하여 설치를 했지만 오류가 생긴것이니까 3번째가 가장 의심된다. 들어가보도록 하자

 

다양한 버전이 있는데 최신 버전을 눌러보자

 

Gradle을 선택하고 하단에 가보면 저렇게 다양한 하위 라이브러리들이 존재함을 알 수 있다.

분명 저중에 하나의 라이브러리는 com.google.android.gms.ads.initialization.OnInitializationCompleteListener 클래스를 가지고 있을 것 이다.

하지만 나한테는 지금 하나의 jar 파일밖에 없으니까 라이브러리의 설치가 정상적으로 진행되지 않았음을 짐작할 수 있다.

시도해볼수있는 방법은 저 라이브러리를 수동으로 다운받아서 넣어주거나 gradle에다가 넣어서 설치해봐도 되지만 android resolve 과정에서 오류가 났기 때문에 쉽게 해결될 오류가 아니라서 유니티 애드몹 버전을 낮추거나 높여서 설치해보도록 하자.

 

 

3. 앱 빌드, 실행 시 java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException 오류

 

앱을 빌드하고 실행하면 바로 종료되면서 아래 오류가 발생한다.

 

유니티 애드몹 키값을 입력하지 않아서 발생하는 문제다.

 

위의 경로로 따라가서 app id를 기입해주면 정상작동 한다.

 

4. 광고 테스트 시 유의 사항

요건 나도 몰랐던건데 애드몹에서 광고 작동 테스트를 하려고 광고 호출할때는 항상 테스트 광고를 사용하라는 경고가 있다.

광고를 탭하지 않아도 정지당할 수 있다니까 꼭 유의해야겠다.

반응형