본문 바로가기
android

구글 결제 라이브러리 java.lang.NoClassDefFoundError 해결

by 개발자언니 2025. 3. 15.

문제 발생

결제 라이브러리를 최신 버전인 7.1.1로 결제 테스트

def billing_version = "7.1.1"
implementation "com.android.billingclient:billing:$billing_version"

 

Android 14 ( API 34 ) 인 폰에서 문제없는 걸 확인하고

안드로이드 버전 6.0.1 (API 23) 에서 테스트하는데 크래시가 난다.

 

BillingClient 초기화 하고 인앱 목록 받아오기까지 정상적으로 동작하는데

구매하려고 BillingFlowParams 세팅하는 부분에서 크래시

BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
                .setProductDetailsParamsList(productDetailsParamsList)
                .build();

 

java.lang.NoClassDefFoundError: com.android.billingclient.api.zzce 에러 발생

Rejecting re-init on previously-failed class java.lang.Class<com.android.billingclient.api.zzce>
Shutting down VM
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.android.billingclient.api.zzce
at com.android.billingclient.api.BillingFlowParams$Builder.build(com.android.billingclient:billing@@7.1.1:3)

 

버전이 너무 낮은가 해서 릴리즈 노트를 찾아봐도 

7.0.0 버전에서 minSdkVersion 이 21, targetSdkVersion 이 34로 업데이트

 

당연히 7.1.1 버전에서도 될 거라고 생각해서

이리저리 찾아보고 고쳐보고 한참을 고치다가 혹시나 하는 마음에

7.0.0 버전으로 낮추니 정상적으로 동작... 

문제 해결

해결했다고 하기도 머쓱하게 결제라이브러리 7.0.0 버전으로 낮춰서 해결. 

물론 결제라이브러리 6 버전도 잘 됩니다.