假设我用JavaScript和HTML开发了一个前端应用,我想把该应用打包成能直接在手机上安装和运行(不通过浏览器)的原生应用,例如像下面这样。对应用的用户来说,他们得到的用户体验和真正的用Android Studio或者XCode开发的原生应用完全一致。

这是怎么做到的?

答案是使用Apache的开源框架,Cordova。

以Android框架为例,Cordova能将您的前端应用里的JavaScript和HTML资源打包成Android原生的apk文件,可以直接在安卓手机上安装。运行时,这些JavaScript和HTML直接运行在Cordova提供的一个嵌入式的WebView控件里,对于手机用户来说,他们对此毫不知情,以为自己使用的是手机原生应用。

下面就跟着我一步一步来使用Cordova打包您的前端项目吧。

1. 在电脑上安装nodejs,把安装后的目录加入到Path环境变量中去。

2. 使用nodejs的包管理器npm安装Cordova。命令行:npm -g install cordova:

3. 创建一个新的文件夹,然后进入该文件夹,创建一个新的Cordova项目。命令行:

cordova create JerryUI5HelloWorld

于是一个新的Cordova项目被自动创建出来了。里面包含很多子文件夹。

Platforms文件夹是空的,因为此时我们尚未添加该Cordova项目支持的移动平台。

4. 假设我们想打包成一个可以安装到Android平台的应用,那么得为该Cordova项目添加对Android平台的支持。使用命令行添加:cordova platform add android

命令行执行完毕后,我们敬如platforms文件夹,发现多了一个android文件夹,里面多出很多文件夹和资源。这些自动生成的东西都是最后打包生成安卓应用APK文件所必须的。

如果一切正常,我们会得到下面的目录结果。

5. www文件夹下有个自动生成的index.html文件。我们用命令行cordova prepare, 这个index.html会自动被拷贝到文件夹platformsandroidassetswww下面。这揭示了Cordova使用的一个最佳实践:我们所有的前端开发,都是直接在Cordova项目文件根目录的www文件夹内进行。开发结束后,使用cordova prepare,根目录的www文件夹里的资源会自动被拷贝到该项目支持的移动平台对应的文件夹内,在我的例子里是platformsandroidassetswww。

一切就绪了。现在使用命令行cordova compile进行打包,安卓应用的APK文件就生成在文件夹platforms/android/build/output/apk里了。

注意cordova compile这个命令需要您本地安装Gradle,如果安装,会遇到下列错误消息:

Error: Could not find an installed version of Gradle either in Android Studio, or on your system to install the gradle wrapper. Please include gradle in your path, or install Android Studio。

我没有选择安装庞大的Android Studio,而是下载了gradle的二进制版本,将其加入到Path环境变量中即可。

将APK安装到您的手机上,执行,您会看到下列这个默认的界面。这其实是Cordova项目创建后生成的缺省的index.html打包安装到手机后运行的效果。

剩下的事情就很容易了,把您的前端应用的所有资源全部拷贝到Cordova项目文件根目录下的www文件夹里,然后执行cordova prepare, 将这些资源自动同步到文件夹platformsandroidassetswww下面,再次执行命令行cordova compile重新生成APK文件即可。

如果没有Android手机,也可以用Android Studio里提供的模拟器来测试。

在Android Virtual Device Manager里创建一个新的虚拟设备:

然后使用命令行将cordova compile生成的APK文件安装到模拟器上:

adb install j.apk

现在就能在Android模拟器里使用您的前端应用通过Cordova打包生成的应用了。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

