我没有太多经验。我正在尝试为android api 30构建一个aab应用程序。我能看看格雷德尔和科多瓦的版本吗?
我尝试在这里使用Cordova版本:https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html?
我正在默认的类星体项目上尝试类星体3.2.4节点16.13.1java版本";17.0.1〃;2021-10-19升安卓工作室2020.3.1。补丁3-sdk 14-31
但构建仍然失败。
有人能告诉我一个可行的程序吗?
控制台屏幕截图:https://ibb.co/hdxyHGf
我自己为此挣扎了几天。我会尽量详细地回答。也许你会发现一些依赖于你的应用程序的问题,但至少你会有一些问题需要解决。
据我所知,您有一个使用cordova
的quasar
应用程序,并且您希望构建Android应用程序捆绑包(.aab
)文件以将其发布到Google Play Store
,因为现在play store只接受.aab
文件。
首先quasar
作为一个框架与此无关。Quasar框架只是构建您的web应用程序,构建输出存储在src-cordova/www
文件夹中。是否使用Quasar v1 or v2
并不重要。
Cordova是一个框架,它将创建整个项目结构(android
/iOS
),也称为Cordova平台,并使用命令行运行特定的构建工具来构建项目(gradle cli
/xcode cli
)。
要为Google Play Store
构建.aab
文件,还需要以Android API level 30
为目标。支持android API level 30
的Cordova版本是version 10
。我正在使用cordova-android-v10.0.0
。
要安装cordova-android-v10
,首先你需要删除你现在拥有的android平台,即src-cordova/platforms/android
文件夹。之后在src-cordova
文件夹中导航。并使用以下命令cordova platform add android@10.0.0
安装cordova android平台v10。
现在,您需要使用gradle
构建android项目。Cordova android v10
需要gradle v7.1.1
。
要查找有关cordova android v10.0.0
及其与gradle
等其他工具的兼容版本的更多信息,您可以查看以下链接:https://cordova.apache.org/announcements/2021/07/20/cordova-android-10.0.0.html
您可以从以下链接下载gradle v7.1.1
:https://gradle.org/releases/.我建议下载complete
软件包,即gradle-v7.1.1-all.zip
。
如果您使用的是windows,请解压缩C:/Gradle/gradle-v7.1.1
中的zip文件。如果您使用的是macOS
,我认为您应该在/Library/Gradle/gradle-v7.1.1
中提取它。之后,您需要添加GRADLE_HOME
环境变量(GRADLE_HOME=C:/Gradle/gradle-v7.1.1
),并将渐变bin
目录添加到PATH
,即PATH=...,%GRADLE_HOME%bin
。
检查您是否已在终端中使用gradle -v
命令成功安装渐变,以查看渐变版本
现在你应该可以用gradle构建android cordova项目了。转到src-cordova/aplatforms/android
并执行gradle build
。如果一切正常,您可以转到根项目文件夹并执行npm run build:android
。
如果一切通过,您将在dist/cordova/android
输出文件夹中看到app-release.aab
文件。
重要信息:我想指出几点注意事项,它们将导致构建失败。
- 首先是cordova android API级兼容性。Cordova
v10.0.0
支持从API level 22
到API level 30
。您需要在您的cordovaconfig.xml
中添加以下xml:
<platform name="android">
<!-- other settings -->
<preference name="android-minSdkVersion" value="22" />
<preference name="android-targetSdkVersion" value="30" />
<!-- other settings -->
</platform>
以下链接为您提供android cordova及其版本支持的API级别:https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#requirements-并支持
如果不添加minSdkVersion 22
,则MultiDex支持将出现问题。这是因为API 22级(Android 5.1)默认启用多DEX文件应用程序。如果你的最低目标低于22,你会有例外,比如:
java.lang.RuntimeException: Unable to instantiate application android.support.multidex.MultiDexApplication
有一个变通办法,但我不会在这里讨论。您可以在此链接上阅读更多信息:https://developer.android.com/studio/build/multidex#mdex-前1
- 其次,如果尚未生成
keystore
文件,则需要生成该文件,并配置build.json
文件。在build.json
文件中,您可以定义release
和debug
的输出包。在我的项目中,我设置了它们:debug
输出apk
,release
输出aab
文件,还可以定义keystore
文件路径
您可以在以下链接上找到有关build.json
的更多信息:https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#using-buildjson
- 第三件事是主观的,但我想在这里指出,因为我认为这可能会有所帮助。第三件事是插件。许多插件都是旧的(超过3年),可能无法使用此新设置,因为在尝试使用
gradle build
命令构建它们时出错。我在我的应用程序(cordova-plugin-qrscanner
)中使用了qrscanner
插件,由于Androidx和支持库的原因,该插件未能构建。您可以找到有关此问题的更多信息https://github.com/bitpay/cordova-plugin-qrscanner/issues/360.最后,我使用了新的androidx-qrscanner插件
# inside src-cordova folder
cordova plugin add cordova-plugin-qrscanner-androidx --save
cordova plugin add cordova-plugin-androidx-adapter --save
如果您遇到这样的问题,请删除src-cordova/plugins
文件夹,然后在src-cordova
文件夹中执行cordova build android
以重新安装所有插件。如果出现错误,请尝试为失败的插件安装替换插件。
很抱歉回答太长,但这类问题很难解释,尤其是当使用使用框架的框架时。。。。