错误:包含名称为com.google.android.gms.license的多个库

时间:2018-03-21 04:09:15

标签: android google-play-services ionic3

当我尝试将错误命令ionic cordova build android作为上述标题运行时。然后我尝试删除其中一个gms,当我再次构建时,删除它再次出现。怎么解决这个?

以下是我build.gradle的依赖关系:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    debugCompile(project(path: "CordovaLib", configuration: "debug"))
    releaseCompile(project(path: "CordovaLib", configuration: "release"))
    compile "com.google.android.gms:play-services-auth:+" // i remove this
    compile "com.google.android.gms:play-services-identity:+"
    compile "com.facebook.android:facebook-android-sdk:4.+"
    // SUB-PROJECT DEPENDENCIES END
}

15 个答案:

答案 0 :(得分:16)

我最近遇到过这个问题而且我遇到的问题是,由于某种原因,android project.properties文件是使用com.google.android.gms的不同版本生成的,因此:

target=android-26
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:support-v4:24.1.1+
cordova.system.library.2=com.google.android.gms:play-services-auth:+
cordova.system.library.3=com.google.android.gms:play-services-identity:+
cordova.system.library.4=com.google.android.gms:play-services-location:11.+

这使得library.2和library.3需要一个版本,而library.4需要更具体的版本,因此在编译期间会导致重复的库引用。

虽然我不认为这应该是最终的解决方案,但添加特定的库对我有用。就这样:

target=android-26
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:support-v4:24.1.1+
cordova.system.library.2=com.google.android.gms:play-services-auth:11.+
cordova.system.library.3=com.google.android.gms:play-services-identity:11.+
cordova.system.library.4=com.google.android.gms:play-services-location:11.+

答案 1 :(得分:13)

build.gradle中的

添加此

configurations.all {
   resolutionStrategy {
       force "com.google.android.gms:play-services-ads:11.8.0"
       force "com.google.android.gms:play-services-base:11.8.0"
       force "com.google.android.gms:play-services-gcm:11.8.0"
       force "com.google.android.gms:play-services-analytics:11.8.0"
       force "com.google.android.gms:play-services-location:11.8.0"
       force "com.google.android.gms:play-services-basement:11.8.0"
       force "com.google.android.gms:play-services-tagmanager:11.8.0"
       force 'com.google.firebase:firebase-core:11.8.0'
       force 'com.google.firebase:firebase-crash:11.8.0'
       force 'com.google.firebase:firebase-auth:11.8.0'
       force 'com.google.firebase:firebase-common:11.8.0'
       force 'com.google.firebase:firebase-config:11.8.0'
       force 'com.google.firebase:firebase-messaging:11.8.0'
   }
}

如果不起作用,请在项目中搜索字符串'12 .0.0'并在缺少的库上方的列表中添加

答案 2 :(得分:6)

由于Play服务12.0.0而发生这种情况。我继续将依赖项降级到11.8.0(我项目的最后一个已知工作版本)。我正在使用本地反应。我有2个依赖项,它们吸引了12.0.0的google play服务 - com.google.android:play-services...12.0.0 希望这会有所帮助。

答案 3 :(得分:6)

我必须做的事情才能让我的Ionic3应用程序上的构建成功:

  • 添加插件cordova-android-play-services-gradle-release
  • 删除并重新添加Android平台
  • 11. +用于库的platform / android / project.properties文件(特别是如果你使用的是firebase)
  • 11. + for platforms中的依赖项/ android / cordova-plugin-firebase / -build.gradle
  • 以上对platforms / android / build.gradle
  • 的更改

这可能是让事情发挥作用的最糟糕的方式,但有点挽救了我的生命。希望这有助于某人!

答案 4 :(得分:5)

可能与新发布的Google Play服务12.0.0(2018年3月20日发布)有关 我已经解决了修复依赖关系的问题: 在android/build.gradle

中添加配置
allprojects {
repositories {
    ...
    configurations.all {
        resolutionStrategy {
            // Add force (11.0.0 is version you want to use)
             force 'com.google.firebase:firebase-core:11.0.0'
            force 'com.google.firebase:firebase-crash:11.0.0'
            force 'com.google.firebase:firebase-analytics:11.0.0'
            force 'com.google.firebase:firebase-messaging:11.0.0'
            force 'com.google.android.gms:play-services-base:11.0.0'
            force 'com.google.android.gms:play-services-maps:11.0.0'
            force 'com.google.android.gms:play-services-wallet:11.0.0'
        }
    }
}
}

依赖关系来自您的android/app/build.gradle

答案 5 :(得分:3)

就我而言

npm update
cordova platform remove android
cordova platform add android@6.4.0

并替换在platform / android / projet.properties

cordova.system.library.1=com.android.support:support-v4+

cordova.system.library.1=com.android.support:support-v4:26+

答案 6 :(得分:3)

供参考,来自:https://developers.google.com/android/guides/releases

适用于Android的Google API

2018年3月20日 - 版本12.0.0

12.0.0版的已知问题

  • ...
  • -license POM依赖项导致"多个包含名称为“com.google.android.gms.license'" Ionic Pro中的问题。
  • ...

我们将尽快提供更新的12.0.1版本以解决这些问题。

我的解决方法

