License Verification Library – How to test server response - android

I have already wasted days with what seams to be an error in the Google license verification framework.
I am testing the Google market License Verification Library. I have thus far:
- created a library and test project from the provided library and sample sources with no changes (except public key and other obvious things).
- created a publisher account on market
- I have not uploaded the application to the market
- installed the sample application to a device
- In the developer console added test accounts
- I have set various test responses in the developer console
My problem is that I always get a NOT_MARKET_MANAGED response - regardless of settings in the developer console test response.
The docs state that I have to be signed in a device with a publisher account. It does not say what does this mean specifically.
I have added a publisher account to the accounts in the device but this does not help. Since the License Library depends on Market application I have changed the account in Marker application. No effect either.
I have googled around and found something in the line "… that I have to be signed in with publisher account as primary account…". What exactly is primary account remains vague. Some sources state that a factory reset is needed for a primary account sign in. I have not tried that but I think you loose whatever you made on the device, installs, messages, contacts and such. This is impossibly impractical.
My question is: How does one test the application against various responses?

On the developer console it is clearly stated:
This License Test Response will be sent to devices using
publisher_account or the Test Accounts listed above for applications
you have uploaded to Market. Additionally, this account (but not the
Test Accounts) will receive this response for applications that have
not yet been uploaded to Market.
The same is also stated in this section of docs:
http://developer.android.com/guide/publishing/licensing.html#test-acct-setup
I know that testing is possible with uploading the apk to the server. But besides setting the test response in developer console one has to do:
Compile the application without debug flag
Create a certificate
Sign the apk with certificate
Upload the apk to the server
All this is a major PITA. Something that could be just a simple run and test is now a whole procedure, just for testing the most basic functionality of a prototype.
Taken into consideration the discrepancy between the docs and License Verification Framework behavior there is only one possible conclusion. Either docs or implementation (or both) are flawed.

Please read the Official Dev Guide carefully:
Setting test responses for license checks
Android Market provides a configuration setting in your publisher account that lets you override the normal processing of a license check and return a specified static response code. The setting is for testing only and applies only to license checks for applications that you have uploaded, made by any user signed in to an emulator or device using the credentials of the publisher account or a registered test account. For other users, the server always processes license checks according to normal rules.
And follow David's comments.

Related

Licensing server will only respond with ERROR_NOT_MARKET_MANAGED

Variant of this question have been asked before. But from the current Google documentation it seems things have changed and many answers are obsolete.
I'm completing an App that will be sold on the Google Play Store. The last thing to implement and test is license verification using LVL. The licensing server will only respond with ERROR_NOT_MARKET_MANAGED.
https://developer.android.com/google/play/licensing/setting-up.html says "Using the Google Play Developer Console, you can debug and test an application's licensing implementation, prior to publishing the application". Then Table 1 on this webpage clearly states a publisher account "Can check license before upload".
I interpret this to mean that, when logged in to my test device using my publisher account I should be able to get a licensing server response for my App without uploading an APK.
Am I mistaken? I ask because other related stackoverflow questions state an APK must be uploaded. That was the case in the past but doesn't appear to be true now if I am interpreting the documentation correctly.

In-app billing and license test accounts

I am very confused about this, both from the developer site and other similar questions.
I am trying to use V3 in-app billing. Seems to work with the static responses. Want to move on to testing with test purchases using license test accounts.
Basically - it is not working.
A signed app has been uploaded to the developer site (over 6 hours ago), and the app installed on the device, whilst not being signed with the same release key (it's a debug build and key), should work because Android Developers says "you only need to upload your application as a draft application. However, you must sign your application with your release key before you upload it as a draft application. Also, the version number of the uploaded application must match the version number of the application you load to your device for testing". Ie the code on the device apparently doesn't need the same key providing versionCode matches.
My developer console login is - say - a#googlemail.com, and I have a license test address registered (on the developer console) of b#gmail.com. The primary account on my phone is also a#googlemail.com. However I do have a secondary account on there of b#gmail.com. I do NOT want to have to reset my phone and change its one and only account to b#gmail.com.
Android Developers says "The only way to change the primary account on a device is to do a factory reset, making sure you log on with your primary account first" which seems to imply I might have to. It also then says "If the device has more than one account, the purchase will be made with the account that downloaded the app. If none of the accounts has downloaded the app, the purchase is made with the first account" which partially contradicts the first statement. Most of the text on the site appears to apply to pre-V3 code, OS 1.4 etc, so I am not sure how relevant it is.
I notice that Google Play allows me to select the account to use, and both the above show up in the list. Therefore, if I select that second (test) account in Google Play, should that be not sufficient to start testing with that test account?
What actually happens is, whatever account I have selected in Google Play, on starting a purchase I get a message "this version of the application is not configured for billing through Google Play".
Is this because I really do have reset the device and make the primary account b#gmail.com, or because of something else, possibly in the code?
I have some more information now, together with the answer above:
Once I loaded the device with the release signed key the message on a purchase attempt changed to "the publisher cannot purchase own item".
I tried logging in to Google Play with both my accounts and it made no difference. When logged in with the test account I also tried to find the app in the play store. Didn't show up even to the test account (draft app). (I hoped the test account could download it even as draft and therefore following the rules above about multiple accounts I could test purchase with the test account, but no).
Therefore I conclude:
Can only test on a device with an app signed with the same key as the one uploaded to the play store - whatever Android Developers might say.
The ONLY account that can test purchases on a device is the first set (primary) account.
Best therefore to have a completely new account as one's Developer Console account (bit late now).
Would be happy to hear if anyone can contradict the above.
Sign the app you upload to the device with a release key. As far as I know you can't test in-app billing without signing it properly. Actually, last week I tried it as written above and it works.
Hope it helps.
You can have multiple accounts on your devices -- as many as you want. But while testing the app, make sure you don't install it by the app Play Store on your device. Instead, go to Google Chrome, browse to its page on Google Play, and install the app from there. There's a button Install (or Installed).
I guess if you already install the app from account A, then the Android app Play Store will use that account to install next version (or reinstall current version) -- even though you're signed in as another account, like B for example.
However the Google Chrome will just install the app via the current signed in account. This could be a bug and it would be fixed some day. But it's working right now -- when I'm typing this answer. Android team is well known of being lazy for delivering fixes. I hope this "bug" will never be fixed :-)

