Unity 2018.4.6f1 버전에서 Admob 라이브러리 추가시 발생한 이슈와 해결 방법을 기록합니다.
이슈가 발생한 상황은 다음과 같습니다.
1. Admob 라이브러리를 추가하고 Debug 빌드에서 정상 구동을 확인했습니다.
2. Release를 하고 났더니 광고가 나오지 않고 Logcat을 확인해 보니 다음과 같은 에러가 발생중 입니다.
구글링을 해보니 Proguard 라는 키워드가 눈에 보입니다.
Project Settings > Player > Publishing Settings > Minify 에 Release 의 Proguard 설정이 걸립니다.
설정의 Minify 에서 Release 옵션을 Proguard 에서 None 으로 바꿔봅니다.
광고가 나옵니다. 아무래도 Proguard 에서 난독화 후 외부 라이브러리를 이용할때 문제가 되는 것 같습니다..
내 코드는 소중하니까 Proguard 를 끄지 않고 Admob 만 정상 작동시킬 수 있는 방법을 시도해 봅니다.
Unity 에서 Proguard 사용자 설정을 다음과 같은 방법으로 추가할 수 있습니다.
Project Settings > Player Settings > Publishing Settings > Build > User Proguard File 체크
해당 경로의 파일 (Assets/Plugins/Android/proguard-user.txt) 에 원하는 설정 추가
Proguard 사용자 설정에 관한 구글 공식 문서는 아래 링크에서 확인 가능합니다.
https://developer.android.com/studio/build/shrink-code?hl=ko
유지할 코드는 -keep 구문을 사용해서 사용자 설정 파일에 추가하면 된다고 설명해 주네요.
Proguard 사용자 설정 파일에 문제가 되는 class를 예외 처리 해 봅시다.
-keep public class com.google.android.gms.ads.initialization.OnInitializationCompleteListener |
에러의 내용이 바뀌었습니다. 하나씩 바꾸면 끝이 안날꺼 같습니다. 아무래도 com.google.android.gms.ads 쪽의 모든 것을 예외 처리해 주어야 할 것 같습니다.
다시 Proguard 사용사 설정을 바꿔 봅니다.
-keep public class com.google.android.gms.ads.** |
다른 에러가 발생합니다...
끝이 없네요.. 성공한 사람의 케이스를 찾아봅시다.
How to implement AdMob in Unity? A bit more detailed guide.
다음과 같이 추가하면 된다고 합니다.
-keep class com.google.unity.** { *; } -keep public class com.google.android.gms.ads.**{ public *; } -keep public class com.google.ads.**{ public *; } -keepattributes *Annotation* -dontobfuscate |
성공 이네요.
Proguard 옵션을 활성화 시키고 라이브러리 사용시 주의 해야 할 것 같습니다.
Proguard 에 대한 자세한 설명입니다. 궁금하면 참고.
'Works > Unity 3D' 카테고리의 다른 글
[Unity3D] Application Focus Out 상황에서 마우스 이벤트 (0) | 2019.08.22 |
---|---|
[Unity3D] Google Play Console 빌드 업로드 에러 (1) | 2019.08.21 |
[Unity 3D] 안드로이드 64bit 대응 (0) | 2019.08.05 |
[Unity3D] C# (0) | 2019.08.05 |
[Unity3D] error CS0103: The name `OnMakeBug' does not exist in the current context (0) | 2019.04.18 |
댓글