一.ionic 自动签名的好处与坏处(ionic build android/ios)

 好处在于:可以直接安装手机上进行安装测试,也可以上传Android或者iOS平台

不好的地方在于:你的电脑环境变了换电脑了,再打包出来的签名就会不一样了,再打包出来的app就无法覆盖之前的版本,会报签名不一样的问题

二.不采用自动签名

关于签名官网提供了一种新的方式,参加官网https://ionicframework.com/docs/intro/deploying/

1.打包运行 命令 (安卓为例)  

ionic build android -release

 

2.生成证书文件

keytool -genkey -v -keystore test.keystore -alias demo.alias -keyalg RSA -validity 20000
命令运行之后会让你填写密钥库口令,
再次确认,之后是一些相关的个人以及公司信息,没输入完一次,回车就行,
之后还会有一个密钥库的口令,可以和密钥库的一样或者重新写; keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来;
-keystore test.keystore 证书的文件名; 
-alias sign.alias表示证书的别名;
-keyalg RSA 生成密钥文件所采用的算法; 
-validity 20000 该数字证书的有效期,单位天;
出现的问题:
(1).keytool不是内部或可用命令,这里需要把这个路径配置到这个工具的上级文件夹,
比如我的keytool.exe是在Java\jdk1.8.0_121\bin\这个文件下,配置目录到
Java\jdk1.8.0_121\bin\;最后这个\不要丢掉,配置的时候注意;(分号)没有了要加上;
(2).输入密钥库口令的时候输入但并不在窗口上展示,其实已经输上了;
3.对生成的未签名的apk进行签名
jarsigner -verbose -keystore /yourpath/demo.keystore -signedjar signafter.apk android-release.apk sign.alias

jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来; 
-keystore /yourpath/test.keystore 之前生成的证书 找到证书的位置
signafter.apk 签名后的apk 
android-release.apk 需要签名的apk 
sign.alias证书的别名

注意的问题:

(1).配置的变量目录要和上边的类似,否则也会报命令不可用的问题.

位于jdk1.6.0_24\bin\目录下

(2).运行这个命令的时候需要切换目录到你需要签名的apk的目录,否则会报错jar文件无法打开

(3).如果你是在你签名证书存放的目录下运行的这个命令,那么你需要把你要签名的apk复制到这个目录下,否则也会报错jar文件无法打开

(4)有些情况下会提示未提供 tsa 或 tsacert(其实不影响apk的使用)

可以再命令后加上  -tsa https://timestamp.geotrust.com/tsa

4.对签名过的apk进行优化,可以不优化

zipalign -v 4 signafter.apk  signend.apk

 1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
 2) 表示对已签名文件signafter.apk进行优化,优化后的文件名为 signend.apk

5.查看apk签名

1)

Mac下,把apk的后缀改为zip打开,然后查看META-INF下的.RSA文件 
Windows下,用winner打开apk,同样查看.RSA文件 
执行命令

keytool -printcert -file META-INF/CERT.RSA

注意后面文件的名称与路径即可,可以查看到签名信息,主要是查看Certificate fingerprints下的MD5与SHA1,这两个不同就代表着签名不同

2)查看证书文件的签名(keystore)

keytool -list -v -keystore 你自己的打包用到的keystore的路径

例如   keytool -list -v -keystore  F:\workappusekey\test.keystore

6.利用证书文件当换电脑打包同一个app时,使app签名不变

    利用生成的数字证书和包名可以保证签名不变,生成的数字证书文件和包名要保存好;

 如果对包名有要求,在对项目签名前,确定包名;

  在 start 命令创建项目的时候,后边加上 -i或者--id来设置包名,可以避免创建项目之后再去修改包名

希望有问题的地方,看到的大神帮补充一下,谢谢

