2011-02-14 4 views
8

라이센스 확인 API를 사용하는 Android 앱이 있습니다. API 레벨 8, 9 및 10에 대한 Google API를 사용하여 에뮬레이터 AVD를 설정했습니다. 내 앱은 레벨 8 AVD와 잘 작동하지만 레벨 9 및 10 AVD는 비참하게 실패합니다. 여기에 일반적인 로그 캣 순서입니다 : (. 내 테스트 계정이 모든 에뮬레이터에서 설정 내가 테스트 계정에 대한 라이센스의 응답을 반환하는 개발자 콘솔을 설정 한 것을 확인했습니다) Android 에뮬레이터의 마켓 라이센싱 API

02-14 17:43:55.815: INFO/LicenseChecker(448): Binding to licensing service. 
02-14 17:43:55.935: WARN/ActivityManager(65): Unable to start service Intent { act=com.android.vending.licensing.ILicensingService }: not found 
02-14 17:43:55.935: ERROR/LicenseChecker(448): Could not bind to service. 
02-14 17:44:00.625: INFO/ActivityManager(65): Displayed com.zigzagworld.tehillim/.Tehillim: +2m1s448ms (total +5m43s546ms) 
02-14 17:44:01.085: INFO/ARMAssembler(65): generated scanline__00000177:03515104_00001002_00000000 [ 87 ipp] (110 ins) at [0x439de6f0:0x439de8a8] in 5603158 ns 
02-14 17:44:18.025: INFO/InputReader(65): Device reconfigured: id=0x0, name=qwerty, display size is now 320x480 
02-14 17:44:18.025: WARN/InputReader(65): Touch device did not report support for X or Y axis! 
02-14 17:44:19.005: WARN/InputManagerService(65): Window already focused, ignoring focus gain of: [email protected] 
02-14 17:44:20.805: ERROR/ActivityThread(448): Activity com.zigzagworld.tehillim.Tehillim has leaked ServiceConnection [email protected] that was originally bound here 
02-14 17:44:20.805: ERROR/ActivityThread(448): android.app.ServiceConnectionLeaked: Activity com.zigzagworld.tehillim.Tehillim has leaked ServiceConnection [email protected] that was originally bound here 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:938) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:833) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.ContextImpl.bindService(ContextImpl.java:864) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.content.ContextWrapper.bindService(ContextWrapper.java:347) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at com.android.vending.licensing.LicenseChecker.checkAccess(LicenseChecker.java:143) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at com.zigzagworld.tehillim.Tehillim.onCreate(Tehillim.java:76) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.os.Looper.loop(Looper.java:123) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at java.lang.reflect.Method.invoke(Method.java:507) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-14 17:44:20.805: ERROR/ActivityThread(448):  at dalvik.system.NativeStart.main(Native Method) 
02-14 17:44:20.835: WARN/ActivityManager(65): Unbind failed: could not find connection for [email protected] 

LicenseCheckerCallbackdontAllow() 처리를 완료하면 연결이 누출되는 오류가 발생합니다.

내 코드는 꽤 바닐라입니다. 나는 onCreate()에서 다음을 실행합니다

String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); 
AESObfuscator ob = new AESObfuscator(SALT, getPackageName(), deviceId); 
LicenseChecker checker = new LicenseChecker(this, 
    new ServerManagedPolicy(this, ob), BASE64_PUBLIC_KEY); 
checker.checkAccess(this); 

는 API (8) 후 라이센스 코드에 뭔가 변화를 했습니까? 다른 누구도 API 8 이외의 다른 제품에서 라이선스를 테스트 할 수 있습니까?

업데이트 : Google에서 제공하는 Market Licensing Sample 앱에서도 동일한 문제가 발생합니다.

+1

그럼 분명히 그것의 알려진 문제 [스레드 (따른 http://groups.google.com/group/android-developers/browse_thread/thread/9b1ae385f79af70b/ 1d61bf8d48e9b6b4? pli = 1) 안드로이드 개발자 포럼. : –

+0

누군가가이 문제에 대한 해결책을 알고 있습니까? – barmaley

+0

안녕하세요.이 문제에 대한 해결책을 찾았습니까? 아직 실행 중입니까? –

답변

0

서비스에 바인딩 할 수 없다는 것은 일반적으로 매니페스트에서 해당 서비스를 선언하지 않았 음을 의미합니다.

Read up here

보조 오류 :

Activity com.zigzagworld.tehillim.Tehillim has leaked ServiceConnection [email protected] that was originally bound here 

은 활동이 완료되면 당신은 그것을 해체 않습니다, 서비스가 새고 의미?

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    checker.onDestroy(); 
    ... 
} 

참조 : cleanup api

+0

결국 API 레벨 8에서 작동합니다.) 저는 이미 액티비티의 onDestroy 메소드에서'checker.onDestroy()'를 호출하고 있습니다. –