본문 바로가기
프로그래밍/Flutter 앱 개발

Flutter 앱 개발 13 : 광고 달기 사전 준비

by drogrammer 2021. 1. 17.
반응형

앱에 AdMob 배너 광고를 달기 위한 사전 준비를 해보자.

1. 필요 패키지 의존성 추가 (firebase_admob)

pubspec.yaml 에 firebase_admob 의존성을 추가하자.

...
dependencies:
  ...
  firebase_admob: ^0.10.3 # admob
...

 

2. 애드몹 Application ID, Unit ID 준비

먼저, 애드몹 사이트에서 어플리케이션과 배너 광고 유닛을 만들어야 한다.

 

AdMob

하나의 계정으로 모든 Google 서비스를 AdMob으로 이동하려면 로그인하세요.

accounts.google.com

우리는 일단 개발 검증용 테스트 ID 를 사용하자.

테스트 App ID ca-app-pub-3940256099942544~3347511713
테스트 베너 유닛 ID ca-app-pub-3940256099942544/6300978111

참고로 앱 오프닝, 전면 광고등 다른 유닛을 테스트 하려면 아래 링크에서 테스트 유닛 ID를 참고하면 된다.

 

테스트 광고 사용 설정  |  Android  |  Google Developers

이 가이드에는 광고 통합에서 테스트 광고를 사용하는 방법이 나와 있습니다. 개발 중에는 테스트 광고를 사용하여 광고를 클릭해도 Google 광고주에게 비용이 청구되지 않게 하는 것이 중요합니

developers.google.com

 

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 미만의 경우 직접 멀티덱스 라이브러리 의존성을 추가해야 한다. 자세한 내용은 아래 사이트에서 확인 가능하다.

 

64K가 넘는 메서드의 앱에 관해 멀티덱스 사용 설정  |  Android 개발자  |  Android Developers

앱이 여러 DEX 파일을 빌드하고 읽을 수 있도록 하는 multidex라는 앱 구성의 사용설정 방법에 관해 알아보세요.

developer.android.com

 

자 이제 준비가 끝났다. 다음 포스트에서 본격적으로 광고를 달아보자!

반응형

댓글