So this might sound like a complete and total noob question, but I’m going to ask and see what I find anyway.
I’m working on an Android application using Eclipse IDE. I have two development machines that I use (one for work, one for home) and one is 64bit while the other is 32bit. The phone that I’m using to test my application is a Google Nexus (Verizon flavored, most up to date drivers). If I build and run the application using one machine, then try to do the same on the other machine I get a console error that tells me to run an ADB command to uninstall my app because the signature has changed.
From what I understand it’s because “debug.keystrore” (located in %USER_HOME%/.android) is different for each machine. Why does it do this? I assumed that the application signature was unique to the app not the app + dev machine. Is this normal behavior? If so, is there something I can do to get around it? I’m worried that copy/pasting the file between machines could cause problems, so I haven’t tried it yet. Would I have to move this file every time I switch machines? Also, if I release my app into the wild; then loose my computer and have to start using a new computer (thus, changing the application sig) will everyone who installed my app have to uninstall the app because the application sig is different?
Bonus round: is there some way I can configure my IDE so that I don’t have to change where eclipse looks to find the SDK every time I switch machines (i.e. make it look in both the ProgramFiles directory and the ProgramFiles (x86) directory.
To make sure the app was built by the same developer, Android wants the signature to be the same. Feel free to copy your debug key between machines. It has nothing to do with your machine or whether it’s 32/64 bit; it only proves that you’re the same developer.
When it comes time to release your app, you want to be very careful to
If you ever lose your release key, you won’t be able to update your app, as you suspected.
Update: To make my answer more complete, it looks like the way to tell Eclipse which key to use is under Preferences -> Android -> Build.
I use Linux and don’t use Eclipse; what I do is just copy
~/.android/debug.keystorefrom machine to machine, and the ant build tool uses it automatically, avoiding the pesky “certificates don’t match” installation error.For my release keystore, I have this line in my
ant.properties:and keep
my-release-key.keystorein a private repository much to the same effect.