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. 第2章—装配Bean—通过XML装配Bean

    通过XML装配Bean ​ 尽管我们在生成Bean的过程中可以用到很多方法,但我们依然需要Spring的XML配置来完善更多的需求,下面就来介绍下XML装配Bean的过程是怎样的. 3.1创建XML配 ...

  2. WPF中使用RenderTransformOrigin来控制动画的起点

    Render :渲染:Transform:动画:Origin:起点 RenderTransformOrigin:渲染动画的起点 取值为一个坐标的形式  取值范围: 0,0 到 1,1 0,0:表示左上 ...

  3. Eclipse: User Operation is waiting for “Building Workspace”

    这个情况可能有多个原因导致,比如,非正常关闭eclipse,时钟不匹配等等,可能解决的方法有: 1. 删除<workspace_folder>/.metadata/.lock文件 2. e ...

  4. linux进程间的网络通信

    一.进程是如何进行网络通信的?socket通信的过程? 同一机器上的不同进程之间的通信方式有很多种,主要使用消息传递或共享内存.而跨网络的进程是几乎都是使用socket通信,例如web服务器,QQ. ...

  5. C# Aspose填充excel模板数据,下载

    public Result<object> GetAExcelFieItem(string[] aid, int kind, string contype) { string fileUr ...

  6. 基于ASP.NET Core 创建 Web API

    使用 Visual Studio 创建项目. 文件->新建->项目,选择创建 ASP.NET Core Web 应用程序. 基于 ASP.NET Core 2.0 ,选择API,身份验证选 ...

  7. 关于UI回调Invoker的实现(一)

    打算写一个DirectUI库,在写其中底层窗口的回调构造的时候遇到一个问题. Invoker是一个模板,因为closure的关系,它必须保存一个类对象的指针,和回调函数的地址.而函数调用的时候,就可以 ...

  8. JS实现图的创建和遍历

    图分为无向图和有向图 图的存储结构有邻接矩阵.邻接表.十字链表.邻接多重表这四种,最常用的是前两种 本篇主要是利用邻接矩阵实现无向图的创建和遍历(深度优先.广度优先),深度优先其实就是二叉树里的前序遍 ...

  9. 六、yarn运行模式

    简介 spark的yarn运行模式根据Driver在集群中的位置分成两种: 1)yarn-client 客户端模式 2)yarn-cluster 集群模式 yarn模式和standalone模式不同, ...

  10. 微信小程序二维码识别

    目前市场上二维码识别的软件或者网站越来越多,可是真正方便,无广告的却少之很少. 于是,自己突发奇想做了一个微信二维码识别的小程序. 包含功能: 1.识别二维码 ①普通二维码 ②条形码 ③只是复制解析出 ...