ionic 项目签名的更多相关文章

  1. ionic项目 环境搭建及基本操作

    一.安装 1.安装node.js 3.安装ionic & cordova: 命令行输入:npm install –g cordova ionic 注:-g表示全局安装,也可以进入指定的目录安装 ...

  2. ionic生成签名的APK方法总结

    ionic生成签名的apk步骤如下: 1. 在项目目录下运行 ionic build android --release 先生成一个未签名的apk 2. 在项目目录下运行 keytool -genke ...

  3. ionic项目编译打包(android平台)

    ionic项目相关开发工作完成之后(建立ionic工程项目可以参考上一篇文章ionic项目工程建立),就可以进行项目的编译打包apk应用包. 打包编译需要在平台环境下,这里只记录下android平台打 ...

  4. 浅谈对ionic项目的理解

    在思考怎么将客户端app连接到服务器的时候,就在想ionic项目的本质是什么,一开始因为ionic serve这一命令,我以为它自己就是个服务器,但是后来一细想又感觉不是这样,不然客户端又该怎么和服务 ...

  5. 实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目

    系列文章 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求  实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目   实战使 ...

  6. [转]ionic项目之上传下载数据

    本文转自:http://blog.csdn.net/superjunjin/article/details/44158567 一,首先是上传数据 记得在angularjs的controller中注入$ ...

  7. ionic项目的一些简单操作

    1.首先保证开发环境没问题: 2.下载一个ionic项目:命令ionic start myApp tabs(myApp的项目的名称) 3.在运行项目之前,要先创建平台: ionic platform ...

  8. cordova安装--创建ionic项目

    1.简介ionic ionic 是一个强大的 HTML5 应用程序开发框架(HTML5 Hybrid Mobile App Framework ). 可以帮助您使用 Web 技术,比如 HTML.CS ...

  9. Ionic项目中使用极光推送

    Ionic项目中使用极光推送-android   对于Ionic项目中使用消息推送服务,Ionic官方提供了ngCordova项目,这个里面的提供了用angularjs封装好的消息推送服务(官方文档) ...

随机推荐

  1. 纯css进度条效果

    <!--html代码--> <!DOCTYPE html> <html lang="zh"> <head> <meta cha ...

  2. idea集成maven

    1 下载maven并解压 至 http://archive.apache.org/dist/maven/maven-3/下载zip包,下载后的包如下: 解压到安装目录下:如:D:\software,解 ...

  3. JavaCV 学习(一):JavaCV 初体验

    最近工作中因为项目的原因边学边用,接触并使用JavaCV做了一些相关的产品,目前觉得,JavaCV在图形图像(人家本身就是一个视觉库)的功能真的挺强大,而且使用起来避免了复杂的平台处理.下面整理一下对 ...

  4. Servlet案例1:用户登录

    数据库准备: CREATE DATABASE web; USE web; CREATE TABLE users( id INT PRIMARY KEY AUTO_INCREMENT, username ...

  5. 【Spark调优】:结合业务场景,优选高性能算子

    聚合操作使用reduceByKey/aggregateByKey替代groupByKey 参见我的这篇博客说明 [Spark调优]:如果实在要shuffle,使用map侧预聚合的算子 内存充足前提下使 ...

  6. python实现线性排序-基数排序

    基数排序算法是一种是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较. 由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于 ...

  7. Liferay平台开发使用详细PPT演示文稿

    主要章节: 概述 功能和使用 开发扩展 安全.认证 高可用 Demo 独立流程演示工程: Liferay集成Activiti开发工程: PPT演示文稿下载 Demo程序分2部分: 独立流程演示工程:h ...

  8. Jenkins和gitlab集成自动构建

    Jenkins安装插件 Jenkins上需要安装如下插件 Gitlab Hook Plugin,GitLab Plugin Job配置 在需要自动触发的Job中 选择Build Triggers进行如 ...

  9. 关于resin的illegal utf8 encoding at (190)解决方式

    最近在项目开发中,出现了编码异常,内容如下:- illegal utf8 encoding at (190)com.caucho.jsp.JspParseException: illegal utf8 ...

  10. python列表常用方法

    list是一个类,用中括号括上,逗号分隔,元素可以是数字,字符,字符串,也可以是嵌套列表,布尔类型. 1.通过索引取值 li=[1,12,9,'age',['wangtianning',[19,'10 ...