首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复未能应用插件[类'com.google.gms.googleservices.GoogleServicesPlugin']?]

如何修复未能应用插件[类'com.google.gms.googleservices.GoogleServicesPlugin']?]
EN

Stack Overflow用户
提问于 2018-02-06 09:43:17
回答 2查看 3.4K关注 0票数 1

我是使用离子1和cordova的新手,我试着安装cordova-plugin-fcm使用以下注释:

代码语言:javascript
复制
cordova plugin add cordova-plugin-fcm

但是当我建造的时候:

代码语言:javascript
复制
ionic cordova run android

我知道这个错误:

脚本'D:\net\netAppV2\platforms\android\cordova-plugin-fcm\netappv2-FCMPlugin.gradle‘行: 13

  • 出了问题:一个评估脚本的问题发生了。未能将插件类'com.google.gms.googleservices.GoogleServicesPlugin‘应用于输入字符串:"+“

这是netappv2-FCMPlugin.gradle的内容

代码语言:javascript
复制
buildscript {
    repositories {
            jcenter()
            mavenLocal()
        }
    dependencies {
        classpath 'com.android.tools.build:gradle:+'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}
// apply plugin: 'com.google.gms.google-services'
// class must be used instead of id(string) to be able to apply plugin from non-root gradle file
apply plugin: com.google.gms.googleservices.GoogleServicesPlugin

请任何人帮我解决这个问题。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-02-06 10:19:44

您可以通过以下方式解决这一问题:

1.从plugins文件夹打开您的plugin.xml的cordova-plugin。

2.查找+并替换11.0.1版本

3.然后移除并增加平台

4.然后建造

票数 1
EN

Stack Overflow用户

发布于 2019-04-06 20:07:15

我遇到了同样的问题,这是由play-services版本引起的。您可以通过@Mani使用临时修复,但是如果您需要的不是临时的,还应该做一些额外的解决方法:

1)创建带有before_prepare类型的钩子。这是JS文件,内容是:

代码语言:javascript
复制
// That hook needed for fixing ANDROID Gradle issues with multiple `google.android.gms` services versions
// details:
// https://github.com/phonegap/phonegap-plugin-push/issues/1718

const fs = require('fs');
const path = require('path');

const FCM_VERSION = '11.8.0';

// You can include more of each string if there are naming conflicts,
// but for the GMS libraries each should be unique enough.
// The full list of libraries is here:
// https://developers.google.com/android/guides/setup
const LIBRARIES = [
    'play-services-analytics',
];

const createRegex = (item) => new RegExp(`${item}:.*`, 'ig');
const createReplace = (item) => `${item}:${FCM_VERSION}`;

module.exports = (ctx) => {
    const Q = ctx.requireCordovaModule('q');
    const deferred = Q.defer();

    const gradle = path.join(ctx.opts.projectRoot, 'platforms', 'android', 'project.properties');
    fs.readFile(gradle, 'utf8', (err, data) => {
        if (err) {
            return deferred.reject(err);
        }

        let result = data;
    LIBRARIES.forEach((lib) => {
        result = result.replace(createRegex(lib), createReplace(lib));
})

    return fs.writeFile(gradle, result, 'utf8', (err) => {
        if (err) {
            deferred.reject(err);
        }
    deferred.resolve();
});
});

    return deferred.promise;
};

2)在android平台的配置中声明这个钩子

代码语言:javascript
复制
<hook type="before_prepare" src="hooks/google-services-versions-fix.js" />

3)在android/project.properties中,查找所有具有+并与play-services相关的版本,如:cordova.system.library.7=com.google.android.gms:play-services-analytics:+

4)将此类依赖项添加到const LIBRARIES =部分。

这将更新所需的依赖关系,以适当的版本,并解决这样的问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48639868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档