본문으로 건너뛰기

문제 해결하기

지면을 연동하는 과정에서 자주 발생하는 문제의 해결 방법을 확인해 보세요.

오류 코드가 나타납니다

Buzzvil SDK 메소드 호출 시 오류가 발생하면 onError 콜백으로 오류 코드가 전달됩니다. 아래의 오류 코드 표를 참고하여 문제의 원인을 파악하고 오류를 해결할 수 있습니다.

오류 코드원인해결 방법
SERVER_ERROR버즈빌 서버에서 오류가 발생했습니다.버즈빌 담당자에게 오류 코드를 전달하세요.
INVALID_PARAMETERS요청이 요구 사항을 충족하지 않았습니다.
(예: 유저 로그인 전에 광고 요청을 시도함)
요청의 인자로 올바른 값을 전달하는지 확인하세요.
CONNECTION_TIMEOUT네트워크 요청이 제한된 시간을 초과했습니다.네트워크 연결 상태를 확인하세요.
EMPTY_RESPONSE네트워크 응답이 비어 있습니다.
(예: 광고 요청에 성공했지만 응답으로 받은 광고의 개수가 '0'임)
버즈빌 담당자에게 오류 코드를 전달하세요.
WAITING_FOR_RESPONSE팝 베네핏허브 지면에서 광고의 프리로드(preload) 요청을 처리 중일 때 프리로드를 다시 요청하면 발생할 수 있는 오류입니다. 이 오류 코드가 발생하더라도 광고 할당은 정상적으로 처리됩니다.프리로드를 중복으로 요청하지 않았는지 확인하세요.
GOOGLE_AGE_POLICY유저의 나이가 플랫폼 정책상 광고를 받을 수 있는 나이보다 어립니다.setProfile 시 나이를 15세 이상으로 설정해 주세요.
PRIVACY_POLICY_NOT_ALLOWED유저가 개인정보 처리보호방침에 동의하지 않았습니다.광고를 요청하기 전에 개인정보 처리보호방침에 동의하였는지 확인하세요.
UNKNOWN식별이 불가능한 오류입니다.SDK 연동과 앱 빌드 과정에서 오류가 없었는지 점검해 보세요.

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

 com.android.tools.r8.errors.CompilationError: Program type already present: com.buzzvil.buzzresource.BuildConfig

  • 오류 원인: BuzzScreen Android용 SDK 3.11 미만의 버전을 같이 연동하고 있는 경우 발생하는 오류입니다.
  • 해결 방법: BuzzScreen Android용 SDK 3.11.+를 연동하여 문제를 해결하세요.

앱 빌드 오류가 발생합니다

Buzzvil SDK를 연동하고 앱을 빌드 시 여러 가지 이유로 인해 오류가 발생할 수 있습니다. 아래의 해결 방법을 참고해서 문제를 해결하세요.

Duplicate class androidx.lifecycle.ViewModelLazy found in modules

  * What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable Duplicate class androidx.lifecycle.ViewModelLazy found in modules lifecycle-viewmodel-2.5.1-runtime (androidx.lifecycle:lifecycle-viewmodel:2.5.1) and lifecycle-viewmodel-ktx-2.2.0-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0) Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.

  • 오류 원인: lifecycle-viewmodel의 java, kotlin 간 버전 충돌이 발생했습니다.

  • 해결 방법: 다음 dependency 를 명시하여 lifecycle-viewmodel의 java, kotlin 간 버전 충돌을 피합니다.

앱 레벨의 build.gralde에서 의존성을 추가하세요.

// build.gradle(app)
def lifecycle_version = "2.5.1"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"

잘 사용하고 있던 OkHttp 코드에서 컴파일 오류가 발생합니다.

  • 오류 원인: Buzzvil SDK 는 OkHttp 4.11 이상을 지원합니다. 앱에서 낮은 버전의 OkHttp 사용하고 있는 경우 발생합니다.

  • 해결 방법: OkHttp 4 마이그레이션 공식 문서를 보고 OkHttp 를 4.11 이상으로 마이그레이션하여 문제를 해결하세요.

