I've been using my application for a while and produced a lot of data in it. Now it came time to upgrade it but the problem is that I've bought a new laptop and I can't upgrade the application due to different signature another IDE is using. It is impossible now to save the data, right?
Update: I didn't use any .keystore intentionally, I was just installing from Eclipse.
It doesn't matter along as you use the same .keystore when you sign the application.
You need to use the keystore and the same options.
So you are saying that you have uploaded your application without any signing certificate, basically copying the .apk from the /bin folder? As far as I know this is not possible.
If you indeed upload it with your .debug certificate, then I am afraid you will not be able to update your app, since as you have noticed, every installation of Android ADT creates a different .debug certificate on each machine.
Related
The problem is the following:
I have been developing my game on my laptop until now without a keystore set in Unity editor but I was able to upload my apk file to the Play Store. Now I bought another computer and wanted to upload an update but it gets rejected because it is signed differently.
I tried copying my debug.keystore file from my old computer to my new one, but it also gets rejected because it's for debug.
So my question is: Does Unity or Google Dev Console use a default keystore which the Developer Console accepts? And if so, then where can I find it? Would it be better to publish my application again with a new keystore created by me? (It's only in closed beta, so it's not that big of a deal, but I want to know why this is happening.)
There's no way to recover your key.
I once faced a similar situation, since then,
I've made several copies of my key. Once again,
there is no way to recover this.
You need to create new a keystore and make a backup to prevent any issues in the future
I have attempted to install an apk to my phone with an app that I already have installed. I have changed the version number however the issue is clearly down to the original signature of the app.
The app itself was originally developed by another company so I do not have the original signature for this? Do I need the original keystore file to allow for this?
Also it is unlikely the external company will still have the original keystore file - if this is the case & I cannot use the original key what is the next step from this?
Obviously i'd like users of the app to be able to 'upgrade' the app through Google Play without directly uninstalling the app manually themselves first.
Can anyone provide a solution ideally without the original keystore file?
You can't upgrade with new keystore as #orip said.
You could ask your developer to send you keystore file. Otherwise you will have to change package name, sign with a new keystore and upload as a new application.
You need the original keystore. As far as I know, without it you can't upgrade or upload a new version to the Play store, you'll always have to uninstall and reinstall.
I'm developing an open-source app for Android using Phonegap. The development reached the stage at which it's usable enough to release it to public (something like a beta version). I just want to put my current APK on Github. Is there any reason why I would not want to uploading the APK signed with debug key and signing it with release instead (and going through the hassle of making one etc.)?
A debug key isn't any different from a normal key. So there's no reason it would harm anything. If you ever want to upgrade it, the upgrades will need to be signed with the same key or the user will have to uninstall first. And if you ever upload to Google Play, the same key has to be used for all uploads there. So make sure whatever key you release under is saved somewhere.
The only possible problem I see is that debug keys may have a short expiration date and need to be recreated (ADT used to expire them in 1 year). So if you plan on maintaining it you may want to create a key with a longer expiration.
You should create a key as there may be people who will be helping you in your current project and they will also be signing app, but with a different key and if they later upload apk to the GitHub, the user's will get different signature warning which will result of having to reinstall the app and thus losing any persisted data.
As long as you don't want anyone helping you out, it's fine the way it is.
You can use the one Android created for you if you are too lazy to create a new one. It is stored in C:\Users\<your_user_name>\.android assuming that you are using Windows as your OS.
No problem, you can just upload the release apk while making a new repo release on GitHub. I also do it, that way people who visit my repo can try the app then and there and it will be really helpful than uploading or hosting the apk somehwere else.
Also to make it easier to update the apk in future repo releases, I made a library which detects new repo release and downloads the latest apk. You can check out my library here. Hope this will be useful to you as well.
Is it possible to release an update of an android app by signing it with a different certificate than the one originally used? I know it gives an error message normally when we try to upload such a build to the market. But is there any way out, like marking it as a major release, specifying somewhere in the market place?
No, you can not do it. The certificate is a tool to ensure you're the one who firstly uploaded the application.
So always backup the keystore!
Not currently, but it should be possible in the future when this issue get's resolved:
https://code.google.com/p/android/issues/detail?id=30870
Be clear though, that it's absolutely no excuse for loosing your keystore. It would just allow old keys to be renewed for security, and allow apps to move domains or change ownership.
Edit: I didn't think this was possible, but I just found this:
How to sign an APK with more than one certificate?
Awesome!
I have an Android project that branched into three different applications, app-1, app-2 and app-3, that apply some customizations. Currently there is a lot of code duplication, making maintenance a nightmare: do the changes in one of the branches, and then merge the other two.
So we create a library project, named app-core, that factors out most of the duplicated code. So far so good.
When I launch this into an emulator where the application was already loaded (before the refactoring), I get this exception:
Re-installation failed due to different application signatures
A different signature? But I just added a line in the .classpath to link to the app-core Java project!
The main question is: are the existing users going to be bothered by this too?
And the side question: Why is it a different signature?
The digital signature is driven by a signing key that exists on the machine that signs the app. If Developer A compiles an app using the standard debug key and installs it in an emulator, then tries installing some other variation of the app -- one signed with a production key, one signed with Developer B's debug key, etc. -- in the same emulator, you will get that error.
The main question is: are the existing
users going to be bothered by this
too?
Do you have the production signing key that you used for the version of the app your existing users are using? If yes, then there should be no problem. If no, you're screwed.
Uninstall the application on the device, then run code again, it will work. It happens for me and I tried same thing, now it is working correctly.
For this problem u need to check that the correct key is used under (Window->Preferences->Android->build).
This u can check from the android.mk file of the app.
And on placing the correct key path , CLEAN and BUILD the project to avoid this error .
I have had the similar kind of issue. If you are installing it on your device then you need to uninstall the app on your device prior to install it from eclipse. It will definitely solve your problem.
Cheers