Unity3D Google InApp V3 java.lang.NoClassDefFoundError: com.android.vending.billing.IInAppBillingService$Stub

  cocos2d-x에 구글 인앱 빌링 v2를 연동하고 오랜만에 v3 버전으로 유니티3D에 연동중에 있습니다.

Creating IAB helper.true
Could not find method com.android.vending.billing.IInAppBillingService.consumePurchase, referenced from method com.example.android.trivialdrivesample.util.IabHelper.consume
VFY: unable to resolve interface method 3836: Lcom/android/vending/billing/IInAppBillingService;.consumePurchase (ILjava/lang/String;Ljava/lang/String;)I
VFY: replacing opcode 0x72 at 0x00b6
Could not find method com.android.vending.billing.IInAppBillingService.getBuyIntent, referenced from method com.example.android.trivialdrivesample.util.IabHelper.launchPurchaseFlow
VFY: unable to resolve interface method 3837: Lcom/android/vending/billing/IInAppBillingService;.getBuyIntent (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
VFY: replacing opcode 0x78 at 0x0059
Could not find method com.android.vending.billing.IInAppBillingService.getPurchases, referenced from method com.example.android.trivialdrivesample.util.IabHelper.queryPurchases
VFY: unable to resolve interface method 3838: Lcom/android/vending/billing/IInAppBillingService;.getPurchases (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
VFY: replacing opcode 0x72 at 0x0057
Could not find method com.android.vending.billing.IInAppBillingService.getSkuDetails, referenced from method com.example.android.trivialdrivesample.util.IabHelper.querySkuDetails
VFY: unable to resolve interface method 3839: Lcom/android/vending/billing/IInAppBillingService;.getSkuDetails (ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
VFY: replacing opcode 0x72 at 0x0036
Starting in-app billing setup.
Could not find method com.android.vending.billing.IInAppBillingService$Stub.asInterface, referenced from method com.example.android.trivialdrivesample.util.IabHelper$1.onServiceConnected
VFY: unable to resolve static method 3835: Lcom/android/vending/billing/IInAppBillingService$Stub;.asInterface (Landroid/os/IBinder;)Lcom/android/vending/billing/IInAppBillingService;

FATAL EXCEPTION: main
java.lang.Error: FATAL EXCEPTION [main]
Unity version     : 4.1.2f1
Device model      : Acer A500
Device fingerprint: acer/a500_ww_cus1/picasso:4.0.3/IML74K/1336617649:user/release-keys
Caused by: java.lang.NoClassDefFoundError: com.android.vending.billing.IInAppBillingService$Stub
at com.example.android.trivialdrivesample.util.IabHelper$1.onServiceConnected(IabHelper.java:215)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1068)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1085)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

 플러그인을 만들고 인앱 빌링 v3를 초기화 중 위와 같은 오류가 발생했습니다.

 안드로이드 JAR 플러그인 프로젝트에 인앱빌링 관련 파일을 추가하고 빌드하면 위와 같이 gen/com/android/vending/billing에 IInAppBillingService.java 파일이 생성됩니다.

 플러그인을 jar로 익스포트시에 src에서는 com.android.vending.billing는 필요없으므로 빼주시고 생성된 IInAppBillingService.java를 사용하기 위해 gen에서 com.android.vending.billing를 체크한 후 jar 플러그인을 생성합니다.

 이제 실행해보면 위 로그와 비슷하게 나오면서 인앱 빌링 v3 초기화가 완료됩니다. 개인적인 생각으로 플러그인 작업을 이클립스가 주가 되어 빌드 했다면 안 생겼을 이슈일 듯 하네요.

댓글

이 블로그의 인기 게시물

CMake Windows에 설치하기

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

크로스 스레드 작업이 잘못되었습니다. xxx 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다