Could not resolve com.squareup.okhttp3:okhttp:3.12.0

  • 오류 원인: 버즈배너(BuzzBanner) 에서 사용하는 Vungle ADN 의 추가 연동 방법이 변경됐습니다. 이를 반영해야합니다.

  • 해결 방법: 버즈배너(BuzzBanner) 의 Vungle ADN 추가 연동 방법 확인하고 변경 내역을 반영하면 문제가 해결됩니다.

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 이하 버전을 사용할 경우 발생하는 오류입니다. Buzzvil SDK는 v3.0부터 kotlin 1.5 버전을 사용하고 있습니다.
  • 해결 방법: Kotlin 버전을 1.4 이상으로 설정하여 문제를 해결하세요.

'kotlin-android-extensions' Gradle 플러그인이 Deprecated 되었습니다

  The 'kotlin-android-extensions' Gradle plugin is deprecated. Please use this <a href="https://goo.gle/kotlin-android-extensions-deprecation">migration guide</a> to start working with View Binding ([https://developer.android.com/topic/libraries/view-binding](https://developer.android.com/topic/libraries/view-binding) and the 'kotlin-parcelize' plugin.

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

  Warning: com.buzzvil.buzzad.benefit.pop.PopControlService: can't find referenced method 'android.view.DisplayCutout getCutout()' in library class android.view.Display

  • 오류 원인: android.view.DisplayCutout getCutout() 메소드가 API 29에 추가되어 발생하는 오류입니다.
  • 해결 방법: compileSdkVersion을 31 이상으로 변경하거나, proguard rules 에  -dontwarn android.view.Display를 추가하여 문제를 해결하세요.

프로젝트 레벨의 build.gradle에 레포지토리 등록을 할 수 없습니다

  Build was configured to prefer settings repositories over project repositories but repository 'MavenRepo' was added by build file 'build.gradle'

  • 오류 원인: 이전 버전의 Android Studio에서는 build.gradle에 작성되던 코드들이 최신 버전의 Android Studio에서는 settings.gradle로 이전되면서 발생하는 오류입니다.

  • 해결 방법: 다음의 두 가지 방법 중 원하는 방법을 실행하여 문제를 해결하세요.

    방법 1 settings.gradlemaven { ... }을 추가하세요.

    // settings.gradle

    pluginManagement {
    repositories {
    gradlePluginPortal()
    google()
    mavenCentral()
    }
    }
    dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
    google()
    mavenCentral()
    maven { url "https://dl.buzzvil.com/public/maven" } // 버즈빌 저장소
    }
    }

방법 2 위의 settings.gradle 파일에서 10 ~ 17번 라인을 삭제한 후 프로젝트 레벨의 build.gralde에서 의존성을 추가하세요.

// build.gradle(proejct)
allprojects {
repositories {
maven { url "https://dl.buzzvil.com/public/maven" } // 버즈빌 저장소
}
}

AppLovin SDK 충돌이 발생합니다

  • 오류 원인: 앱에서 이미 AppLovin SDK를 연동하고 있는 경우, 베네핏허브에 BuzzRoulette을 연동하면 BuzzRoulette에서 참조하는 AppLovin SDK와 충돌이 발생합니다.

  • 해결 방법: 다음의 절차를 따라 오류를 해결하세요.

    1. BuzzRoulette에서 참조하는 AppLovin SDK의 app_keyAndroidManifest.xml 파일에서 아래와 같이 설정하세요.

      <meta-data
      android:name="applovin.sdk.key"
      android:value="app_key" // 사용 중인 AppLovin 키 값
      tools:replace="android:value"/>
    2. 버즈빌 담당자(help@buzzvil.com)에게 연락하여 BuzzRoulette에서 참조하는 AppLovin SDK의 광고 송출 중단을 요청하세요.

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

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

광고가 할당되지 않습니다

  • 오류 원인: Buzzvil SDK 초기화 단계에서 광고를 할당받기 위한 유저 프로필 정보를 등록하지 않았습니다.
  • 해결 방법: 유저 프로필 등록하기 토픽을 참고하여 유저 프로필을 등록하세요.

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

  • 오류 원인:setUserProfile를 통해 유저 정보를 SDK에 등록하면 내부적으로 광고 할당에 꼭 필요한 세션 키를 발급합니다. 만약 setUserProfile로 유저 프로필을 등록하고 세션 키가 발급이 완료되기 전에 광고 할당 요청을 하면 실패할 수 있습니다.
  • 해결 방법: 다음의 절차를 따라 세션 키 발급이 완료되었는지 확인할 수 있는 Receiver를 등록하세요.
  1. BroadcastReceiver를 등록하세요.
  2. BuzzAdBenefit.registerSessionReadyBroadcastReceiver를 통해 SessionReadyBroadcastReceiver를 등록하세요.
  3. 광고가 정상적으로 할당되면 Receiver 등록을 해제하세요.
