Android中解决debug.keystore到期的问题

开发Android或者jee或者其他java应用时,如果eclipse中的项目前有个红叉叉,但是src下有没有任何提示错误但是又不能通过编译的时候如何找到项目工程的错误根源呢?方法如下:

打开eclipse的problem视图(如果关闭了可以在window->show view下找到problem视图),然后在视图中就可以看到项目的根源问题何在了,呵呵。

言归正传,回到我遇到的问题上。

问题描述:

在导入一个Android App后提示如下错误:

Description Resource Path LocationType

Error generating final archive: Debug Certificate expired on 8/18/11 9:30 PMxxxxxx(这个是我的项目名称)UnknownAndroid Packaging Problem

原因分析:

android要求所有的程序必须有签名,否则就不会安装该程序。在我们开发过程中,adt使用debug keystore,在eclipse中的preference->android->buid中设置。debug的keystore默认有效期为一年,如果你是从一年前开始着手android开发的,那么在一年后很可能出现debug keystore过期,导致工程出错(比如我的情况)或者无法生成 apk文件等等(由于我的eclipse和sdk/adb等重新安装折腾过好多次了,一直没遇到这个问题,今天运气好碰上了,呵呵)。

解决方法:

只要删除debug keystore和ddms.cfg文件即可,系统会为你重新生成有效期为一年的私钥。 debug keystore和ddms.cfg文件地址位于:

1)linux(Mac OS):

在eclipse中的Window->Preferences->Android->Build中Default debug keystore查看keystore的地址:

“/home/用户名/.android/debug.keystore”

删除此路径下的debug.keystore及 ddms.cfg

2)Windows:

进入:C:\Documents and Settings\用户名\.android 删除:debug.keystore及 ddms.cfg

进入:C:\Documents and Settings\Administrator\.android删除:debug.keystore及 ddms.cfg

(注意:即使是Windows下也应该在eclipse中的Window->Preferences->Android->Build中Default debug keystore查看keystore的地址位置,否则会出现找不到文件的情况)

android sdk 用CMD如何重新生成debug.keystore

1)首先你要确定你安装的JDK位置,Windows->Preferences->Java->Installed JREs,你可以看到是Jre的location,再在dos cmd模式下查看你当前系统的path是否已经包含了。如果没有包含添加到当前环境参数中。因为我们要用到的keytool命令在这个目录下呀。

2)接下来就要找到你不前AVD的debug.keystore的位置,windows->perferences->android->build,

default debug keystore文本框中,列出C:\Documents and Settings\XXXXuser\.android\debug.keystore,这就是默认的debug.keystore,你可以先把这个文件改一下名。我们需要创建一个新的debug.keystore

3)紧接着我们来创建一个新的debug.keystore,在cmd下,进入C:\Users\Administrator\.android目录

执行命令如下:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000

输入密码,用户等信息确认后便可生成一个debug.keystore

4)好了,接下来我们就需要获取MD5,去google申请一个apikey,很简单

在当前目录下执行:

keytool -list -alias androiddebugkey -keystore debug.keystore

根据提示输入你在第三步所设的密码,ok,就会得到下面信息,

Certificate fingerprint (MD5): FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4

这就是我们申请apikey时需要的FC:ED:DE:BS:16:1A:E8:05:F0:44:AD:4E:45:42:4B:D4

通过浏览器访问http://code.google.com/android/maps-api-signup.html

在My certificate’s MD5 fingerprint文本框中输入您刚刚获取到的MD5码

点击Generate API Key,当然前提是你的有一个google的账户。