ionic项目相关开发工作完成之后(建立ionic工程项目可以参考上一篇文章ionic项目工程建立),就可以进行项目的编译打包apk应用包。

打包编译需要在平台环境下,这里只记录下android平台打包过程。

1、android开发环境建立

Android SDK Manager这一块是需要成功安装的,模拟器只是调试的方便。具体过程可以参考博文(包括java环境建立http://www.cnblogs.com/kangjianwei101/p/5621723.htmlAndroid 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平台)的更多相关文章

  1. [原]详解如何将cocos2dx项目编译到Android平台上的(方式一:Cywin+NDK)

    链接地址:http://m.blog.csdn.net/blog/yhc13429826359/29357815 2014-6-8阅读578 评论0 前言:cocos2dx作为一个开源的移动2D游戏框 ...

  2. 项目androidAnt编译打包Android项目

    时间紧张,先记一笔,后续优化与完善. Ant编译打包Android项目 在Eclipse中对Android项目停止编译和打包如果项目比较大的话会比较慢,所以改为Ant工具来停止编译和打包 Ant环境配 ...

  3. Android - Ant自动编译打包android项目 -- 1(转)

    1.  背景: Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其当要将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我 ...

  4. [转]Windows中使用命令行方式编译打包Android项目

    http://my.oschina.net/liux/blog/37875 网上很多用Ant来编译打包Android应用的文章,毕竟Ant是纯Java语言编写的,具有很好的跨平台性.今天想写个纯win ...

  5. (转载)Ant自动编译打包android项目

    1  Ant自动编译打包android项目 1.1   Ant安装 ant的安装比较简单,下载ant压缩包  http://ant.apache.org  (最新的为1.9.3版本),下载之后将其解压 ...

  6. 通过ant脚本编译打包android工程

    通过ant脚本,编译打包android工程 1.Android程序编译.打包.签名.发布的三种方式:  方式一:命令行手动编译打包  方式二:使用ant自动编译打包  方式三:使用eclipse+AD ...

  7. cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程)

    链接地址:http://www.cocoachina.com/bbs/read.php?tid=333937 cocos2d-x3.9利用cocos引擎一键打包Android平台APK(C++小白教程 ...

  8. Cocos2d-x项目编译为Android应用——命令行方式

    配置: 相关工具:Cocos2d-x 3.2 + Ant 1.9.4 + Android NDK r9d + Android SDK 运行平台:OS X 10.9.4+ Xcode 6 前言:笔者使用 ...

  9. Mac系统下编译支持Android平台的最新X264编码器

    Mac系统下编译支持Android平台的最新X264编码器 原文来自 http://www.mingjianhua.com,转载请注明出处 1.首先去官网下载最新的x264源代码,解压到任意目录 ht ...

随机推荐

  1. java回调方法之理解

    以前经常看见"回调方法(或回调函数)"一词,但是没有了解过是什么意思,更不知道用法.现在从网络上搜集了一些很好的资料,自己又整理一下,作为自己的笔记,也作为学习过程中的一个小脚印. ...

  2. Git提交项目到GitHub

    一.GitHub新建项目 1.进入Github首页,点击New repository新建一个项目 2.填写相应信息后点击create即可 Repository name: 仓库名称 Descripti ...

  3. 2 小时学会 Spring Boot

    一. 什么是 Spring Boot Takes an opinionated view of building production-ready Spring applications. Sprin ...

  4. 深度学习(四) softmax函数

    softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素 ...

  5. 分布式一致性协议介绍(Paxos、Raft)

     两阶段提交 Two-phase Commit(2PC):保证一个事务跨越多个节点时保持 ACID 特性: 两类节点:协调者(Coordinator)和参与者(Participants),协调者只有一 ...

  6. 存储过程中拼写sql并执行

    直接上代码吧,根据不同的条件拼写sql后并执行 ALTER PROCEDURE [dbo].[usp_Statistic_WJB_DZSK_ZT] ( @year int, @half int,--0 ...

  7. 构建流式应用—RxJS详解[转]

    目录 常规方式实现搜索功能 RxJS · 流 Stream RxJS 实现原理简析 观察者模式 迭代器模式 RxJS 的观察者 + 迭代器模式 RxJS 基础实现 Observable Observe ...

  8. 使用T-SQL语句创建数据库2

    创建多个数据文件和多个日志文件 use master GO create database book on primaty --主文件组 ( name=‘book_data’, --主文件逻辑文件名 ...

  9. 类class思维导图

  10. [PHP] PHP数组的实现哈希表(HashTable)结构

    PHP中使用最为频繁的数据类型非字符串和数组莫属,使用哈希表实现的PHP数组.1.数据结构:保存哈希表容器,保存数据的容器2.哈希函数实现:需要尽可能的将不同的key映射到不同的槽(bucket)中, ...