// 1. BroadcastReceiver를 등록하세요
val sessionReadyReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
// 세션이 준비 되었습니다.
}
}

// 2. SessionReadyBroadcastReceiver 를 등록하세요
private fun registerSessionReadyReceiver() {
BuzzAdBenefit.registerSessionReadyBroadcastReceiver(context, sessionReadyReceiver)
}

// 3. 광고가 정상적으로 할당되면 receiver 등록을 해제하세요
private fun unregisterSessionReadyReceiver() {
BuzzAdBenefit.unregisterSessionReadyBroadcastReceiver(sessionReadyReceiver)
}

모든 셋팅을 완료하였지만 비디오 광고가 할당되지 않습니다.

  • 오류 원인: Buzzvil SDK에서는 비디오 광고의 운용을 위해 Covi SDK를 사용하고 있습니다. 이 모듈은 여러가지 이유로 사용이 제한될 수 있습니다. 대표적으로는 호환되지 않는 Exo Player 버전을 사용하는 경우(2.11.8 버전이 아닌 경우)입니다.
  • 해결 방법: Exo Player 버전을 호환되는 버전으로 변경합니다. 만약 불가능한 경우, Covi SDK를 종속성에서 제외하여 예상치 못한 에러가 생기는 것을 방지하는 것을 권장합니다. 아래의 Covi SDK를 종속성에서 제외하고 싶습니다. 항목을 참조하세요.

Buzzvil SDK 인앱 브라우저가 제대로 동작하지 않습니다

  • 오류 원인: Buzzvil SDK가 제공하는 인앱 브라우저가 다른 액티비티의 수명 주기에 따라 전역적으로 동작하는 함수의 영향을 받고 있는 경우 발생할 수 있는 오류입니다.
  • 해결 방법: BuzzAdBrowserBuzzAdBrowser.LifecycleObserver를 등록하여 Buzzvil SDK가 제공하는 인앱 브라우저의 수명 주기에 맞춰 특정 작업을 수행할 수 있습니다. 이 관찰자(Observer)를 통해 인앱 브라우저는 독립적인 수명 주기에 따라 필요한 시점에 인앱 브라우저에 설정한 동작을 정상적으로 수행할 수 있습니다. 또한 관찰자의 함수는 인앱 브라우저의 컨텍스트를 제공하여 인앱 브라우저가 포함된 액티비티가 살아있는 동안 컨텍스트를 자유롭게 사용할 수 있습니다.

다음은 앱이 onPause() 상태에서 앱 내 모든 웹뷰의 자바스크립트 동작을 멈추게 하는 WebView.pauseTimers()가 호출되어 Buzzvil SDK의 인앱 브라우저의 동작이 멈추는 경우 인앱 브라우저의 WebView의 객체를 생성하여 문제를 해결하는 예제 코드입니다.
BuzzAdBrowserBuzzAdBrowser.LifecycleObserver를 등록하여 인앱 브라우저에 수명 주기를 다시 부여하고 인앱 브라우저의 onResume()onPause()에서 각각 자바스크립트 동작이 다시 실행되거나 멈추게 할 수 있습니다.

BuzzAdBrowser.getInstance(this).browserLifecycleObserver = object : BuzzAdBrowser.LifecycleObserver {
override fun onResume(context: Context) {
super.onResume(context)
WebView(context).resumeTimers()
}

override fun onPause(context: Context) {
super.onPause(context)
WebView(context).pauseTimers()
}
}

Covi SDK를 종속성에서 제외하고 싶습니다.

Buzzvil SDK에서는 비디오 광고의 운용을 위해 Covi SDK를 사용하고 있습니다. 호환성의 문제 등 여러 이유로 Covi SDK를 종속성에서 제외해야 할 수 있습니다. 이 때에는 build.gradlebuzzvil-sdk의 종속성을 설정할 때 다음의 방식으로 buzz-covi 모듈을 제외할 수 있습니다.

implementation ("com.buzzvil:buzzvil-sdk:1.0.+") {
exclude (group: "com.buzzvil", module: "buzz-covi")
}