Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Tip
  • 버즈스크린의 UI 및 동작을 커스터마이징하고 싶다면 고급 설정을 참고하여 구현하세요.

  • 사용자가 룰렛을 돌려 리워드를 획득할 수 있는 버즈룰렛(BuzzRoulette)을 추가할 수 있습니다. 고수익성의 광고를 제공하고 사용자의 광고 참여 유도에 효과적인 버즈룰렛을 추가하려면 BuzzRoulette 연동 가이드를 참고하세요.

Warning

잠금화면 내 BuzzvilSdk NativeAd 광고 노출은 광고 효율 문제로 허용되지 않습니다.

요구 사양

  • Android 4.0.3 Jellybean (API 레벨 15) 이상

  • Android Studio 3.2 이상

  • Gradle 4.0.1 이상

  • compileSdkVersion 31 이상

  • AndroidX

  • JDK 1.11

  • Kotlin 버전 1.5 이상

...

Expand
title문제 해결하기

'create' overrides nothing

문제 상황

버즈캐시버튼의 종속성을 추가한 상태에서 빌드할 때, 다음과 같은 에러 메시지가 발생하면서 빌드에 실패할 수 있습니다.

'create' overrides nothing

조금 더 구체적으로는 다음과 같은 메시지를 받을 수 있습니다.

Class 'ViewModelFactory' is not abstract and does not implement abstract member public abstract fun <T : ViewModel> create(modelClass: Class<T>): T defined in androidx.lifecycle.ViewModelProvider.Factory

문제 설명

기존에 androidx.lifecycle 모듈을 2.2.0 이하 버전을 사용하면서 코틀린으로 ViewModelProvider.Factory 를 상속한 객체를 구현하고 있었던 경우, 버즈캐시버튼을 연동하면서 버전이 2.4.0 이후 버전으로 올라갔기 때문에 발생합니다.

androidx.lifecycle 모듈은 2.4.0에서 다음과 같은 하위호환성이 깨지는 변화가 있었습니다.

하위호환성이 깨지는 변화: ViewModelProvider 가 코틀린으로 재작성되었습니다.

ViewModelProvider.Factory.create 함수는 더 이상 nullable 제네릭을 허용하지 않습니다.

해결 방법

코드에 다음과 같이 nullable한 타입으로 ViewModelProvider.Factory.create 함수를 사용하는 경우를 찾습니다.

Code Block
class SomeViewModelFactory(): ViewModelProvider.Factory {
    override fun <T : ViewModel?> create(modelClass: Class<T>): T {
        ....
    }
}

다음과 같이 create 함수가 nullable한 제네릭을 사용하지 않도록 변경합니다. (? 가 제거되었습니다.)

Code Block
class SomeViewModelFactory(): ViewModelProvider.Factory {
    override fun <T : ViewModel> create(modelClass: Class<T>): T {
        ....
    }
}

관련 문서

Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default option

문제 상황

버즈캐시버튼의 종속성을 추가한 상태에서 빌드할 때, 다음과 같은 에러 메시지가 발생하면서 빌드에 실패할 수 있습니다.

Inheritance from an interface with '@JvmDefault' members is only allowed with -Xjvm-default option

문제 설명

기존에 androidx.lifecycle 모듈을 2.5.0 미만의 버전을 사용하면서 코틀린으로 ViewModelProvider.Factory 를 상속한 객체를 구현하고 있었던 경우, 버즈캐시버튼을 연동하면서 버전이 2.5.0 이후 버전으로 올라갔기 때문에 발생합니다.

androidx.lifecycle 모듈은 2.5.0-alpha01 에서 하위호환성이 깨지는 변화가 있었고, 이로 인해 이 문제가 발생한다고 합니다.

해결 방법

다음 두 가지 해결 방법 중 적절한 방법을 골라서 적용합니다.

  1. 앱 수준의 build.gradle 파일에 다음을 추가합니다.

    Code Block
    android {
       ...
       kotlinOptions {
           ...
           freeCompilerArgs += [
                    "-Xjvm-default=all",
            ]
       }
    }
  2. 코틀린 버전을 1.6.20 버전 이상으로 올립니다.

관련 문서

이어서 보기

Child pages (Children Display)
allChildrentrue