안녕하세요. Simple& Happy Dev입니다.
최근에 Google Mobile Ads(AdMob) API 버전이 17.0.0으로 업데이트되었습니다.
기존 15.0.1에서 17.0.0으로 업데이트하려고 하는데 에러가 발생했고, 해결방법에 대해서 적어봅니다.
build.gradle (Module) 파일에 가보면 15.0.1 버전이 하이라이트 되어서 새 버전이 존재한다는 것을 알려주고 있습니다.
(Android Lint의 Obsolete Gradle Dependency Detector가 체크된 경우에 해당)
"com.google.android.gms:play-services-ads:17.0.0"으로 수정 후 Sync를 해줍니다.
그런데, 아래와 같이 Sync 에러 메시지가 나왔습니다.
일단 Dependency tree를 확인해봅니다.
Terminal 실행 후 아래와 같이 명령을 입력합니다.
저장된 dependencies.txt 파일을 열어서 보면 dependency 확인이 가능합니다.
Sync 에러 메시지에 나왔던 "com.google.android.gms:play-services-basement"는 com.google.android.gms:play-services-ads 뿐만 아니라 다른 곳에서도 Dependency가 있는 것을 확인할 수 있습니다.
com.google.android.gms:play-services-ads 외에 Dependency가 확인된 다른 곳의 API 라이브러리도 같이 업데이트를 해줍니다.
보통 구글에서는 Dependency를 고려서 관련된 API 라이브러리를 같이 업데이트해주기 때문에 위의 경우 문제가 된 firebase-core도 하이라이트 되어서 새 버전이 존재한다는 것을 알려주고 있습니다.
이것도 새 버전인 "com.google.firebase:firebase-core:16.0.4"로 수정 후 Sync해주면 Sync error가 발생하지 않습니다.
다시 빌드를 하면 정상적으로 빌드됩니다.
하지만, 앱이 실행되면 AdMob이 초기화될 때 아래와 같이 RuntimeException으로 Force Close 처리됩니다.
로그에 보면 AndroidManifest에 App ID를 추가해야 한다고 되어 있습니다.
(https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml)
이번에 업데이트된 17.0.0 버전부터는 AdMob UI에서 App ID를 찾을 수 있게 하기 위해서 추가해줘야 합니다.
사이트에 가보면 아래와 같이 추가해줘야 한다고 나옵니다.
<from Google AdMob site>
여기서 [ADMOB_APP_ID] 부분에 ca-app-pub-3940256099942544~3347511713 와 같은 형식의 App ID를 넣어줍니다.
※App ID는 "AdMob(https://apps.admob.com/) - 앱 - 앱 설정"에 가면 확인할 수 있습니다.
<manifest>
<application>
<!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="[ADMOB_APP_ID]"/>
</application>
</manifest>
위에 추가만 해주시면 앱에서 오류 없이 AdMob이 정상적으로 동작하는 것을 확인하실 수 있습니다.
감사합니다.
조금이나마 도움이 되셨으면 아래 ♡공감 버튼을 눌러주세요.
(If this article helps you, please press the ♡button below.)