今天要写一篇TraceView的使用文档,结果在运行示例程序的时候,报下面错误:
Error generating final archive: Unable to get debug signature key
因此暂时中断了文档编写,小郁闷。
搜了一下网上的帖子,解决办法不多,看到很多“重新安装”的字眼就来气,好生厌恶。
花了20分钟,最终搞定,我的解决方法如下:
1.进入Eclipse->Window->Preferences->Android->Build
会看到有一个default debug keystore的选项,
我的对应内容为:
/home/user/.android/debug.keystore
2.从报错信息来看,就是android无法执行在对apk签默认的debug签名。而上面所找的那个路径下的debug.keystore就是用来做这个事情的。
我试着修改这个路径,发现竟然改不了!!我就呵呵了,具体哪里改真不知道。。。
3.于是打开终端,进入上面路径:
cd /home/user/.android/
4.查看下面的内容:
ls -al
5.我发现该路径下压根没有所谓的debug.keystore文件,只有下面两个文件:
adbkey adbkey.pub
6.奇了怪,妈蛋。怪不得没法子签名。虽然记得这个东西android和eclipse应该是会自动生成的,但现在的确是没有,具体原因想不通。
前两周把Ubuntu系统从10.04LTS升级到12.04LTS,因为是做系统的同事给的镜像升级的,所以我怀疑最有可能是环境配置的问题(其实大部分工具问题都是配置问题造成的嘛)
7.当下想着自己手动生成一个debug.keystore文件算了,刚才搜索别人的帖子时刚好睥见了一段信息,如果自己要生成,就新建一个文本debug.keystore,然后在里面的填入内容如下:
Keystore name: "debug.keystore"
Keystore password: "android"
Key alias: "androiddebugkey"
Key password: "android"
CN: "CN=Android Debug,O=Android,C=US"
8.将这个文件拷贝到/home/user/.android/目录下面。问题出现了,竟然没有权限!
9.这下引起了我的一个关注,难道是权限问题?重新进入终端,进入/home/user/目录:
cd /home/user/
10.查看所有文件权限:
ls -al
11.结果如下(只摘取了部分内容):
user@swd2:~$ ls -al
total 83976
drwxr-xr-x 42 user user 4096 11月 18 17:33 .
drwxr-xr-x 3 root root 17 10月 16 10:16 ..
drwxr-x--- 2 root user 36 10月 24 11:51 .android
-rw------- 1 user user 17635 11月 10 10:41 .bash_history
-rw-r--r-- 1 user user 220 10月 16 10:16 .bash_logout
-rw-r--r-- 1 user user 3618 10月 16 16:37 .bashrc
-rw-r--r-- 1 user user 3486 10月 16 10:16 .bashrc~
drwxrwxr-x 2 user user 52 10月 24 17:41 .beyondcompare
12.果然.android的权限只有750,刚好我还安装了beyondcompare工具,它的却是775
13.于是,我尝试先改下权限试试:
sudo chmod 775 .android/
14.我没有着急就把刚才自己手动新建的debug.keystore文件拷贝到/home/user/.android/目录下面去,而是直接重新在Eclipse中尝试运行我的示例应用。
15.幸福来得就是这么突然!结果,直接可以运行了,报错已经消失!
16.事后分析:我重新进入/home/user/.android/目录,发现,此时,下面已经生成了另外两个文件:
adbkey adbkey.pub avd debug.keystore
因此,大致的原因我们可以猜想得来了,由于Eclipse没有权限去生成该文件,所以报错。
17.以上,希望能对同样遇到这样问题的朋友提供到小帮助。收工,继续写文档的干活!