본문으로 건너뛰기

문제 해결하기

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

오류 코드가 나타납니다

BuzzAd Android용 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.+를 연동하여 문제를 해결하세요.

앱 빌드 오류가 발생합니다

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는 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" } // 버즈빌 저장소
}
}

Manifest merger 실패가 발생합니다

 android:exported needs to be explicitly specified for element <activity#com.buzzvil.buzzad.benefit.extauth.presentation.view.ExternalAuthComebackDummyActivity>. Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined.

  • 오류 원인: BuzzAd Android용 SDK 3.5.x 미만 버전을 사용하면서 targetSdkVersion을 31로 설정했을 때 발생하는 오류입니다.
  • 해결 방법: BuzzAd Android용 SDK v3.5.x로 업데이트하여 문제를 해결하세요.

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. 버즈빌 담당자에게 연락하여 BuzzRoulette에서 참조하는 AppLovin SDK의 광고 송출 중단을 요청하세요.

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

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

광고가 할당되지 않습니다

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

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

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

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

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

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

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

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

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

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

BuzzAdBrowser.getInstance(context).setBrowserLifecycleObserver(new BuzzAdBrowser.LifecycleObserver() {
@Override
public void onResume(@NonNull Context context) {
(new WebView(context)).resumeTimers();
}

@Override
public void onPause(@NonNull Context context) {
(new WebView(context)).pauseTimers();
}
});

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

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

implementation ("com.buzzvil:buzzad-benefit:3.29.+") {
exclude (group: "com.buzzvil", module: "buzz-covi")
}