介绍
使用 Cordova 工具,把 HTML5 打包为 IOS 及 Android 等应用,Cordova 提供了一组设备相关的 API,通过这组 API,移动应用能够用 JavaScript 访问原生的设备功能,如摄像头、麦克风等。Cordova 支持多个操作系统,例如:ios、android、brower、electron、oxs、windows。
作者所使用的环境
- macOS — High Sierra 10.15.5
- xcode — v11.5.0
- Android Studio — v4.0.0
- Node.js — v14.2.0
- Phonegap — v9.0.0
- Apache Cordova — v9.0.0
安装依赖
Cordova
| 1 | $ npm install cordova -g | 
Phonegap
| 1 | $ npm install phonegap -g | 
Android SDK
安装 Android Studio,建议使用默认安装,装好之后启动软件,需要根据项目所安装的 cordova-android 版本不同进行不同的设置。
主要关注四个设置点:
- JDK
- Gradle
- Android Platform SDK
- Android SDK build-tools
这四个地方版本对应上了就可以了,在这里可以查看需要设置成什么版本:https://cordova.apache.org/docs/en/10.x/guide/platforms/android/index.html 注意 URL 的 10.x,这个就是 cordova-android 的版本,进入到页面右上角可以切换版本,根据你项目安装的版本,在这个页面中找到这四个地方所需要包含的版本,10.x 所包含的版本如下:
- JDK: 8 (1.8.*)
- Gradle: 6.4.0
- Android Platform SDK: 29 (Q)
- Android SDK build-tools: 29.0.2
接下来将一一详细介绍怎么设置
JDK 版本设置
打开 Android Studio > Preferences... > Build, Execution, Deployment > Build Tools > Gradle 找到 Gradle JDK: 选择框,点击选择 Download JDK 进行设置版本,比如我们现在用的 10.x 的 JDK 依赖是 JDK 8,那么 Version: 这里就需要选择 1.8 版本(这里说下 JDK 7 就对应 1.7,8 就对应 1.8),Vendor: 默认就好,Location: 这里复制出来拼接 /Contents/Home 加到环境变量,详细请看下方 设置环境变量 Java 注释部分
Gradle 版本设置
打开 File > Project Structure > Project,Android Gradle Plugin Version 选择 4.0.0,Gradle Version 选择 6.4,点击确认等待下载完成
Android Platform SDK 版本设置
打开 Android Studio > Preferences > Appearance & Behavior > System Settings > Android SDK,选择 SDK Platforms 标签,勾选对应的 API Level 来安装 Cordova 所依赖的 SDK,最新的 Cordova 所支持的 API Level 版本为 29,具体 Cordova 版本所对应的 SDK 可看下表,在你看到这篇文章时,当前表格可能已经过时,可以到 官方网站 查看最新表格,查看表格时不要忘记选择你项目对应的版本。
| Cordova 版本 | API Level 版本 | 对应 Android 版本 | 
|---|---|---|
| 9.X.X | 22 - 29 | 5.1 - 10.0.0 | 
| 8.X.X | 19 - 28 | 4.4 - 9.0.0 | 
| 7.X.X | 19 - 27 | 4.4 - 8.1 | 
| 6.X.X | 16 - 26 | 4.1 - 8.0.0 | 
| 5.X.X | 14 - 23 | 4.0 - 6.0.1 | 
| 4.1.X | 14 - 22 | 4.0 - 5.1 | 
| 4.0.X | 10 - 22 | 2.3.3 - 5.1 | 
| 3.7.X | 10 - 21 | 2.3.3 - 5.0.2 | 
Android SDK build-tools 版本设置
打开 Android Studio > Preferences > Appearance & Behavior > System Settings > Android SDK,选择 SDK Tools 标签,勾选最下方 Show Package Details 复选框,展开 Android SDK Build-Tools,勾选 29.0.2 版本
设置环境变量
在 ~/.bash_profile 或者 ~/.zshenv 文件中追加以下内容。
| 1 | # Java | 
检查环境
确保 Java JDK、Android SDK、Android target、Gradle 是正常的。
| 1 | $ cordova requirements | 
创建一个项目
创建 Hello 项目
执行以下命令创建一个 Cordova 项目。
| 1 | $ cordova create hello com.example.hello HelloWorld | 
默认创建的项目只支持 WEB 端,资源放在项目下的 www 目录,主页文件在 www/index.html。
添加平台
进入到项目目录。
| 1 | $ cd hello | 
添加 IOS 与 Android 平台支持。
| 1 | $ cordova platform add ios | 
添加的平台在
platforms目录下,到此目录下你可以看到多了两个刚刚添加的ios与android目录。此目录为自动生成,官方不建议修改此目录内容,因为当执行构建 APP 命令或者删除平台在重新添加时,此目录会重新生成,你修改的内容将会丢失。
查看当前已经添加过的平台列表。
| 1 | $ cordova platform ls | 
添加签名
创建签名配置文件
创建 signing 目录,在此目录下新建 config.json 文件,内容为以下格式。
| 1 | { | 
IOS 签名
注册一个苹果开发着账号,配置 ios.{env}.developmentTeam 为你的 Team ID。
Android 签名
执行以下命令,密码使用 sanonz,当使用自己的密码时需要对应更改 android.{env}.password 与 android.storePassword 密码,同理别名 -alias 也需要对应修改。
| 1 | $ keytool -genkey -v -keystore android.keystore -keyalg RSA -keysize 2048 -validity 36500 -alias sanonz | 
其中 android.{env}.keystore 填写生成的 android.keystore 文件路径。
构建 APP
构建所有添加的平台。
| 1 | $ cordova build | 
构建指定平台。
| 1 | $ cordova build ios | 
构建 debug 版本。
| 1 | $ cordova build android --verbose --device --debug --buildConfig=./signing/config.json | 
构建成功后的 apk 文件在 platforms/android/app/build/outputs/apk/debug/app-debug.apk。
构建 release 版本。
| 1 | $ cordova build android --verbose --device --release --buildConfig=./signing/config.json | 
构建成功后的 apk 文件在 platforms/android/app/build/outputs/apk/release/app-release.apk。
测试 APP
以下命令会构建一个 debug 版本的 APP,自动打开模拟器并安装到模拟器上运行。
| 1 | $ cordova run android | 
Live Reload
利用 Phonegap 的应用,可以实时预览你的 APP,首先安装 Phonegap 的 APP,由于 AppStore 在 2018 年下架了 Phonegap APP,所以直接安装不了,可以克隆官方的 Phonegap 仓库 自行编译安装,安装到手机有点麻烦,不过可以很容易安装的模拟器上,在模拟器上打开 Phonegap APP 一样可以方便的预览。
启动调试服务
| 1 | $ phonegap serve | 
启动后控制台会打印 IP 地址,默认端口为 3000,打开 Phonegap APP,在 Server Address 输入框中输入控制台打印的 192.168.1.103:3000 地址,然后点击 Connect 链接按钮,连接成功后就可以查看你的 APP,修改 wwww/index.html 文件,保存后 Phonegap APP 会自动刷新,展示修改后的页面。
小结
至此结束,感谢阅读。