앱에 AdMob 배너 광고를 달기 위한 사전 준비를 해보자.
1. 필요 패키지 의존성 추가 (firebase_admob)
pubspec.yaml 에 firebase_admob 의존성을 추가하자.
...
dependencies:
...
firebase_admob: ^0.10.3 # admob
...
2. 애드몹 Application ID, Unit ID 준비
먼저, 애드몹 사이트에서 어플리케이션과 배너 광고 유닛을 만들어야 한다.
우리는 일단 개발 검증용 테스트 ID 를 사용하자.
테스트 App ID | ca-app-pub-3940256099942544~3347511713 |
테스트 베너 유닛 ID | ca-app-pub-3940256099942544/6300978111 |
참고로 앱 오프닝, 전면 광고등 다른 유닛을 테스트 하려면 아래 링크에서 테스트 유닛 ID를 참고하면 된다.
3. AndroidManifest 수정
android > app > src > main > AndroidManifest.xml 에 애드몹 App ID 를 추가하자.
<manifest
...
<application
...
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />
</application>
</manifest>
4. build.gradle 수정
4.1. android > build.gradle
com.android.tools.build:gradle 버전을 3.5.4 이상으로 올려주자.
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:3.5.4'
...
}
}
...
이전 버전에서 아래와 같은 오류가 발생해서 올려주었다. (해당되지 않는 다면 굳이 버전을 올리지 않아도 된다.)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Android resource linking failed
/home/huchi/.gradle/caches/transforms-2/files-2.1/a85b96b30229c7e932d3ddf3ccb65070/play-services-ads-lite-19.6.0/AndroidManifest.xml:27:5-38:15: AAPT: error: unexpected element <queries> found in <manifest>.
추정하기로, firebase_admob 에 의해서 링크되는 play-service-ads-lite 패키지의 AndroidManifest.xml 내부에 이전버전에서 지원하지 않는 문법이 사용된 것으로 보인다.
4.2. android > app > build.gradle
minSdkVersion 을 21로 올려주자.
...
android {
...
defaultConfig {
...
minSdkVersion 21
...
}
...
}
...
올려준 이유는, firebase_admob 의존성 추가로 참조 라이브러리 메소드가 65,536개를 초과했기 떄문이다. (아래 참고)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
참고로, 안드로이드 앱은 하나의 실행 가능한 바이트 코드 (DEX) 를 가지고 있는데, 메소드 개수가 65,536개로 제한되어 있다. 그래서, 65,536개 이상의 메소드 사용이 필요할 경우, 멀티덱스 (multidex) 설정을 해주어야 한다. Android 5 이상의 경우 (minSdkVersion 21 이상) 멀티덱스는 기본 지원이 되므로 고민할 필요 없고, Android 5 미만의 경우 직접 멀티덱스 라이브러리 의존성을 추가해야 한다. 자세한 내용은 아래 사이트에서 확인 가능하다.
자 이제 준비가 끝났다. 다음 포스트에서 본격적으로 광고를 달아보자!
댓글