ionic项目编译打包(android平台)
ionic项目相关开发工作完成之后(建立ionic工程项目可以参考上一篇文章ionic项目工程建立),就可以进行项目的编译打包apk应用包。
打包编译需要在平台环境下,这里只记录下android平台打包过程。
1、android开发环境建立
Android SDK Manager这一块是需要成功安装的,模拟器只是调试的方便。具体过程可以参考博文(包括java环境建立:http://www.cnblogs.com/kangjianwei101/p/5621723.html和Android SDK安装配置:http://www.cnblogs.com/kangjianwei101/p/5621238.html)。
完成jdk环境变量配置,打开控制台输入java –version回车显示如下版本信息则说明成功安装:

完成安卓sdk并配置,打开控制台输入adb回车,出现安卓Debug 版本号和下面一堆说明则说明成功安装:

2.打包ionic项目文件
完成上面环境的建立,就可以进行打包工作了:
(1)首先cmd控制台进入到ionic项目根目录下,执行添加到安卓平台指令:
ionic platform add android
成功的话,工程目录会多出一个platforms的目录:

这个过程可能会出现安卓工具不完整而出错,可以按照相关错误启动SDK Manager进行工具勾选安装。
(2)打包apk
ionic下打包生成apk有两种命令
ionic bulid android ionic build --release android
第一个命令生成的是一个Cordova-debug.apk,很明显是用来进行本地开发测试使用的,注意这个apk是有签名的,所以他能被安装在手机上,但是这个不能用来上架(亲身探过坑),因为只有在绝对同样的环境下进行打包,才能保证这个apk的签名相同,意味着你这台机器必须始终保持正常并且系统和打包工具等不作修改。这明显是不合理的。
所以,我们必须采用生产的方式打包,就是第二个命令,这个命令生成的是一个无签名的apk,他无法安装在手机上,必须进行签名。
打包完成后会提示生成的apk文件位置,在myApp文件中的platforms\android\build\outputs\apk中。
(3)签名apk
从控制台cmd进入ionic项目platforms/android目录下,
<1>生成签名(.keystore)文件
keytool -genkey -v -keystore demo.keystore -alias demo.keystore -keyalg RSA -validity 20000
keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来;
-keystore demo.keystore 证书的文件名;
-alias demo.keystore 表示证书的别名
-keyalg RSA 生成密钥文件所采用的算法;
-validity 20000 该数字证书的有效期;
在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:

完成后当前目录会生成一个demo.keystore文件证书。
<2>使用jarsigner工具为Android应用程序签名
jarsigner -verbose -keystore /yourpath/demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来;
-keystore /yourpath/demo.keystore 之前生成的证书
-signedjar demo_signed.apk 签名后的apk
demo.apk 需要签名的apk
demo.keystore 证书的别名
<3>使用zipalign工具优化已签名的apk(非必须但建议这么做)
该工具位于android-sdk-windows/tools/目录下,但是有时tools目录下没有,我是从其他的目录下找到的,搜索下就行,然后把这个工具复制一个到tools目录下。经过上面的签名操作,我们可以在platforms\android\build\outputs\目录下找到已经签名的apk,现在我们拷贝签名的apk文件到tools目录下,执行zipalign命令:
zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apk
zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
- notepad_signed.apk notepad_signed_aligned.apk 表示对已签名文件notepad_signed.apk进行优化,优化后的文件名为notepad_signed_aligned.apk,这个就是可以安装到安卓平台手机上面。
3.可能出现的问题
(1)创建ionic项目提示缺少json文件:缺少ionic.config.json文件
方法:找到C:\Users\你的电脑名\.ionic中的ionic.config文件拷贝到myApp中添加后缀json
(2)打包过程中出现错误:
Error: Failed to find 'ANDROID_HOME'environment variable. Try setting setting i
t manually.
Failed to find 'android' command in your'PATH'. Try update your 'PATH' to inclu
de path to valid SDK directory.
原因:没有配置安卓sdk环境变量或环境变量配置错误
(3)安装SDK Manager工具包出现错误:
Failed tocreate directory C:\ Program Files\Android\android-sdk\temp
方法:以管理员方式运行SDK Manager
(4)安装SDK Manager工具包出现错误:
Stopping ADB server failed (code -1).
原因:安卓sdk未配置环境变量或环境变量配置错误
(5)注意勿将英文字符中文
ionic项目编译打包(android平台)的更多相关文章
- [原]详解如何将cocos2dx项目编译到Android平台上的(方式一:Cywin+NDK)
链接地址:http://m.blog.csdn.net/blog/yhc13429826359/29357815 2014-6-8阅读578 评论0 前言:cocos2dx作为一个开源的移动2D游戏框 ...
- 项目androidAnt编译打包Android项目
时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...
- Android - Ant自动编译打包android项目 -- 1(转)
1. 背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...
- [转]Windows中使用命令行方式编译打包Android项目
http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...
- (转载)Ant自动编译打包android项目
1 Ant自动编译打包android项目 1.1 Ant安装 ant的安装比较简单,下载ant压缩包 http://ant.apache.org (最新的为1.9.3版本),下载之后将其解压 ...
- 通过ant脚本编译打包android工程
通过ant脚本,编译打包android工程 1.Android程序编译.打包.签名.发布的三种方式: 方式一:命令行手动编译打包 方式二:使用ant自动编译打包 方式三:使用eclipse+AD ...
- cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)
链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程 ...
- Cocos2d-x项目编译为Android应用——命令行方式
配置: 相关工具:Cocos2d-x 3.2 + Ant 1.9.4 + Android NDK r9d + Android SDK 运行平台:OS X 10.9.4+ Xcode 6 前言:笔者使用 ...
- Mac系统下编译支持Android平台的最新X264编码器
Mac系统下编译支持Android平台的最新X264编码器 原文来自 http://www.mingjianhua.com,转载请注明出处 1.首先去官网下载最新的x264源代码,解压到任意目录 ht ...
随机推荐
- git push.default 几种设置笔记
1 simple ,本地和远程分支同名才会推送,只会推送当前的分支到远程 ,默认推送分支数量:1 2 matching , 会推送匹配的本地分之到远程分之,假如本地有的分支远程没有,不会把本地推送到远 ...
- cocos2d-x中描述精灵帧图片的plist和json文件各个key的含义
最近在研究cocos,互联网行业中,手游业最近的表现是非常的火,加上本身对游戏有浓厚兴趣,所以便染指了游戏引擎~ 这次的废话就这么简短吧,因为这次记录的东西本身就很少. 在cocos中,为精灵帧添加缓 ...
- maven备忘
maven常见命令 mvn clean mvn compile mvn package mvn clean compile package mvn -Djetty.port= jetty:run mv ...
- Tomcat开发Comet要点
Comet技术的悄然流行,Jetty在比较早地支持了Comet,提供了Comet 的Servlet,同样从Tomcat6开始,Comet已经在Tomcat的标准Servlet中开始支持了,这是个好事情 ...
- Java将Excel的列数以字母表示的字符串转换成数字表示
我们知道,在 Excel 中,行数用数字表示,而列数是用字母表示的(如下图所示),有时候需要把它转换成数字来使用,或者把数字转换成字母.(例如使用POI操作Excel) 下面是转换代码,用来进行字母和 ...
- Linux笔记-Linux下编辑器的简介
在整个linux中,我们使用最多的编译器真的vim了,全名我也不说了,没有多大意义,我们就是通过它来写我们的代码的.如果你有强迫症的话,那么选择使用gedit我也是没话说的啦! 话说其实我也在使用一些 ...
- POJ 3710:Matrix Power Series
Description 给出矩阵 \(n*n\) 的 矩阵\(A\) , 求 \(A^1+A^2+A^3...+A^k\) Solution 首先我们设 \(S_n=\sum_{i=1}^{n}A^i ...
- iOS语音播报文字
记得大学的时候学微软Window Phone时,有语音识别类似苹果的嘿,Siri.今天无聊百度搜了一下,搜到苹果语音播报文字.自己试了下还挺好玩. 1.引入框架#import <AVFounda ...
- [转]C#中Timer使用及解决重入问题
本文转自:http://www.cnblogs.com/hdkn235/archive/2014/12/27/4187925.html ★前言 打开久违的Live Writer,又已经好久没写博客了, ...
- echarts 添加标线,设置颜色
<script src="assets/js/jquery-1.8.3.min.js"></script> <!--echart图表引入js--> ...