안드로이드 개발 팁 블로그

com.google.android.gms:play-services-ads:17.0.0 Update 시 주의점 본문

Android Tip

com.google.android.gms:play-services-ads:17.0.0 Update 시 주의점

tiii 2018.10.15 15:35


안드로이드 admob 라이브러리가 17.0.0으로 업데이트 되었습니다.

https://developers.google.com/admob/android/rel-notes

기존에 사용하고 있던 앱에 build.gradle을 수정 하면서 경험한 몇가지 주의점을 적어 봅니다.

 버전 업데이트를 할 겸 기존에 사용하고 있던 라이브러리들도 다 같이 버전을 올렸습니다.

 

기존 사용 버전

implementation 'com.google.firebase:firebase-core:16.0.3'
implementation 'com.google.firebase:firebase-messaging:17.3.2'
implementation 'com.google.firebase:firebase-perf:16.1.0'
implementation 'com.google.firebase:firebase-ads:15.0.1

업데이트한 버전

implementation 'com.google.firebase:firebase-core:16.0.4'
implementation 'com.google.firebase:firebase-messaging:17.3.3'
implementation 'com.google.firebase:firebase-perf:16.1.2'
implementation 'com.google.firebase:firebase-ads:17.0.0'


Sync를 누르면

Failed to notify dependency resolution listener.

The library com.google.android.gms:play-services-base is being requested by various other libraries at [[15.0.1,15.0.1]], but resolves to 16.0.1. Disable the plugin and check your dependencies tree using ./gradlew :app:dependencies.

[버전이 다른 라이브러리가 쓰였다. 라는 오류]

역시 기대했던 대로 한방에 되는 일이 별로 없군요. -_ㅠ


gradle 설정 파일이 정상적이지 않으면 gradlew로 디펜던시 트리를 확인 할 수가 없습니다. 

일일히 추가 된 라이브러리를 주석 처리하거나 기존에 정상적으로 컴파일이 된 것을 보고 일일 해보는 수밖게...ㅜㅜ


원인은 같이 사용하고 있던 firebase-ui-firestore 라이브러리가 문제 였습니다.

firebase-ui-firestore:4.2.0

ㄴ com.google.firebase » firebase-firestore:17.1.0

ㄴ com.google.android.gms » play-services-base:15.0.1


기존에 4.1 버전을 사용하다가 4.2로 같이 최신으로 업데이트를 했으나 참조되는 라이브러리가 15.0.1이였던 것..-_ㅠ

아래와 같이 firebase-ui에서 참조하고 있는 firebase관련 라이브러리를 최신으로 추가하여 오버 라이딩 해줍니다.


implementation group: 'com.google.firebase', name: 'firebase-firestore', version: '17.1.1' implementation group: 'com.google.firebase', name: 'firebase-auth', version: '16.0.4' implementation group: 'com.google.firebase', name: 'firebase-storage', version: '16.0.3'


그리고 싱크하면 그레들 파일은 정상적으로 컴파일 됩니다.



앱을 실행하면 강제 종료 당하면서 콘솔 창에 아래와 같이 출력 됩니다.

 java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException: 

    

    ******************************************************************************

    * The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers    *

    * should follow the instructions here: https://goo.gl/fQ2neu to add a valid  *

    * App ID inside the AndroidManifest. Google Ad Manager publishers should     *

    * follow instructions here: https://goo.gl/h17b6x.                           *

    ******************************************************************************


17버전으로 업데이트 하면서 메니페스트 파일이 반드시 메타데이터를 넣도록 수정되었습니다.

https://developers.google.com/admob/android/quick-start#update_your_androidmanifestxml

<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>

위와 같이 애드몹의 앱 id를 넣도록 강제 되었습니다. -_ㅠ


부디 테스트 후에 배포 하시기 바랍니다.



0 Comments
댓글쓰기 폼