ionic 项目签名

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

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

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

二.不采用自动签名

1.打包运行 命令 ionic build --release android (安卓为例)

2.生成证书文件

keytool -genkey -v -keystore test.keystore -alias demo.keystore -keyalg RSA -validity 20000命令运行之后会让你填写密钥库口令,再次确认,之后是一些相关的个人以及公司信息,没输入完一次,回车就行,之后还会有一个密钥库的口令,可以和密钥库的一样或者重新写;

keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来;-keystore test.keystore 证书的文件名; -alias sign.keystore 表示证书的别名;-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.keystore 

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

注意的问题:

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

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

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

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

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

zipalign -v 4 signafter.apk  signend.apk

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

5.查看apk签名

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

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

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

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

正在研究中,希望有看到的大神帮补充一下,谢谢

时间: 08-01

ionic 项目签名的相关文章

ionic start 创建ionic项目报错,及解决过程

问题描述: 前一次创建利用命令行创建ionic项目一次性成功,第二次没有运行: $ npm install -g ionic cordova 直接运行: ionic start ionicDemo 出现上图错误: × Running command - failed!Exception: npm ERR! path C:\work\ionicdemo\node_modules\fsevents\node_modulesnpm ERR! code EPERMnpm ERR! errno -4048

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

本文转自:http://blog.csdn.net/superjunjin/article/details/44158567 一,首先是上传数据 记得在angularjs的controller中注入$http依赖 [javascript] view plaincopyprint? var data = {id: $scope.task_id, groupId: $scope.task_groupid, importance: $scope.priority_level, classname:$s

Ionic 项目创建

1. Ionic介绍 Ionci 是一个强大的HTML5 应用程序框架. 可以帮助您使用Web技术,如HTML, CSS和Javascript构建原生体验的移动应用程序. Ionic主要关注外观和体验,以及和你的应用程序UI交互,特别适合基于Hybirrd模式的HTML5移动程序开发. Ionic是一个轻量级手机UI库,具有速度快,界面现代化,美观等特点,为了解决其他一些UI库在手机上运行缓慢的问题. 2. Angularjs介绍 Ionic整合了AngularJs integrate Ioni

mac系统 Xcode打包ionic项目(iOS)

一.环境搭建 1. 安装Node.js,使用node -v 查询版本号: 2. 安装ionic: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 } span.s1 { } $ sudo npm install -g cordova(可以指定版本,如[email protected] $ sudo npm install -g ionic 安装完成后,使用 $ cordova/ionic -v

Ionic项目打包Android版本实战

最近在带团队做一个前端用Ionic+angularjs 的web app项目,由于自身不是做前端的,所以不太了解ionic,正好前端人员也是半吊子,所以只有自力更生学着自己打android包,在网上不断搜索打包方案,不断测试不断掉坑又不断解决再掉坑再解决后,终于在一天半时间android打包成功.接下来我把这些经验记录下来,希望能给大家提供参考和帮助. 配置Ionic下面android打包 1.安装Node.js下载安装:http://nodejs.org/ 安装完成之后打开PowerShell

安装nodejs6.9x以后,原来在nodejs4.2.x中运行正常的ionic项目出现问题的解决

安装nodejs6.9x以后,原来在nodejs4.2.x中运行正常的程序出现的问题.看错误信息,由于NodeJs版本升级导致的. 到提示的目录下运行:npm rebuild node-sass -g 无效果 运行:npm install -g node-sassnpm rebuild 还是不行 运行 node -e "console.log(require.resolve('node-sass'))"查看当前node-sass所在位置 还是不行.放弃环境调整,在新环境下 ionic

ionic项目中手机状态栏显示使用$cordovaStatusbar插件

在项目中发现Android和iOS在手机状态栏样式不一样,然后就查到有一个cordova插件可以解决这个问题 1.下载插件$cordovaStatusbar命令: cordova plugin add https://github.com/apache/cordova-plugin-statusbar.git 2.在config.xml里面配置如下: <feature name="StatusBar"> <param name="ios-package&qu

(未解决)问题记录ionic android 签名之后安装到手机上点击运行出现闪退,不签名运行正常

Log日志如下: 06-21 10:12:52.495: E/Trace(2682): error opening trace file: No such file or directory (2) 06-21 10:12:52.723: E/AndroidRuntime(2682): FATAL EXCEPTION: main 06-21 10:12:52.723: E/AndroidRuntime(2682): java.lang.RuntimeException: Unable to st

ionic项目中跨页面传递参数的几种方式

1.使用AngularJS自带的$cacheFactory服务 $cacheFactory 从字面直译即为缓存工厂,可以用它来生成缓存对象,缓存对象以key-value的方式进行数据的存储 在整个应用内是单例的,可以在service或者controller中注入这个服务,然后就可以用它来自由的存取对象以及各种变量,下面是一个简单例子 .controller('AppCtrl', function ($scope, $ionicModal, $timeout, $cacheFactory) { v