注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风之云的足迹

点击这里添加博客描述

 
 
 

日志

 
 

Robotium自动化测试Android应用签名的问题  

2011-07-05 14:40:09|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Android应用的签名问题

碰到的问题:
微博客户端通过自己的签名,测试程序访问不到微博的程序,会报错,通过查找知道需要两个应用的签名一样才可以正确访问。

签名的说明

1、所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
2、Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
3、如果要正式发布一个Android应用,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布
4、数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能
5、签名后需使用zipalign优化程序
6、Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序

测试微博客户端的时候微博是已经被签名过的,如果测试程序需要访问微博客户端的话需要两个应用有相同的签名,可以使用两种方法来实现。
1、如果知道微博客户端的签名私钥文件,测试程序也使用该文件签名
2、去除微博客户端的签名,使用自己的私钥进行签名
暂时使用了方法二来做

生成签名证书
使用JDK自带的keytool工具, 运行下面的命令
 
keytool -genkey -alias androidauto.keystore -keyalg RSA -validity 20000 -keystore android.keystore 

/*解释:keytool工具是Java JDK自带的证书工具
-genkey参数表示:要生成一个证书(版权、身份识别的安全证书)
-alias参数表示:证书有别名,-alias androidauto.keystore表示证书别名为:androidauto
-keyalg RSA表示加密类型,RSA表示需要加密,以防止别人盗取
-validity 20000表示有效时间20000天
-keystore android.keystore表示要生成的证书名称为android
*/
输入完回车后屏幕显示:
输入keystore密码:[密码不回显]
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
Unknown]:qahz
您的组织单位名称是什么?
Unknown]:netease
您的组织名称是什么?
Unknown]:qa
您所在的城市或区域名称是什么?)
Unknown]:hangzhou
您所在的州或省份名称是什么?
Unknown]:zhejiang
该单位的两字母国家代码是什么
Unknown]:CN
输入< ***.keystore>的主密码
(如果和keystore密码相同,按回车):

执行以上语句后在执行的目录下会生成证书文件。

删除之前APK文件的签名

1、解压apk文件
2、删除解压出来文件夹中的 META-INF目录:META-INF存放签名后的CERT和MANIFEST文件,用于识别软件的签名及版权。
3、删除文件夹后重新把解压出来的其它文件夹压缩为zip文件,然后直接把文件后缀改为apk

为APK重新生成签名

1、将证书复制到与需要重新签名的apk文件相同的目录下
2、进入该目录下执行以下语句
 
jarsigner -verbose -keystore android.keystore -signedjar weibo_signed.apk 
netease_microblog_android_unsigned.apk androidauto.keystore

命令解释:
jarsigner是Java的签名工具,JDK自带
-verbose参数表示:显示出签名详细信息
-keystore表示使用当前目录中的android.keystore签名证书文件。
--signedjar weibo_signed.apk netease_microblog_android_unsigned.apk表示签名后生成的APK名称为 weibo_signed.apk,未签名的APK Android软件名称为netease_microblog_android_unsigned.apk
-androidauto.keystore表示签名文件的别名,生成证书的时候有书写

执行以上操作之后在目录下生成了weibo_signed.apk ,经过自己签名的APK文件

测试程序通过Eclipse加入APK签名
参考:http://jojol-zhou.iteye.com/blog/719428

  评论这张
 
阅读(1779)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018