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 ...
随机推荐
- 推荐几个好用的maven仓库镜像站
1.阿里云的镜像站(速度很快) <mirror> <id>nexus-aliyun</id> <name>Nexus aliyun</name&g ...
- springboot-1-介绍
之前跟着一个博主学过springboot, 但不怎么全面, 最近看了本书, 汪云飞的springboot 实战, 发现springboot太强大了, 跟着书重新走一遍... 边写边记录 http:// ...
- R语言矩阵matrix函数
矩阵是元素布置成二维矩形布局的R对象. 它们包含相同原子类型的元素.尽管我们可以创建只包含字符或只逻辑值的矩阵,但是它们没有多大用处.我们使用的是在数学计算中含有数字元素矩阵. 使用 matrix() ...
- push到github报错解决方法
在push代码到远程仓库时,报了如下的错误: $ git push -u origin master To https://github.com/11pdg/group-buy.git ! [reje ...
- JMM随笔
What? Java内存模型(Java Memory Model,JMM)主要是为了规定了线程和内存之间的一些关系. 根据JMM的设计: 系统存在一个主内存(Main Memory),Java中所有变 ...
- Linux笔记-Linux的命令初解1
我是一个Linux的初学者,经验肯定没有大牛们那么全面,但是我很想把自己在学习过程中的所有所学和一些自己的感悟写下来. 首先我主要看的书为<鸟哥的私房菜>,这是一本非常棒的书,但是你会发现 ...
- xml布局中include的使用
参考:http://blog.csdn.net/harvic880925/article/details/17263275 include_button1.xml <?xml version=& ...
- replace替换,全局和局部替换
<script> var a=document.getElementById("introduce").innerHTML; var b=a.replace(/jone ...
- golang数组与切片
golang中坑的慢慢踩! golang中的数组是值类型,函数调用是传入的是数组的拷贝,如果想改变数组的值,可考虑使用指针数组,即函数调用时传入数组的地址 golang中的切片是引用类型,但是在函数中 ...
- js 千分位符号 正则方法
function toThousands(num) { return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');}