离子,“cordova”不包括在平台中,本机插件不工作

but5z9lq  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(140)

我继承了一个带有Angular和Cordova的Ionic 5项目,而不是Capacitor。它使用了几个原生插件,即QR扫描仪和应用内浏览器。在Android模拟器中启动时,应用程序工作正常,使用:

ionic cordova run android

现在我想构建一个APK,我可以分发给一些测试人员来给予应用。这个APK必须使用特定的配置来构建,以连接到预生产环境(使用Firebase,但我想这应该不重要)。我使用的过程是:

ionic build --prod --platform=android --configuration=preprod
ionic cordova prepare android --no-build --prod
ionic cordova build android --no-build --release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <PATH_TO_KS> <PATH_TO_APK> <KEY_NAME>
zipalign -v 4 <PATH_TO_APK> <PATH_TO_SIGNED_APK>

现在,已签名的APK将正确安装到模拟器,应用程序将启动并连接到预生产环境。但原生插件(例如QR扫描仪)无法工作。我得到的错误原生:尝试调用QRScanner.prepare,但Cordova不可用。请确保包含cordova.js或在设备/模拟器中运行。Cordova似乎未处于活动状态,因为在打印平台时,它们不包含"cordova"字符串:

import { Platform } from '@ionic/angular';

constructor(private platform: Platform) {...}

ngOnInit() {
  this.platforms = this.platform.platforms().join(',');
}

当运行ionic cordova run android时,this.platforms的结果是安卓、平板手机、 cordova 、桌面、混合,但当安装我用上面的过程构建的APK时,结果只是安卓、平板手机、桌面
你知道为什么吗?我对移动的开发还很陌生,所以你完全可以认为我犯了新手的错误。如果你觉得任何其他信息会有用,请告诉我,我很乐意添加它。

**EDIT:**为了支持preprod配置,我在angular.json中添加了以下部分:

{
  "projects": {
    "app": {
      "architect": {
        "build": {
          "configurations": {
            "preprod": {
              ...
}}}}}}}

仅使用ionic cordova build android进行建置会产生下列错误:

> ng run app:ionic-cordova-build:preprod --platform=android
An unhandled exception occurred: Configuration 'preprod' is not set in the workspace.

这就是为什么我分3个阶段构建,ionic build ... --configuration=preprodionic cordova prepare ...ionic cordova build android --no-build。我的目的是第一个阶段在正确的配置中构建应用,第二个阶段使用配置构建的Web文件更新Android项目,第三个阶段构建最终的APK。

snvhrwxg

snvhrwxg1#

构建新的调试应用程序(apk)的简单常规方法就是调用

ionic cordova build android

这个调用在内部准备,所以不需要另一个调用。它将产生一个apk文件,你可以用来在设备上测试(也可能是模拟器,取决于功能)。
考虑到这是一个新的应用程序,而且Google的要求也发生了变化,所以当需要发布到商店时,您需要构建一个.aab文件。

ionic cordova build android --release

至于签名,你需要提供密钥给Google,他们会通过提供的.aab为你签名。这里有更详细的解释:
https://ionicframework.com/blog/google-play-android-app-bundle-requirement-for-new-apps/
现在,如果您需要创建一个自定义配置(您所指的preprod),因为您有一些非常具体的 * Angular * 环境更改或要求,超出了默认值所能提供的范围,正如您在注解中所发现的,您将需要编辑angular.json文件来添加它。
默认情况下,Ionic为环境变量提供了一个结构,可以在src/environments中找到。有关其工作原理的更多详细信息,可以在此处找到:
https://medium.com/swlh/environment-variables-in-angular-ionic-8aa1698f2cc5

相关问题