Tuesday, August 14, 2012

Re: [android-developers] LVL service binding fails on ALLVIEW PC ALLDRO SPEED tablet

Thank you for your suggestion. I'll try this out if the user is willing and post my findings.
 

On Tue, Aug 14, 2012 at 10:04 AM, Kostya Vasilyev <kmansoft@gmail.com> wrote:

2012/8/14 Acubeware <support@acubeware.com>
Thanks for your response. The user has informed us that their version of the Google Play app is 3.7.15. 

So is mine on a Galaxy Nexus....

Still -- if that device uses a pirated version of Market (even the latest version) it could break in various ways. And it does look like a generic no-name tablet with someone's logo on it.

Also, here is the relevant code from the LVL library:

            if (mService == null) {
                Log.i(TAG, "Binding to licensing service.");
                try {
                    boolean bindResult = mContext
                            .bindService(
                                    new Intent(
                                            new String(
                                                    Base64.decode("Y29tLmFuZHJvaWQudmVuZGluZy5saWNlbnNpbmcuSUxpY2Vuc2luZ1NlcnZpY2U="))),
                                    this, // ServiceConnection.
                                    Context.BIND_AUTO_CREATE);

                    if (bindResult) {
                        mPendingChecks.offer(validator);
                    } else {
                        Log.e(TAG, "Could not bind to service.");
                        handleServiceConnectionError(validator);
                    }
                } catch (SecurityException e) {
                    callback.applicationError(LicenseCheckerCallback.ERROR_MISSING_PERMISSION);
                } catch (Base64DecoderException e) {
                    e.printStackTrace();
                }
            } else {
                mPendingChecks.offer(validator);
                runChecks();
            }
        }

The base64 string is used starting with LVL version 2 and decodes to "com.android.vending.licensing.ILicensingService", same action value as was used in LVL version 1.

I guess what I would do at this point, if the user has enough patience to investigate this further, is to write a simple test app that attempts to bind to the licensing service, and also queries the package manager to attempt resolving the bind intent.

The test app won't be able to perform a real LVL check on behalf of your app but just attempting to bind should be useful. It could call the LVL with its own package name, and that should return "not market managed"... 

The point of all this would be to find out for sure if there is something wrong with Market on the device -- I believe there is, but if you wanted to be certain, you should be able to clarify the issue with a simple test like this.

-- K
 


On Thursday, July 26, 2012 10:24:00 PM UTC+12, Kostya Vasilyev wrote:
Ask the user to check the Google Play app version.

I'd guess the device uses the Play app obtained in unofficial ways (putting it mildly), and as such, various pieces of functionality may break in unexpected ways.

-- K

2012/7/24 Acubeware <sup...@acubeware.com>
Hi,

We have published an app on Google Play Store that uses the Android license verification library. We have a customer whose license is unable to be verified because the LVL library cannot bind to the licensing service (as highlighted in the customer's log file pasted below). This appears to be a device specific issue because our application has been tested on a number of different devices and Android versions without problem. We also have a number of other customers who are successfully using the application.

The device that is experiencing this problem is an ALLVIEW PC ALLDRO SPEED with a CORTEX A8, 1.2 GHZ processor running Android 4.0. The device has the Google Play app installed. Does anyone have any idea as to what could be causing the bindService call to fail?

06-26 21:47:33.929 I/System  ( 1224): Failed to destroy process 1442
06-26 21:47:33.929 I/System  ( 1224): libcore.io.ErrnoException: kill failed: ESRCH (No such process)
06-26 21:47:33.929 I/System  ( 1224):  at libcore.io.Posix.kill(Native Method)
06-26 21:47:33.929 I/System  ( 1224):  at libcore.io.ForwardingOs.kill(ForwardingOs.java:77)
06-26 21:47:33.929 I/System  ( 1224):  at java.lang.ProcessManager$ProcessImpl.destroy(ProcessManager.java:257)
06-26 21:47:33.929 I/System  ( 1224):  at com.nolanlawson.logcat.b.a.b(Unknown Source)
06-26 21:47:33.929 I/System  ( 1224):  at com.nolanlawson.logcat.reader.LogcatReaderLoader.<init>(Unknown Source)
06-26 21:47:33.929 I/System  ( 1224):  at com.nolanlawson.logcat.reader.LogcatReaderLoader.a(Unknown Source)
06-26 21:47:33.929 I/System  ( 1224):  at com.nolanlawson.logcat.b.o.a(Unknown Source)
06-26 21:47:33.929 I/System  ( 1224):  at com.nolanlawson.logcat.b.f.doInBackground(Unknown Source)
06-26 21:47:33.929 I/System  ( 1224):  at android.os.AsyncTask$2.call(AsyncTask.java:264)
06-26 21:47:33.929 I/System  ( 1224):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-26 21:47:33.929 I/System  ( 1224):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-26 21:47:33.929 I/System  ( 1224):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
06-26 21:47:33.929 I/System  ( 1224):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
06-26 21:47:33.929 I/System  ( 1224):  at java.lang.Thread.run(Thread.java:856)
06-26 21:47:34.099 W/InputManagerService(  145): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@413ea598 (uid=10048 pid=1224)
06-26 21:47:34.169 D/dalvikvm( 1224): GC_CONCURRENT freed 833K, 41% free 6819K/11527K, paused 2ms+18ms
06-26 21:47:34.209 V/TabletStatusBar(  212): setLightsOn(true)
06-26 21:47:34.499 D/dalvikvm( 1224): GC_CONCURRENT freed 526K, 41% free 6805K/11527K, paused 2ms+13ms
06-26 21:47:36.139 I/wpa_supplicant(  783): [CTRL_IFACE]SIGNAL_POLL
06-26 21:47:39.149 I/wpa_supplicant(  783): [CTRL_IFACE]SIGNAL_POLL
06-26 21:47:39.269 D/WindowManager(  145): statusbarShow mStatusBarShow = true
06-26 21:47:40.369 D/WindowManager(  145): statusbarShow mStatusBarShow = true
06-26 21:47:40.389 I/ActivityManager(  145): START {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.acubeware.mobilesell cmp=com.acubeware.mobilesell/.activity.Splash bnds=[88,42][184,138]} from pid 337
06-26 21:47:40.579 D/OpenGLRenderer(  337): Flushing caches (mode 1)
06-26 21:47:40.609 D/OpenGLRenderer(  337): Flushing caches (mode 0)
06-26 21:47:40.729 I/LicenseChecker( 1378): Binding to licensing service.
06-26 21:47:40.729 E/LicenseChecker( 1378): Could not bind to service.
06-26 21:47:40.729 W/ActivityManager(  145): Unbind failed: could not find connection for android.os.BinderProxy@412593a8
06-26 21:47:40.739 E/Splash  ( 1378): Application not licensed!

Thanks.

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-d...@googlegroups.com

To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment