【问题标题】:Ionic Cordova build failed with error Failed to apply pluginIonic Cordova 构建失败并出现错误无法应用插件
【发布时间】:2018-10-02 10:27:04
【问题描述】:

当我运行命令在 Ionic 中构建 Android 项目时 -

ionic cordova build androidcordova build android

这是我的平台/android/project.properties

target=android-26
android.library.reference.1=CordovaLib
cordova.gradle.include.1=cordova-support-google-services/luxerus-build.gradle
cordova.gradle.include.2=cordova-plugin-firebase/luxerus-build.gradle
cordova.system.library.1=com.google.gms:google-services:+
cordova.system.library.2=com.google.android.gms:play-services-tagmanager:9.8.0
cordova.system.library.3=com.google.firebase:firebase-core:9.8.0
cordova.system.library.4=com.google.firebase:firebase-messaging:9.8.0
cordova.system.library.5=com.google.firebase:firebase-crash:9.8.0
cordova.system.library.6=com.google.firebase:firebase-config:9.8.0
cordova.system.library.7=com.google.firebase:firebase-perf:9.8.0

输出错误

【问题讨论】:

  • 我猜你的插件之一是使用 + 来包含导致问题的依赖项
  • 谢谢!是的,你是对的。为了让它工作,我必须修复很多事情,即使在解决之后(插件使用+),检查我的答案..
  • 我应该把它作为答案发布吗?

标签: android cordova ionic-framework ionic2 ionic-native


【解决方案1】:

尝试更改此设置

  cordova.system.library.1=com.google.gms:google-services:+

到这里:

  cordova.system.library.1=com.google.gms:google-services:3.1.1 

【讨论】:

  • 这个文件的第 16 行是什么?平台/android/cordova-support-google-services/luxerus-build.gradle
  • 第 16 行 -> 应用插件:com.google.gms.googleservices.GoogleServicesPlugin
  • 据我所知。 “cordova.system.library.1=com.google.gms:google-services:+”表示包含所有 google 服务库。所以你应该注释你的第 16 行。它是两个谷歌服务库之间的冲突。
  • 谢谢!您的回答帮助我完成了工作。为了让它工作,我必须修复很多东西,检查我的答案..了解详细信息。
【解决方案2】:

这个错误给你一个额外的解释:

对于输入字符串:“+”

所以问题是你使用的格式

cordova.system.library.1=com.google.gms:google-services:+

如果您使用 Android Studio,您还会收到类似的警告

避免在版本号中使用+;可能导致不可预测和 不可重复的构建

在依赖项中使用+ 可以让您自动获取最新的 可用版本而不是特定的命名版本。然而,这 不推荐;您的构建不可重复;你可能有 使用与构建服务器稍有不同的版本进行测试 用过的。 (使用动态版本作为主版本号比较多 比在次要版本位置使用它有问题。)

所以不要给+,至少给它一个主要版本,比如11.0.+(只需测试一下,看看哪个版本适合你的项目)。

【讨论】:

  • 感谢您的回答。尝试了不同的版本!还是一样的错误。
  • 我们怎么知道哪个版本有效?有没有办法解决这个问题?
  • 好吧,我不习惯Ionic,但是对于Gradle,最好和你的其他库一样,9.8.0。最后一个版本是15.0.0
  • 谢谢!您的回答帮助我完成了工作。为了让它工作,我必须修复很多东西,检查我的答案..了解详细信息。
【解决方案3】:

看起来您对 google play 服务有另一个依赖项 您必须修复所有依赖项版本以更具体,例如 11.0.+。并尝试使它们都匹配,例如,如果 firebase 使用不同的服务版本,这可能是您的问题

【讨论】:

    【解决方案4】:

    尝试删除您的 Android 平台并重新添加:

    ionic cordova platform rm android

    ionic cordova platform add android

    然后尝试再次运行您的构建。

    【讨论】:

      【解决方案5】:

      以上所有答案都非常有帮助。谢谢!用于发布答案。

      按照这些步骤,这对我有用!

      步骤 - 1)

      ionic cordova platform rm android
      

      步骤 - 2) 然后在终端..

      nano ~/.bash_profile
      

      export PATH=$PATH:/Users/$USER/Library/Android/sdk/platform-tools/
      
      export PATH=$PATH:/Users/$USER/Library/Android/sdk/tools/
      

      步骤 - 3)

      ionic cordova platform add android@6.4.0    
      

      步骤 - 4) 注释行(在文件 cordova-plugin-fcm/project-FCMPlugin.gradle 中,行号 - 13)

      //apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
      

      步骤 - 5) 注释行(在文件 cordova-support-google-services/project-build.gradle,行号 - 16)

      //apply plugin: com.google.gms.googleservices.GoogleServicesPlugin
      

      步骤 - 6) 添加文件,项目级 build.gradle,行号 - 35

      dependencies {
            classpath 'com.android.tools.build:gradle:3.0.0'
      }
      

      步骤 - 7) 在文件 project.properties 中(版本 9.8.0 也适用于我!在另一个项目中,为此我使用了 9.0.0)

      target=android-26
      android.library.reference.1=CordovaLib
      cordova.system.library.1=com.google.firebase:firebase-core:9.0.0
      cordova.system.library.2=com.google.firebase:firebase-messaging:9.0.0
      cordova.gradle.include.1=cordova-plugin-fcm/luxerus-FCMPlugin.gradle
      cordova.gradle.include.2=cordova-plugin-firebase/luxerus-build.gradle
      cordova.system.library.3=com.google.gms:google-services:+
      cordova.system.library.4=com.google.android.gms:play-services-tagmanager:+
      cordova.system.library.5=com.google.firebase:firebase-core:+
      cordova.system.library.6=com.google.firebase:firebase-messaging:+
      cordova.system.library.7=com.google.firebase:firebase-crash:+
      cordova.system.library.8=com.google.firebase:firebase-config:+
      cordova.system.library.9=com.google.firebase:firebase-perf:+
      cordova.gradle.include.3=cordova-support-google-services/luxerus-build.gradle
      

      即使在那之后,我也得到了这个错误!

      默认 FirebaseApp 未在此过程中初始化 processName 确保首先调用 FirebaseApp.initializeApp(Context)。

      我遇到了这个问题。我在android studio的平台上构建了生成的android项目然后我发现了问题并解决了这个问题。

      按照这些步骤..

      在平台文件夹中,android/src/{package name}/MainActivity.java

      导入 firebase 库, * 导入 com.google.firebase.FirebaseApp;

      在oncreate方法内部,在super.oncreate(savedinstancestate)下面,

      添加 FirebaseApp.initializeApp(this);

      最后一步,

      在平台文件夹中,android/res/values/string.xml,

      添加***

      ***可以在googleservice.json文件中找到"client": [{"client_info": {"mobilesdk_app_id": this value


      参考(更多详情):https://github.com/arnesson/cordova-plugin-firebase/issues/142


      在 AndroidManifest.xml 中也添加这个

      <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="20" />
      

      就是这样。谢谢!!

      【讨论】:

        【解决方案6】:

        上述问题是由于在构建过程中多次应用 google services 插件导致的。将Add support for EnableGoogleServicesPlugin PR 合并到 Cordova Android 后即可解决此问题,从而确保 cordova-support-google-services 仅运行一次。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-07
          • 2019-10-05
          • 2018-06-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多