一.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. 牛客JS编程大题(一)

    1.找出元素 item 在给定数组 arr 中的位置 function indexOf(arr,item){ return arr.indexOf(item);} 2.计算给定数组 arr 中所有元素 ...

  2. NLP常用术语解析

    分词(Segment):中英文都存在分词的问题,不过相对来说,英文单词与单词之间本来就有空格进行分割,所以处理起来相对方便.但是中文书写是没有分隔符的,所以分词的问题就比较突出.分词常用的手段可以是基 ...

  3. ES6-字符串扩展-padStart(),padEnd()

    ES6 引入了字符串补全长度的功能,如果某个字符串不够指定长度,会在头部活尾部补全. padStart() 用于头部补全: padEnd() 用于尾部补全. 上面代码中,padStart 和 padE ...

  4. InnoDB体系架构(一)后台线程

    InnoDB体系架构——后台线程 上一篇已经了解了MySQL数据库的体系结构 这一篇除了介绍InnoDB存储引擎的体系架构外,同时进一步了解InnoDB的后台线程. InnoDB存储引擎是多线程的模型 ...

  5. web API简介(一):API,Ajax和Fetch

    概述 今天逛MDN,无意中看到了web API简介,觉得挺有意思的,就认真读了一下. 下面是我在读的时候对感兴趣的东西的总结,供自己开发时参考,相信对其他人也有用. 什么是API API (Appli ...

  6. struts2框架学习笔记4:获取参数

    第一种参数获取方式: 编写一个前端页面,提交表单,做示例: <form action="${pageContext.request.contextPath}/Demo1Action&q ...

  7. Java匹马行天下之JavaSE核心技术——Java基础语法

    Java基础语法 一.   认识Java 1. Java 简介 java 是一种高级的面向对象的程序设计语言,使用Java语言编写的程序时跨平台的.从pc到手机,都有Java开发的程序和游戏,Java ...

  8. MySQL的时间、日期型

    MySQL的时间.日期型 MySQL中表示时间值的有DATE.时间类型为DATETIME.DATE.TIMESTAMP.TIME和YEAR.每个时间类型有一个有效值范围和一个"零" ...

  9. Windows10开发手记-RelativePanel使用详解

    Windows 10已于7月29号面向全球发布,同时Universal Windows Platform(UWP) SDK也已正式放出,配合VS 2015我们可以开发出通用的Windows App. ...

  10. SeaweedFS上手使用指南

    SeaweedFS是基于go语言开发的高可用文件存储系统,主要特性 1.成存储上亿的文件(最终受制于你的硬盘大小)2.速度快,内存占用小 上手使用比fastDFS要简单很多,自带Rest API. S ...