I am trying to implement the APK Expansion Downloader Library into my application, but I am struggling to get past the LVL verification check.
Everytime I run up the application, I get a "Signature verification failed" message back from the LicenseValidator class. The application is signed in release mode, with a proper Keystore.
I have checked maybe 10+ times that the PUBLIC_KEY I am using inside of the application is the same as on the developer account, yet its still not working. I have also uploaded the application to the Play Store, with the expansion file (correctly named), and even added in my account as a Test account on the developer console. I have also tried adding the publisher account onto my device, and its still not working.
I do not know what to do next, I need this to work and cannot find any help on the internet as to how to fix this.
Thanks
Adam
you had several versions of file extansion? Because I had the same problem as the api sent me the name of an old file ... as a workaround in the verification code I just replaces the version number ... It's not terrible, but the bug does not come from me ...
Fixed. Via "Manage apps" I stopped the Google Play Store app, cleared its data (not the cache, which was zero bytes), then restarted my licensed app - licensing now works.
Related
THIS didn't solve my problem
THIS didn't solve my problem
THIS didn't make any sense to me but doesn't seem to fix my problem anyway.
So, I've release my app on the PlayStore and the google sign in doesn't work.
I've tried to run my app with the debug and release sha1, and that got me an ApiException: 12500:
After like 2 hours of research I figured I had to use the Google Play Signin SHA-1. I did, now I get an ApiException: 10:, at least that's some progress.
But there I am stuck.
As my knowledge goes, the ApiException 10 is either a SHA or client Id problem.
It can't be a SHA problem since I now use Play's SHA (In the firebase console I have the release and play sha-1 and updated services.json, adding the debug sha just brings me back to apiexception 12500).
So I thought and still think the problem is my client Id BUT
Using the default_web_client_id doesn't work. Both client ID's for both SHA's extracted from google-services don't work. The client Id I created in Google Developers Console won't work.
So I'm begging you to help me understand what I'm missing.
Thanks.
What I tried first :
I want through this error ApiException: 12500 for a long time. I tried everthing :
remove my debugkeystore, recreate one
add support email on firebase console
change versions of plugin
update google on my device
But when I was browsing stackoverflow, I found a solution :
Maybe the solution :
I went to this page (https://console.developers.google.com/apis/credentials)
Do not forget to select your project on the list (top left). Then go on "Oauth consent screen"
I filled almost all the fields : the application logo, the email support, the application homepage link, application privacy policy link (with the project.firebaseapp.com); and I saved.
Now it's working, I can login.
Hope this will help
Source
Thanks to answer of Pranjal Gupta : Google Sign In error 12500
I wanted to update an app I already published in the playstore to add achievements and leaderboard.
I have created the game in the Developer Console and everything was fine, everything worked with the debug SHA1 I have entered in the Google API for my app.
But now I have generated a signed APK with a different SHA1 (of course), and I have changed the debug SHA1 in Google API with the SHA1 for my signed APK.
I have pushed the APK to the playstore and published the game from the Developer Console. But now that my game is available in the store, when people try to connect to the Google Play Games they get "Failed to Sign in. Please check you network connection and try again".
I already looked at this link
but I am doing everything correctly.
Is it possible that I need to wait several hours before Google API handle the new SHA1 I have entered ? I have no idea of what is going on
You may refer with this thread. Try to move the app ID and leaderboard ID from strings.xml to ids.xml in values folder. You may also try to delete all client ids then add them again for debug keystore and release keystore.
Here's an additional reference which might also help: LIBGDX game configuration with google Play game services Errors
Here are a few points that might help you.
It takes several hours before your changes on Developer Console are actually published. Test the game after a few hours.
You don't need to publish in order to test it. You can do that by adding tester accounts in your developer console.
You can't "test" Google Play Services with developer account. You will need another account for that.
Edit:
Very Important:
Make sure you added required permissions to AndroidManifest.xml in
your Android project.
Ok so for everyone having the same problem as me.
Don't forget that now Google can sign your app.
The SHA1 fingerprint i needed was in the developer console, no need to get the SHA1 fingerprint of my APK.
I am installing security software/hardware into a couple different school districts. The application is at it's final stage, however I will need to send updates to users periodically. For example, a general password will be changed for the application every 6 months.
Installing an .apk is considered an "update" after the initial application is installed, correct?
I just have a feeling that there should be some easy way of doing this. I don't really want to give people an .apk. Someone could get smart and tear it apart to find the contents. That, and some others might not understand how to install files on their phone.
What are your ideas? Maybe a web link a user can go to that starts the install for them?
You have multiple misconceptions how updating, APKs and keeping keys secure work.
You have to host your APKs somewhere. Github releases is a pretty common way (but slow), but you could also use google drive, dropbox or your own server.
Your app has to fetch the server regularly and check if a new APK is available (pull-based). Second option is to use push notification in some kind e.g. FCM (push-based). Then you download the APK and let the user install it. Your app cannot start a installation by itself, it has to be done by the user.
But you can redirect the user to the installation menu with that APK, so he just has to click "Install". "Install from unknown sources" has to be enabled for that, if not the user will get an information about that from the OS with a way to enable.
There are apps like "APK extractor" which get you the APKs from google play without root, so there's nothing wrong about giving out the APK. Your APK should never contain secure keys which the user isn't allowed to see. It's easy to reverse engineer those keys, it's just a matter of time.
First of all, I'm sorry I don't speak very good english. I have a thesis project to make android app similiar like logo quiz using java. Basicaly, I have to make the admin site of this app or make it updatable not via play store. I'm going to put the newest APK version in a website host. Does anyone here know how to make it work like that? Or maybe you have another idea to make the admin site? please tell me
The update also must be installed. The user will check is there any newest version. Then user will download it and the downloaded APK will be automaticaly installed
This is not easy to do. The only option you have is to write some server side code to let a client know what the latest version is. The client can trigger a local notification and alert the user that a new version is available.
Facebook managed to do what you're asking but I'm sure a lot of engineering effort went into it.
[EDIT]
Google has updated their policy to forbid dynamic updates.
“An app downloaded from Google Play may not modify, replace or update
its own APK binary code using any method other than Google Play's
update mechanism.”
FYI Without uploading on play store, user will never come to know about the updates of your app.
Or
There must be some kind of notification you should implement in your admin and send to your users using the app, and through that notification you should ask user to download updated APK from your web.
The problem I'm trying to solve- I'm trying to get deep linking working, and testing it with Emulator. When clicking on posts, the links direct to the mobile web site. This is in the case of the user having permissions for the app, and the app is installed (on the emulator). In the Facebook app, it even acknowledges its out of date, but an upgrade (in app) crashes.
I also noticed that the Facebook app installed on the emulator is out of date (I installed it via adb install facebook.apk from github sdk).
SSO is working fine, and I have setup deeplinking effectively with iOS before (So I know how ti's supposed to work/test it, etc.). But the port to Android is being held back by this out of date 3rd party Facebook app. I'm assuming testing on device will solve it, because there the Facebook app will be the latest (which brings to mind- what if people haven't updated their android facebook app?).
My app settings:
I'd post code, but this seems to be pure integration and configuration issues.
Note: my app isn't published on Google Play, could that be the issue?
Also: maybe this is only testable on the device? My device is "in the mail" so trying to get this done with emulator as much as i can.
Update: Facebook told me that this requires the Facebook app 1.9.* which is not in the SDK. So, I got my hands on a device, and while I haven't solved it, at least the app bookmark functionality is working. Will update if/when I find the answer.
Update 11am: I finally got it to work!
I had to publish my app in the Play/Market.
Each time I tested, log out of FB-Android app, clear cache, and force stop. Acc.
to the documentation the bookmarks are cached. I also think the
facebook app-syncing occurs on launch, and never again. So if you
change anything in FB's app settings, you need to log out/clear
cache/stop for it to take in the fb android app.
Only one key worked, even though it says "hash" in the fb app settings, I think
my dev key was screwing things up. Double-confirm that your release
key is the same as the one listed in app settings.
The final secret sauce for me, was to turn off SSO and deeplinking, re-test
without anything set. Also, remove dev package from phone and
download from Play. (see: key mixups). then, I stepped back through
the configurations by first turning on SSO, testing, then turning on
the native deep linking.
Only works on real device, not emulator (unless you can get 1.9 installed on emulator, may work, did not go down that route to test)
Not sure if this matters, but it may: install app from Store/Play, not from Eclipse. Could be the key syncing thing.
I figured it out- involved doing the following:
I had to publish my app in the Play/Market.
Each time I tested, log out of FB-Android app, clear cache, and force stop. Acc. to the documentation the bookmarks are cached. I also think the facebook app-syncing occurs on launch, and never again. So if you change anything in FB's app settings, you need to log out/clear cache/stop for it to take in the fb android app.
Only one key worked, even though it says "hash" in the fb app settings, I think my dev key was screwing things up. Double-confirm that your release key is the same as the one listed in app settings.
The final secret sauce for me, was to turn off SSO and deeplinking, re-test without anything set. Also, remove dev package from phone and download from Play. (see: key mixups). then, I stepped back through the configurations by first turning on SSO, testing, then turning on the native deep linking.
Only works on real device, not emulator (unless you can get 1.9 installed on emulator, may work, did not go down that route to test)
Not sure if this matters, but it may: install app from Store/Play, not from Eclipse. Could be the key syncing thing.
Have you had a look at the troubleshooting tips for deep linking? (Sorry, have to ask.)
I'm wondering if perhaps the FB app on your device was not properly quit after the relevant setting changes.