IONIC 开发的Android应用程序签名(或重新签名)详解
完全通过DOS命令来完成apk签名
给apk签名一共要用到3个工具,或者说3个命令,分别是:keytool、jarsigner和zipalign,下面是对这3个工具的简单介绍:
1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件;
2)jarsigner:使用数字证书给apk文件签名;
3)zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)
从这3个工具的作用也可以看出,这3个工具的使用顺序。通常我们自己所开发的所有应用程序,都是使用同样的签名,即使用同一个数字证书,这就意味着:如果
你是第一次做Android应用程序签名,上面的3个工具都将用到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要用到jarsigner
和zipalign就可以完成。
为了方便使用上面3个命令,首先需要将上面3个工具所在路径添加到环境变量path中(我说的是为了方便使用,没有说必须要这么做)。怎么配置环境变量就不在此讲解了,这里需要说一下这3个工具默认所在的路径:
1)keytool:该工具位于jdk安装路径的bin目录下;
2)jarsigner:该工具位于jdk安装路径的bin目录下;
3)zipalign:该工具位于android-sdk-windows/tools/目录下
不知道大家是否注意到keytool和jarsigner两个工具是jdk自带的,也就意味着生成数字证书和文件签名不是Android的专利;另外从字面上理解jarsigner也能猜得出该工具主要是用来给jar文件签名的。
1》使用keytool工具生成数字证书
keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000
说明:
1)keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;
2)-keystore liufeng.keystore 表示生成的数字证书的文件名为“liufeng.keystore”;
3)-alias liufeng.keystore 表示证书的别名为“liufeng.keystore”,当然可以不和上面的文件名一样;
4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA;
5)-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效
在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:

2》使用jarsigner工具为Android应用程序签名
jarsigner -verbose -keystore liufeng.keystore -signedjar notepad_signed.apk notepad.apk liufeng.keystore
说明:
1)jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中;
2)-keystore liufeng.keystore 表示签名所使用的数字证书所在位置,这里没有写路径,表示在当前目录下;
3)-signedjar notepad_signed.apk notepad.apk 表示给notepad.apk文件签名,签名后的文件名称为notepad_signed.apk;
4)最后面的liufeng.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称
3》使用zipalign工具优化已签名的apk(非必须但建议这么做)
zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk
说明:
1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
2)notepad_signed.apk notepad_signed_aligned.apk 表示对已签名文件notepad_signed.apk进行优化,优化后的文件名为notepad_signed_aligned.apk
说明:如果你以前的程序是采用默认签名的方式(即debug签名),一旦换了新的签名应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。
IONIC 开发的Android应用程序签名(或重新签名)详解的更多相关文章
- Cordova/Ionic开发的Android APP启用Chrome Inspect调试的方法
Cordova/Ionic开发的Android APP,需要启用WebView的调试模式,才可以在Chrome浏览器中输入chrome://Inspect,然后使用大家熟悉的开发者工具进行调试.不启用 ...
- 分享我开发的网络电话Android手机APP正式版,图文详解及下载
分享我开发的网络电话Android手机APP正式版,图文详解及下载 分享我开发的网络电话Android手机APP正式版 实时语音通讯,可广域网实时通讯,音质清晰流畅! 安装之后的运行效果: 第一次安装 ...
- Android Studio系列教程五--Gradle命令详解与导入第三方包
Android Studio系列教程五--Gradle命令详解与导入第三方包 2015 年 01 月 05 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处!http://s ...
- Android ADB命令教程二——ADB命令详解
Android ADB命令教程二——ADB命令详解 转载▼ 原文链接:http://www.tbk.ren/article/249.html 我们使用 adb -h 来看看,adb命令里面 ...
- Android 中各种权限深入体验及详解
Android 中各种权限深入体验及详解 分类: Android2012-07-15 19:27 2822人阅读 评论(0) 收藏 举报 androidpermissionsinstallersyst ...
- Android SDK中的Support兼容包详解
这篇文章主要介绍了Android SDK中的Support兼容包详解,本文详细区分了Support Library的版本区别.各种Theme的概念和使用注意事项等内容,需要的朋友可以参考下 背景 来自 ...
- Android消息传递之EventBus 3.0使用详解
前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...
- android emulator启动的两种方法详解
android emulator启动的两种方法详解 转https://blog.csdn.net/TTS_Kevin/article/details/7452237 对于android学习者,模 ...
- Android低功耗蓝牙(BLE)使用详解
代码地址如下:http://www.demodashi.com/demo/13390.html 与普通蓝牙相比,低功耗蓝牙显著降低了能量消耗,允许Android应用程序与具有更严格电源要求的BLE设备 ...
随机推荐
- MINA2 框架详解(转)
Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP.UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务.虚拟机管道通信服务等),M ...
- <java基础学习>01环境变量配置
安装完JDK开始配置系统环境变量,在path变量里面添加java的bin目录 方法二: 配置完成后 在命令下输入javac查看是否配置成功 第一个java程序 hello world! class H ...
- widows下node.js环境搭建及运行js
昨天刚刚开始学习node.js,网上一些教程不是很清楚,所以总结一下我的经验. 1.安装. 安装省略,就到官网上去下载安装一下就好.安装完成之后,打开cmd,输入"path",查看 ...
- Eclipse 常用快捷键
Ctrl + Shift + L : 可以查看快捷键方式 Ctrl + 1 : 快速修复 Ctrl + / : 注释当前行 Ctrl + D : 删除当前行 Shift + Enter : 可以在当 ...
- 【初级】linux mv 命令详解及使用方法实战
mv:移动文件或者将文件改名 前言: mv是move的缩写,顾名思义是移动.它的功能既能移动文件/文件夹,又可以用来改名,经常用来做文件的备份,比如再删除之前,先给文件做备份(保护数据)也是linux ...
- eclipse + python dev
错误:Project interpreter not specified解决方法 http://blog.csdn.net/magictong/article/details/7288732 安装Py ...
- 使用strace 工具跟踪系统调用和信号
使用strace来执行程序,它会记录程序执行过程中调用,接收到的信号,通过查看记录结果,就可以知道程序打开哪些文件,进行哪些读写,映射哪些内存,向系统申请多少内存等信息 strace 移植 下载str ...
- 网卡故障:弹出界面eth0: 错误:没有找到合适的设备:没有找到可用于链接System eth0 的
原文地址:http://www.mamicode.com/info-detail-112000.html 报错截图如下: 排错步骤如下: 1:查看系统是否识别相应网卡(发现没有eth0网卡存在): 根 ...
- Maven 导出依赖Jar,生成source.jar,javadoc.jar
下载最新版的Maven http://maven.apache.org/download.cgi 解压到本地文件夹 新建环境变量 MAVEN_HOME maven解压目录 在path加 ...
- 近期编程问题——read:resource temporarily unavailable
EAGAIN错误 出现问题:read:resource temporarily unavailable 原因:这种错误一般出现宰非阻塞的socket编程中,资源暂时不可用. 我的解决方法:囧,后来改成 ...