架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3882|回复: 0

[ionic] Ionic开发Android App实战(二):安卓打包apk

[复制链接]
发表于 2018-6-20 10:16:52 | 显示全部楼层
部署到手机和cordova插件的使用

一个简单的Web应用我们已经开发完成了,接下来我们就要做一些部署到移动端之前的准备了。
Ionic支持两个平台ios、android,默认的Ionic项目并没有添加这两个平台,我们需要手动添加,cd到开发目录下执行命令:


我这里只需要安卓平台,执行完毕之后执行命令查看你已经添加的平台列表:

> cordova platform ls

You have been opted out of telemetry. To change this, run: cordova telemetry on.
Installed platforms:
  android 7.0.0
Available platforms:
  browser ~5.0.1
  ios ~4.5.4
  osx ~4.0.1
  windows ~5.0.0
  www ^3.12.0

QQ截图20180620095942.jpg

Android打包


(如果这条命令有问题,可以去掉–release然后debug编译,编译完成Dos会显示apk目录位置)

如若你聪慧的双眼发现如下字眼:Build Success! 说明你已经成功打包了。耐心等待,命令行结束会提示你apk的生成位置。

我再执行打包命令的时候,会报错如下,错误原因是jdk版本太高,我本机的是“jdk-10.0.1”版本,重新下载安装一个“1.8.0_171”版本即可解决!!!

C:\project\android\myApp>ionic cordova build android --release
Running app-scripts build: --platform android --target cordova
[17:06:47]  build dev started ...
[17:06:47]  clean started ...
[17:06:47]  clean finished in 8 ms
[17:06:47]  copy started ...
[17:06:47]  deeplinks started ...
[17:06:47]  deeplinks finished in 15 ms
[17:06:47]  transpile started ...
[17:06:50]  transpile finished in 3.71 s
[17:06:50]  preprocess started ...
[17:06:50]  preprocess finished in 1 ms
[17:06:50]  webpack started ...
[17:06:51]  copy finished in 3.96 s
[17:06:56]  webpack finished in 5.58 s
[17:06:56]  sass started ...
Without `from` option PostCSS could generate wrong source map and will not find Browserslist config. Set it to CSS file path or to `undefined` to prevent this warning.
[17:06:58]  sass finished in 2.05 s
[17:06:58]  postprocess started ...
[17:06:58]  postprocess finished in 10 ms
[17:06:58]  lint started ...
[17:06:58]  build dev finished in 11.65 s
> cordova build android --release

You have been opted out of telemetry. To change this, run: cordova telemetry on.
Android Studio project detected

ANDROID_HOME=C:\Users\itsvse_pc\AppData\Local\Android\sdk
JAVA_HOME=C:\Program Files\Java\jdk-10.0.1
(node:14940) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): CordovaError: Requirements check failed for JDK 1.8 or greater
(node:14940) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

[17:07:01]  lint finished in 3.00 s

再次执行以上命令,由于我网速较慢,而且是第一次执行,下载了很多组件等等,执行了12分钟,如下图:

QQ截图20180620100536.jpg

C:\project\android\myApp\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk 是编译后的app存放地址。

我把“app-release-unsigned.apk”复制到手机(华为荣耀10),会报错如下:

QQ图片20180620100717.jpg

这是由于app没有签名导致无法安装。

apk签名

由于我Java目录在环境变量里面有,所以我只需要cmd命令执行如下:

/*说明:-genkey 产生密钥
       -alias demo.keystore 别名 demo.keystore
       -keyalg RSA 使用RSA算法对签名加密
       -validity 40000 有效期限4000天
       -keystore itsvse.keystore 文件名称 */

apksigner 这个工具位于SDK目录的build-tools目录下。必须说明的是,v2签名方式时在Android7.0后才推出的,所以只有版本>25的SDK\build-tools\中才能找到apksigner.jar。
打开cmd,把目录切到SDK\build-tools\版本号\lib下(例如C:\Users\itsvse_pc\AppData\Local\Android\Sdk\build-tools\28.0.0\lib),执行:


例子:

D:\>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore
/*说明:-verbose 输出签名的详细信息
       -keystore  demo.keystore 密钥库位置
       -signedjar demor_signed.apk demo.apk demo.keystore 正式签名,三个参数中依次为签名后产生的文件demo_signed,要签名的文件demo.apk和密钥库demo.keystore.*/

QQ截图20180620101337.jpg

检查apk是否已经签名:

我们把签名后的“output.apk”文件复制到手机,然后进行安装,可以正常安装,并可以正常运行,如下图:

QQ图片20180620101529.jpg





上一篇:如何完全卸载Java多个版本
下一篇:No component factory found for ListPage. Did you add it to
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2020-7-4 22:38

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表