1数字签名
Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。 为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。
在这里,我会使用自己的密钥文件(*.keystore) 来对自己开发的程序进行签名,而不用ADT自带的。自定义的apk签名工作可以通过两种方式来完成:一种是通过ADT提供的图形化界面完成apk签名;另外一种是完全通过DOS命令来完成apk签名,这里使用第二种。
2签名步骤
2.1 准备工作
给apk签名要用到keytool工具:
keytool:生成数字证书,即密钥,也就是扩展名为.keystore的文件;
2.2 使用keytool工具生成数字证书
keytool -genkey -v -keystore zhangxueyi.keystore -alias zhangxueyi.keystore -keyalg RSA -validity 20000
说明:
1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;
2)-keystore zhangxueyi.keystore 表示生成的数字证书的文件名为“zhangxueyi.keystore”;
3)-alias zhangxueyi.keystore 表示证书的别名为“zhangxueyi.keystore”,当然可以不和上面的文件名一样;
4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA;
5)-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效.
在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:
这样的话,就会在文件目录"F:\毕业设计\张学义_毕业设计\数字签名"下成功的生成了我新建的密匙:
7.2.3 给APK签名
当手机端的程序部署成功之后,就会在本项目的bin文件夹下生成一个apk文件了,我们就是要对这个apk进行签名:
现在,我们要直接对此apk进行签名:
a. 在Android工程名称上点击右键,依次选择“Android Tools” - “Export Signed Application Package ...”
点击:“Next”
选择“Use existing keystore”,在“Location”中选择自己的密匙,输入密码,点击“Next”:
点击“Next”:
选择apk签名后要存放的位置,点击“Next”:
好了,现在就会在目录“F:\毕业设计\张学义_毕业设计\数字签名”中就会出现自己已经签名的apk了:
3 注意事项
如果以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。如图所示:
因为程序覆盖安装主要检查两点:
1)两个程序的入口Activity是否相同。两个程序如果包名不一样,即使其它所有代码完全一样,也不会被视为同一个程序的不同版本;
2)两个程序所采用的签名是否相同。如果两个程序所采用的签名不同,即使包名相同,也不会被视为同一个程序的不同版本,不能覆盖安装。
另外,有人可能会认为反正debug签名的应用程序也能安装使用,那也没有必要自己签名了嘛。千万不要这样想,debug签名的应用程序有这样两个限制,或者说风险:
1)debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名
2)debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题。不要小视这个问题,如果你开发的程序只有你自己使用,当然无所谓,卸载再安装就可以了,但要是你的软件有很多使用客户,这就是大问题,就相当于软件不具备升级功能!
参考自http://blog.csdn.net/lyq8479/article/details/6401093
相关推荐
android myeclipse 将java 程序 生成APK 发布
获取apk发布者信息: java -jar ApkAnalysis.jar “apk路径” -certs 0 issuer 获取apk声明的权限: java -jar ApkAnalysis.jar “apk路径” -permissions 当作为架包使用时,通过 ApkAnalysis apkAnalysis = ...
直接从终端将APK发布到Google Play 此程序包提供了一种简化的方法来在Google Play商店中发布程序包。 的甲叉 。 :memo: 目录 :chequered_flag: 入门 apkup入门非常简单直接。 全局或本地安装apkup软件包: ...
头teamcity-android-发布TeamCity 插件,它使用 Google Play Developer API 处理将 Android APK 发布到 Google Play 商店。 这是一个 IDEA 项目模板,用于为 TeamCity 创建服务器端和代理端插件有关背景信息,请...
修改android appmanager
appgallery-publisher:一个Gradle插件,允许将APK发布到华为的App Gallery
自我学习, Xamarin 安卓发布APK包步骤
fir-publisher:Gradle插件,用于将apk发布到fir.im
有些时候我们的软件用到SQLite数据库,这个时候怎么把一个做好的数据库打包进我们的APK呢
Android apk发布到google play上检测google play的新版本,并且下载更新
unity3d发布apk在android虚拟机中运行的详细步骤(unity3d导出android apk),总的流程分为以下6个步骤: 1、安装java_jdk 2、配置java环境变量 3、更新android的sdk 4、从Unity3d中发布出apk文件 5、创建android虚拟机...
应用名称,发布版本(构架版本),包名,SDK,编译目标SDK,ABIs内核,权限,签名,语言,等等等等这些只有在android或者编译器等软件中上才能看到的信息。 可以根据程序名和版本一键重命名。 无需安装java以及...
发布版_陀螺仪.apk.apk
APK发布和部署 通过带有CI / CD的Android项目的changelog部署APK文件。 该脚本将发行版APK文件上传到Dropbox并发送一封电子邮件,其中包含下载链接和changelog。 我的GitLab CI / CD for Android项目中使用了此脚本...
)手机端获取安卓软件apk包的signature签名信息。包括发布者、拥有者、证书有效期、公钥、摘要(MD5)。纯手机端获取,无需电脑。程序员朋友的好帮手,截止目前(2020-04-11)没发现可在手机端获取签名信息的同类软件...
一个简单的gradle插件,可将android版本发布到Google Play商店中的任何曲目。 风味和变体也受支持。 要使用,请将以下内容添加到您的build.gradle文件中:buildscript {repositories {mavenC一个简单的gradle插件,...
5_base.apk.1
CMFA-2.5.14-universal.apk
安卓ROM或APK发布请登录刷机大师开放平台http://open.mgyun.com/ 刷机大师开放平台本着2013开放共赢的宗旨,帮助开发者快捷上传和管理资源操作简单方便,多渠道发布,一账 号通用全平台;同时开放平台会将资源使用,...