使用Cordova构建基于前端开发的安卓APP

Electron

简介

  Electron是一个使用JavaScriptHTMLCSS构建桌面应用程序的框架。 嵌入ChromiumNode.js到二进制的Electron允许您保持一个JavaScript代码代码库并创建在Windows、macOS和Linux上运行的跨平台应用

前往官方教程以查看快速入门

打包并分发

最快捷的打包方式是使用 Electron Forge
使用如下代码将Electron Forge添加到您应用的开发依赖中

1
2
npm install --save-dev @electron-forge/cli
npx electron-forge import

使用 Forgemake 命令来创建可分发的应用程序:

1
npm run make

若提示缺少了@electron-forge/plugin-fuses模块,可使用如下代码安装后重新打包:

1
npm install --save-dev @electron-forge/plugin-fuses

  我们可以看到,经过此步骤后可以生成跨平台的桌面应用程序,但它并不能直接打包成安卓应用程序。不过,可以使用一些工具来将 Electron 应用程序打包成 Android 应用程序

Cordova

Cordova简介

  Apache Cordova,旧称 PhoneGap,是一款开放源代码的移动设备开发框架,旨在让开发者使用HTMLJavascriptCSS等Web APIs开发跨平台的移动设备应用程序

打包Android应用

1.在本地安装 Cordova 和 Android SDK(Android Studio + Gradle)
2.使用 Cordova 命令行工具创建一个新的 Cordova 项目,执行以下命令:
  其中,my-app是项目的目录名称,com.example.myapp是应用程序的包名称,MyApp是应用程序的名称

1
cordova create my-app com.example.myapp MyApp

3.将 Electron 应用程序的所有文件复制到 Cordova 项目的 www 目录中,这是 Cordova 打包应用程序时使用的文件夹
4.执行以下命令以添加 Android 平台:

1
cordova platform add android

5.执行以下命令以构建 Cordova 应用程序:

1
cordova build android

相关错误

Ⅰ.软件版本

Gradle

1
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

由于以上关系,我在这里推荐前往下载Gradle v7.6.4。前往官方文档查看安装教程

JDK

与此同时,可能会存在以下报错:

1
BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 65

  这个报错通常是由于 Gradle 版本不兼容导致的。Gradle 7.x 不支持 Java 16 中引入的 class 文件版本 65。可以将将 JDK 版本降低到支持 Gradle 7.x 的版本。由于JDK 8 存在一些过时的应用,在这里推荐使用 JDK 11。前往这里以下载

Ⅱ.环境变量

Android SDK

下载并安装完成Android Studio后,在More Actions - Android SDK - SDK Tools当中选择合适的版本Android SDK Build-Tools下载
在环境变量-系统变量当中,添加ANDROID_HOME的变量,变量值是SDK根目录

JAVA_HOME

下载并安装完成JAVA 11后,在环境变量-系统变量中新建JAVA_HOME变量,变量值是JDK路径,如C:\Program Files\Java\jdk-11

Ⅲ.配置文件

若出现.\platforms\android\app\build.gradle的如下问题:

1
Could not find method namespace()

修复方式为将该行语句使用//注释化

1
compileSdkVersion is not specified. Please add it to build.gradle

compileSdkVersion没有被指定。修改方法为将此句改为compileSdkVersion 33 // 此处指定你要使用的 SDK 版本

若出现.\platforms\android\app\src\main\AndroidManifest.xml的如下问题:

1
2
3
4
Error while evaluating property 'buildConfigPackageName' of task ':app:generateDebugBuildConfig'.
Failed to calculate the value of task ':app:generateDebugBuildConfig' property 'buildConfigPackageName'.
Failed to query the value of property 'packageName'.
Package Name not found in .\platforms\android\app\src\main\AndroidManifest.xml

  这个错误表明在生成调试版(debug)的构建配置时,Gradle 无法找到 Android 清单文件(AndroidManifest.xml)中的包名(package name)。这可能是因为 AndroidManifest.xml 中确实没有指定包名。请打开 AndroidManifest.xml 文件,查找 <manifest> 标签,并确保其中有一个 package 属性,类似于:package="com.example.myapp"。如果没有,请添加正确的包名
  该错误也会发生在.\platforms\android\CordovaLib\AndroidManifest.xml

Ⅳ.其它错误

对于Android SDK,可能会存在如下报错:

1
Installed Build Tools is corrupted

提示找不到dx.bat文件。此时在你的Android SDK目录中找到build tools目录中的d8.bat,将文件名修改为dx.bat。同时,找到build tools目录中的lib/d8.jar,将文件名修改为dx.jar