(ver 3.3.x) 11. 문제 해결하기

컴파일레이션 에러가 발생합니다

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.

 

android.view.DisplayCutout getCutout() 메소드를 참조할 수 없습니다

  • 오류 원인: android.view.DisplayCutout getCutout() 메소드가 API 29에 추가되어 발생하는 오류입니다.

  • 해결 방법: compileSdkVersion을 31 이상으로 변경하거나, proguard rules 에  -dontwarn android.view.Display를 추가하여 문제를 해결하세요.

 

광고 할당이 정상적으로 되지 않습니다

BuzzAd Android용 SDK를 연동하고 앱을 정상적으로 빌드한 후에 여러 가지 이유로 인해 광고 미할당 문제가 발생할 수 있습니다. 아래의 해결 방법을 참고해서 문제를 해결하세요.

광고가 할당되지 않습니다

  • 오류 원인: BuzzAd Android용 SDK 초기화 단계에서 광고를 할당받기 위한 사용자 프로필 정보를 등록하지 않았습니다.

  • 해결 방법: 사용자 프로필 등록하기 토픽을 참고하여 사용자 프로필을 등록하세요.

사용자 프로필을 정상적으로 등록했는데도 광고가 할당되지 않습니다

  • 오류 원인:setUserProfile를 통해 사용자 정보를 SDK에 등록하면 내부적으로 광고 할당에 꼭 필요한 세션 키를 발급합니다. 만약 setUserProfile로 사용자 프로필을 등록하고 세션 키가 발급이 완료되기 전에 광고 할당 요청을 하면 실패할 수 있습니다.

  • 해결 방법: 다음의 절차를 따라 세션 키 발급이 완료되었는지 확인할 수 있는 Receiver를 등록하세요.

  1. BroadcastReceiver를 등록하세요.

  2. LocalBroadcastManager에 Receiver를 등록하세요.

  3. 광고가 정상적으로 할당되면 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); }