(基于jeremy castellianswerkeldar随后的评论

我正在使用以下解决方法(我强调,这是一种解决方法)。

将以下内容添加到build-extras.gradle的底部,并在必要时创建该文件。

configurations.all {
  resolutionStrategy {
    force 'com.google.firebase:firebase-core:11.8+',
      'com.google.firebase:firebase-messaging:11.8+',
      'com.google.firebase:firebase-crash:11.8+',
      'com.google.firebase:firebase-config:11.8+',
      'com.google.firebase:firebase-auth:11.8+',
      'com.google.android.gms:play-services-tagmanager:11.8+',
      'com.google.android.gms:play-services-location:11.8+'
  }
}

包含所有firebase和所有android.gms库引用非常重要,如果你只错过这里的一个,它仍然无法构建。 grep你的gradle文件以获取所有引用。在我的情况下,我错过了firebase-auth,它在firebase插件文件夹的.gradle文件中被引用。

resolutionStrategy force所做的是覆盖项目/插件所做的版本选择,并强制gradle引用特定版本。

使用此解决方法无需编辑project.properties或任何其他gradle文件。

答案 7 :(得分:2)

当您运行命令 ionic cordova 时,您可以更改版本,我有相同的错误,我通过更改版本我的节点模块,我的插件cordova,版本关闭android studio修复了问题。

我的讨论如下:

ANDROID STUDIO:3.0.0

pply plugin: 'com.android.application'

buildscript {     存储库{         jcenter()         maven {             网址“https://maven.google.com”         }     }

// Switch the Android Gradle plugin version requirement depending on the
// installed version of Gradle. This dependency is documented at
// http://tools.android.com/tech-docs/new-build-system/version-compatibility
// and https://issues.apache.org/jira/browse/CB-8143
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
    classpath 'com.google.gms:google-services:3.1.1' // google-services plugin
}

}

//允许插件通过build-extras.gradle声明Maven依赖项。 allprojects {     存储库{         jcenter()         maven {             网址“https://maven.google.com”         }     } }

任务包装器(类型:包装器){     gradleVersion ='2.14.1' }

... ... ...
... ...

申请插件:'com.google.gms.google-services'

Gradle版本:3.3 com.google.android.gms:播放服务:11.4.2

有时节点模块和cordova插件出错了,所以你在文件夹中手动删除。 不要忘记在更新时删除并添加cordova插件。

尝试进入android studio => files =>项目结构=> project =>好的 通常,android studio应该同步你的gradle

错误:多个包名为com.google.android.gms.license的库

在我的情况下,问题是因为我包括:

compile 'com.google.android.gms:play-services-wearable:+'
compile 'com.google.android.gms:play-services:4.4.52'

可穿戴式游戏服务和常规游戏服务。我评论了可穿戴部分,它起作用了。 不确定我是否需要它,但项目向导默认包含它

我希望我能帮助你。继续!

答案 8 :(得分:2)

只需将platform / android / project.properties更改为

即可
target=android-26
android.library.reference.1=CordovaLib
cordova.system.library.1=com.android.support:support-v4:24.1.1+
cordova.system.library.2=com.google.android.gms:play-services-auth:11.+
cordova.system.library.3=com.google.android.gms:play-services-identity:11.+
cordova.system.library.4=com.google.android.gms:play-services-location:11.+

这对我有用

答案 9 :(得分:2)

它对我有用。

node_modules/react-native-camera/android/build.gradle:
dependencies {
    compile 'com.facebook.react:react-native:+'
    compile 'com.google.android.gms:play-services-gcm:11.8.0' // update by me on 
    20180321
}

答案 10 :(得分:2)

<强>更新

此错误的原因已被确定为v12.0.0 of the Google Play Services library中的错误:

  

12.0.0版的已知问题   -license POM依赖项导致Ionic Pro中出现“多个具有包名称'com.google.android.gms.license'的库”。

该错误已在v12.0.1 of the Google Play Services library中修复:

  

恢复运行时链接-license工件的唯一包名称,这会影响某些构建系统(例如Ionic Pro)的兼容性问题。

因此,通过cordova-android-play-services-gradle-release插件指定Play服务库的v12.0.1或更高版本可解决此问题,例如:

cordova plugin add cordova-android-play-services-gradle-release  --variable PLAY_SERVICES_VERSION=12.+

答案 11 :(得分:1)

对我而言,需要在 project.properies 文件中向Google Play服务添加版本号。

所以你需要改变:

T

为:

android.library.reference.1=CordovaLib
cordova.system.library.2=com.google.android.gms:play-services-auth:
cordova.system.library.3=com.google.android.gms:play-services-identity:

答案 12 :(得分:1)

build.gradle中只有这个对我有用:

allprojects {
    repositories {
        ...
        configurations.all {
            resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                def requested = details.requested
                if (requested.group == 'com.google.android.gms') {
                    details.useVersion '11.8.0'
                }
                if (requested.group == 'com.google.firebase') {
                    details.useVersion '11.8.0'
                }
            }
        }
    }
}

https://github.com/evollu/react-native-fcm/issues/857#issuecomment-375243825

答案 13 :(得分:1)

1。转到project.properties(在您的平台文件夹中)

2。我在我的“project.properties”中只使用谷歌分析,并且必须在版本的末尾添加“11. +”,这对我有用。不确定这是否是长期修复,但它确实可以解决问题。

cordova.system.library.2=com.google.android.gms:play-services-analytics:11.+

答案 14 :(得分:1)

在我的离子项目中我遇到了同样的错误,经过一些小小的搜索,我已经阅读了有关升级Android平台的内容,这是最新Android Gradle插件所需的,以构建应用程序。

解决方案很容易,只需按照下面提到的步骤进行操作。

  1. 删除现有的Anroid平台
  2.   

    离子cordova平台删除android

    1. 通过Android SDK Manager添加最低版本Android SDK Build Tools 26.0.2以使用最新的Android Gradle插件来构建应用

    2. 添加Android平台的最低版本

    3.   

      离子cordova平台添加android@^6.4.0