(ver 3.0.x) 10. 문제 해결하기
컴파일레이션 에러가 발생합니다
com.android.tools.r8.errors.CompilationError: Program type already present: com.buzzvil.buzzresource.BuildConfig
오류 원인: BuzzScreen Android용 SDK 3.11 미만의 버전을 같이 연동하고 있는 경우 발생하는 오류입니다.
해결 방법: BuzzScreen Android용 SDK 3.11.+를 연동하여 문제를 해결하세요.
앱 빌드 오류가 발생합니다
BuzzAd Android용 SDK를 연동하고 앱을 빌드 시 여러 가지 이유로 인해 오류가 발생할 수 있습니다. 아래의 해결 방법을 참고해서 문제를 해결하세요.
Kotlin 버전이 호환되지 않습니다
/Users/…/.gradle/caches/transforms-2/files-2.1/1ff87663fddec50a529453400185fa1a/jetified-buzzresource2-3.0.0-rc.8-kotin-test.1-api.jar!/META-INF/buzzresource2_release.kotlin_module: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.5.1, expected version is 1.1.16.
오류 원인: 앱에서 호환이 되지 않는 Kotlin 1.3 이하 버전을 사용할 경우 발생하는 오류입니다. BuzzAd Android용 SDK 3.0은 kotlin 1.5 버전을 사용하고 있습니다.
해결 방법: Kotlin 버전을 1.4 이상으로 설정하여 문제를 해결하세요.
'kotlin-android-extensions' Gradle 플러그인이 Deprecated 되었습니다
The 'kotlin-android-extensions' Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding and the 'kotlin-parcelize' plugin.
오류 원인: Gradle에서
kotlin-android-extensions
플러그인을 사용할 경우 발생하는 오류입니다.해결 방법: 구글 공식 문서 https://developer.android.com/topic/libraries/view-binding/migration를 참고하여 Jetpack view binding 방식으로 변경하여 문제를 해결하세요.
android.view.DisplayCutout getCutout()
메소드를 참조할 수 없습니다
오류 원인:
android.view.DisplayCutout getCutout()
메소드가 API 29에 추가되어 발생하는 오류입니다.해결 방법:
compileSdkVersion
을 29 이상으로 변경하거나, proguard rules 에 -dontwarn android.view.Display를 추가하여 문제를 해결하세요.
광고 할당이 정상적으로 되지 않습니다
BuzzAd Android용 SDK를 연동하고 앱을 정상적으로 빌드한 후에 여러 가지 이유로 인해 광고 미할당 문제가 발생할 수 있습니다. 아래의 해결 방법을 참고해서 문제를 해결하세요.
광고가 할당되지 않습니다
오류 원인: BuzzAd Android용 SDK 초기화 단계에서 광고를 할당받기 위한 사용자 프로필 정보를 등록하지 않았습니다.
해결 방법: 사용자 프로필 등록하기 토픽을 참고하여 사용자 프로필을 등록하세요.
사용자 프로필을 정상적으로 등록했는데도 광고가 할당되지 않습니다
오류 원인:
setUserProfile
를 통해 사용자 정보를 SDK에 등록하면 내부적으로 광고 할당에 꼭 필요한 세션 키를 발급합니다. 만약setUserProfile
로 사용자 프로필을 등록하고 세션 키가 발급이 완료되기 전에 광고 할당 요청을 하면 실패할 수 있습니다.해결 방법: 다음의 절차를 따라 세션 키 발급이 완료되었는지 확인할 수 있는 Receiver를 등록하세요.
BroadcastReceiver
를 등록하세요.LocalBroadcastManager
에 Receiver를 등록하세요.광고가 정상적으로 할당되면 Receiver 등록을 해제하세요.
// 1. BroadcastReceiver를 등록하세요
private BroadcastReceiver sessionReadyReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// 세션이 완료되었습니다
}
};
// 2. LocalBroadcastManager에 receiver를 등록하세요
private void registerSessionReadyReceiver() {
LocalBroadcastManager.getInstance(context).registerReceiver(sessionReadyReceiver, BuzzAdBenefit.getSessionReadyIntentFilter());
}
// 3. 광고가 정상적으로 할당되면 receiver 등록을 해제하세요
private void unregisterSessionReadyReceiver() {
LocalBroadcastManager.getInstance(context).unregisterReceiver(sessionReadyReceiver);
}