Ionic Cordova 构建失败并出现错误无法应用插件

Posted

技术标签:

【中文标题】Ionic Cordova 构建失败并出现错误无法应用插件【英文标题】:Ionic Cordova build failed with error Failed to apply plugin 【发布时间】: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

输出错误

【问题讨论】:

我猜你的插件之一是使用 + 来包含导致问题的依赖项 谢谢!是的,你是对的。为了让它工作,我必须修复很多事情,即使在解决之后(插件使用+),检查我的答案.. 我应该把它作为答案发布吗? 【参考方案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 仅运行一次。

【讨论】:

以上是关于Ionic Cordova 构建失败并出现错误无法应用插件的主要内容,如果未能解决你的问题,请参考以下文章

带有扩展名的应用程序的 Ionic/Cordova iOS 应用程序构建错误 - ** 存档失败 **

ionic cordova build --prod --release 失败并产生错误

Cordova-plugin-facebook4 - 无法构建离子应用程序

Ionic Cordova 使用 Gradle 构建 Android 错误并且构建失败 [重复]

Sencha Touch native - Cordova 构建失败并出现 EACCES 错误

任务执行失败:processDebugResources [ Cordova / Ionic ]