탐색

SDK 연동 문제 해결

연동 과정에서 발생하는 문제에 대한 해결 방법을 확인하세요.

자주 묻는 질문

  • 오류 메시지 #1

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


    해결 방법

    compileSdkVersion을 29 이상으로 변경하거나 proguard rules에 -dontwarn android.view.Display를 추가하십시오.



    오류 메시지 #2

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


    해결 방법

    Buzzscreen SDK와 같이 연동하고 있는 경우 Buzzscreen SDK 3.11.0 이상 버전으로 연동하십시오. 


     

    오류 메시지 #3

    java.lang.RuntimeException: Unable to start activity ComponentInfo{…/com.buzzvil.buzzad.browser.BuzzAdBrowserActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.


    BuzzAdBrowserActivity에 theme이 설정되어있지 않아서 전역으로 설정된 theme과 맞지 않을 경우 문제가 발생합니다. 


    해결 방법

    1. AppCompat Theme 중 하나를 상속받는 theme을 styles.xml에 정의하십시오.

    <style name="CustomTheme" parent="Theme.AppCompat.DayNight">
        <!-- add your custom attributes here -->
    </style>


    2. AndroidManifest.xml에 아래 코드를 추가하십시오. 

    <activity
        android:name="com.buzzvil.buzzad.browser.BuzzAdBrowserActivity"
        android:theme="@style/CustomTheme"
        tools:replace="android:theme"/>


  • 잠금화면 SDK인 BuzzScreen과 인앱 SDK인 BuzzAd Benefit은 각 버전에 따라 라이브러리의 호환성이 다릅니다. BuzzScreen과 BuzzAd Benefit을 하나의 앱과 연동해서 사용하는 경우 각 라이브러리의 호환성에 주의하십시오.


    BuzzAd Benefit 1.xBuzzAd Benefit 2.x
    BuzzScreen 2.xOX
    BuzzScreen 3.xXO (권장)


    추가 정보

  • 이 문서는 호스트 앱과 잠금화면 앱이 별도로 개발된 경우에 targetSdkVersion 30(Android 11, API 수준 30)을 적용하기 전에 반드시 수행해야 할 과정을 설명합니다. 문서 안에서 M앱은 호스트 앱을 지칭하며, L앱은 별도의 잠금화면 앱을 지칭합니다. 

    주의
    호스트앱에서 직접 잠금화면을 구현하며, 별도의 잠금화면이 없는 퍼블리셔는 해당되지 않는 내용입니다.




    이슈

    구글은 Google Play 스토어에 업로드되는 앱에 대해 targetSdkVersion 30(Android 11, API 수준 30)을 반드시 사용하도록 강제하는 정책을 발표했습니다. 이 때, M앱 L앱 구조에서 문제가 되는 변경사항은 패키지 공개 상태 관리 부분입니다.


    targetSdkVersion 30으로 앱을 업데이트 하면, Android 11 이상의 기기에서 다음의 기능이 정상 동작하지 않게 됩니다.

    • 상호간에 설치 유무를 판단하는 기능
    • 상호간에 앱을 실행시키는 기능

    Google Play에 신규로 등록되는 앱의 경우 2021년 8월까지 완료되어야 하며, 기존 등록된 앱을 업데이트하는 경우 2021년 11월까지 완료되어야 합니다.


    해결 방법

    benefit-2.21.0 이상 또는 buzzscreen-3.25.0 이상으로 업데이트 하거나, 구글의 가이드에 따라 앱 상호간의 가시성을 위한 설정을 AndroidManifest.xml에 추가하십시오. 

    참고
    상호 가시성을 확보하는 AndroidManifest.xml 설정이 benefit과 buzzscreen에 모두 추가되기 때문에 M앱에서 L앱을 선언하거나 L앱에서 M앱을 선언하는 것 중 하나를 선택하여 적용할 수 있습니다.  

    M앱에서 L앱을 선언하기

    M앱 (패키지명: com.mapp)

    <manifest ... >
     <queries>
      <package android:name="com.lapp" />
     </queries>
     ...
    </manifest>

    L앱에서 M앱을 선언하기

    L앱 (패키지명: com.lapp)

    <manifest ... >
     <queries>
      <package android:name="com.mapp" />
     </queries>
      ...
    </manifest>


    테스트

    L앱에서 확인하기

    1. 상호 가시성을 선언하지 않은 상태에서 M앱을 찾을 수 없어서 잠금화면 앱을 실행할 수 없는 것은 확인하십시오.
    2. 상호 가시성을 선언한 뒤 잠금화면이 올바르게 싱행되는 것을 확인을 확인하십시오.

    M앱에서 확인하기

    M앱의 경우 구현 방식이 퍼블리셔앱 마다 상이하기 때문에 문제 유형을 모두 설명하기는 어려우나 일반적으로 L앱 설치를 유도하는 기능에서 L앱이 설치되어 있음에도 불구하고 계속 구글플레이스토어로 보내게 되는 문제가 발생합니다. 상호 가시성을 선언한 뒤에는 기능이 올바르게 동작하는 것을 확인할 수 있습니다.


    관련 정보


문제 해결

  • 문제 (Problems)

    버즈빌의 SDK 를 적용한 후, 앱을 빌드하는 과정에서 Program type already present: <Package name> 라는 에러가 발생합니다.



    원인 (Causes)

    한 클래스가 복수의 라이브러리에서 나타나면 발생할 수 있습니다.
    특히, 다수의 SDK 를 연동중이라면 버전이 다를 경우 발생할 수 있습니다.

    해결 (Resolution)

    아래 절차에 따라 시도해주십시오.

    1. 캐시파일을 제거하고, 다시 시도해주세요.

      아래의 보이는 build 폴더를 지워서 캐시를 제거할 수 있습니다.

      또는, Android studio 에서 Invalidate Caches/ Restart 혹은 Clean Project 를 시도하여 캐시를 지울 수 있습니다.

    2. 그래도 해결이 되지 않으셨다면, 문의하기를 통해 기술 지원팀에 알려주세요.

      추가적으로 아래 정보를 전달해주시면 신속한 대응이 가능합니다.
      • 에러 전문
      • 앱에 추가한 라이브러리 리스트
      • 현재 연동중인 SDK