반응형

안녕하세요. 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.)

+ Recent posts