使用Cordova将您的前端JavaScript应用打包成手机原生应用相关推荐

  1. 前端项目如何打包成手机app?

    前端项目如何打包成手机app 阐述 难点及解决方式 具体使用步骤 创建5+app空项目 删除5+app默认的项目结构 移动并进行基础设置 发行及云打包 查看及下载 阐述 前端是做什么的?写网页的?不, ...

  2. 前端VUE项目打包成安卓APP

    1.打包vue项目,在项目的根目录执行命令 npm run build,直至项目打包完成 打开dist文件件,里面有一个index.html和static文件夹. 2.新建cordova项目 2.1安 ...

  3. 配置Tree Shaking来减少JavaScript的打包体积

    译者按: 用Tree Shaking技术来减少JavaScript的Payload大小 原文: Reduce JavaScript Payloads with Tree Shaking 译者: Fun ...

  4. 在C#后端处理一些结果然传给前端Javascript或是jQuery

    在C#后端处理一些结果然传给前端Javascript或是jQuery,以前Insus.NET有做过一个例子<把CS值传给JS使用 >http://www.cnblogs.com/insus ...

  5. Web前端-JavaScript基础教程上

    Web前端-JavaScript基础教程 将放入菜单栏中,便于阅读! JavaScript是web前端开发的编程语言,大多数网站都使用到了JavaScript,所以我们要进行学习,JavaScript ...

  6. 判断字符串 正则_(重学前端 - JavaScript(模块一)) 14、引用类型之 RegExp (正则)(详述)...

    上一篇文章介绍了 JavaScript 中的 Date 类型,从地理方面的原理知识开始入手,如果大家认真看过上一篇文章,相信 JavaScript 中的 Date 类型已经难不住大家了!!! 但是今天 ...

  7. 前端---JavaScript基础4

    文章目录 前端---JavaScript基础3 call&apply 原型链 原型链操作 例子:按钮组件封装:(类似于Bootstrsp里的按钮组件封装) 前端-JavaScript基础3 c ...

  8. 前端---JavaScript基础3

    文章目录 前端---JavaScript基础3 普通对象与函数对象 原型及属性判断 构造函数继承 原型继承 组合继承 寄生组合式继承 前端-JavaScript基础3 普通对象与函数对象 原型及属性判 ...

  9. 前端---JavaScript基础2

    文章目录 前端---JavaScript基础2 对象类型判断 call函数 对象属性操作 深拷贝方法 前端-JavaScript基础2 重构以下代码:(以面向对象的方式) 重构后:(其中this指针问 ...

最新文章

  1. 看懂三篇文章--需要归纳
  2. 浙大通讯与计算机网络离线作业,浙大2015年 通信与计算机网络离线作业
  3. 13.Java为什么不支持多继承
  4. python 完全面向对象_Python面向对象
  5. 剪纸游戏(博弈论)(SG函数)
  6. vnc 字体设置_Xterm字体大小的设置
  7. phpzend框架_PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
  8. 十六进制报文用wireshark打开
  9. Python中的运算符是什么?本文详解!
  10. java递推_【Java】递归递推的应用
  11. 如何设置 Excel 文件打印时刚好是一页的宽度?让打印范围刚好是一页纸
  12. java解压zip文件程序_java 解压zip文件
  13. 成功解决:Could not initialize SDL - No available video device (Did you set the DISPLAY variable?)
  14. 生成式对抗网络GAN汇总
  15. 为什么普通红包自己不能领_为什么行驶证和驾驶证不能放在车上?别给自己找麻烦...
  16. 浙大版c语言程序设计第三版邀请码,浙大版《C语言程序设计(第3版)》题目集 习题9-5 通讯录排序...
  17. Unity导入中文文本的解决方法
  18. npm install报错error 404 Not Found - GET httpsregistry.npm.taobao.org@xt
  19. VSCode更改默认浏览器
  20. 使用gulp构建一个项目

热门文章

  1. 问题:org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0
  2. 支持向量机器—SMO算法
  3. Django从理论到实战(part10)--URL命名与反转
  4. 【视频教程】利用Excel轻松爬取网页上的数据
  5. 如何使用 ABAP 手动解析 multipart/form-data 格式的数据
  6. SAP Spartacus AuthService.getUserToken的实现
  7. SAP Spartacus Org Unit List响应回车案件的实现原理
  8. 如何在JSP里自定义标签
  9. SAP UI5和angular里的常量定义
  10. SAP BOPF draft table automatic deletion