Android APK Expansion testing with multiple accounts

My application is a paid application which is also using apk expansion library.
For testing I have added a test account in my developer console say
xyz#gmail.com
And it's working as expected (Expansion files are downloaded) when I am testing with a device which was registered with above account first.
But the problem occurred when I installed a signed apk to a device which is already registered with
abc#gmail.com
I have added xyz#gmail.com account before the installation of signed apk, And as a checklist I made sure Gmail and Google Play are working properly with this account.
But upon running the app, I have got the error
"Download failed because you may not have purchased the app".
What should I do to test the application in above condition? Do I need to remove abc#gmail.com? Or is there any workaround?
It's done and final.
Android LVL aka Licencing verification library only fetches primary account (Google account you registered first for your device) to work with.
Quoting android's original documentation
The Google Play client collects the necessary information about the user and the device, such as the device's primary Google account username, IMSI, and other information. It then sends the license check request to the server on behalf of your application.

android google play returns test response without checking test accounts

I am currently working on testing the response, which is returned from google play
when you have uploaded a draft apk to the market and I came across the following situation:
I uploaded an application which is still unpublished and when I wanted to test the returned test response from the licensing server I always receive the specified response in the dropdown nondepending on the google play account I am currently logged in with. I mean if I specify a gmail account to the test account I receive the test response even if I am using another gmail account on the device. I think I should receive NOT LICENSED if the gmail account I am using on the device is not specified in the test account in the google play account. I am clearing the application cache everytime.
Now I am a little bit confused if I publish the application will I have some problems with the license verification process. It is going to be my first published application that's why I am asking for some help. I have read lots of discussions and these in the android developers guide but I think I am missing something.
The version code is the same to the uploaded applications;
The application is signed and everything is done according to the specification of the android developer's guide.
I will highly appreciate if anyone can help about this or can suggest a complete processing steps of testing and publishing an application to google play.
You need to create Test account for testing licensing properly, all other users will get status of licensed users because application is not yet published.
see this, it may help you
Note: If a paid application has been uploaded to Google Play but saved only
as a draft application (the app is unpublished), the licensing server
considers all users to be licensed users of the application (because
it's not even possible to purchase the app). This exception is
necessary in order for you to perform testing of your licensing
implementation.
Here is the link
http://developer.android.com/guide/google/play/licensing/overview.html

Android App not allow licensed access to my own App (using the developer account)

Recently I published my first Android App on the Market Place (Trophy-to-Gamerscore Converter). It's a licensed app that worked perfectly during testing and once I publish it - that is to say I was able to access and use my own app on my Android Phone which syncs with my developer account.
I recently accidentally unpublished the app but quickly fixed this and got it straight back on the Market however no when I try and run my app I get a "Unlicensed" message. I tried re-installing and had a play around and found it is responding to the testing environment responses. I installed the exact .APK I uploaded and that is currently published so surely it should be running through Market License Management, see I am the developer and ultimately allowing me access right?
Can anyone help?
If you're the application developer -- and you have your developer account registered as the primary account on the phone -- then you cannot buy your own application.
Instead, Android Market will send whatever debug setting is listed here:
http://market.android.com/publish/editProfile
Note that the APK's package name has to match exactly so that the license server can find it.
Since we always return LICENSED for unpublished apps up until the point they're published, this behavior makes me believe you're not actually logged into the phone using the same account you have on your publisher account. In this case, you'll need to add the account on the phone tho the list of "test accounts" -- also on the page I linked to above.

Categories

Resources