【问题标题】:Error: more than one library with package name com.google.android.gms.license错误:多个库的包名称为 com.google.android.gms.license
【发布时间】:2018-03-21 04:09:15
【问题描述】:

当我尝试运行命令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
}

【问题讨论】:

    标签: android google-play-services ionic3


    【解决方案1】:

    我最近遇到了这个问题,对我来说问题是由于某种原因生成了 com.google.android.gms 的不同版本的 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:+
    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.+
    

    【讨论】:

    • 也为我工作 - 但就像你说的,编辑 project.properties 不能成为最终解决方案!
    • 在尝试构建时像这样更改后找不到任何与 com.google.gms:google-services:11+ 匹配的版本。不匹配的版本:
    • 我想您必须更改值以匹配您使用的任何版本。关键思想是所有参考文献的版本都相同
    【解决方案2】:

    在 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”并添加到缺失库上方的列表中

    【讨论】:

    • 这行得通 - 谢谢!我个人认为将它放在 build-extras.gradle 中会更好。
    【解决方案3】:

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

    【讨论】:

    • 谢谢你的建议,这个答案对我的问题也有帮助..谢谢
    【解决方案4】:

    为了在我的 Ionic3 应用程序上成功构建我必须做的事情:

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

    这可能是让事情顺利进行的最糟糕的方法,但有点救了我的命。希望这对某人有帮助!

    【讨论】:

      【解决方案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

      【讨论】:

        【解决方案6】:

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

        适用于 Android 的 Google API

        2018 年 3 月 20 日 - 版本 12.0.0

        版本 12.0.0 的已知问题

        • ...
        • -license POM 依赖项在 Ionic Pro 中导致“多个库的包名称为‘com.google.android.gms.license’”问题。
        • ...

        我们将尽快提供更新的 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 插件文件夹的 .gradle 文件中引用的 firebase-auth。

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

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

        【讨论】:

        • 所以我看到这个问题已在 3 月 28 日得到解决。我昨天下载了最新版本的 Cordova Google Maps 插件,但我仍然遇到了这个问题。我们是否也必须等待 Cordova Google Maps 插件的发布?
        【解决方案7】:

        就我而言

        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+
        

        【讨论】:

          【解决方案8】:

          更新

          此错误的原因已被确定为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中修复:

          为影响某些构建系统(例如 Ionic Pro)兼容性问题的运行时链接许可证工件恢复唯一的包名称。

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

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

          【讨论】:

            【解决方案9】:

            当您运行命令 ionic cordova 时,您可以更改版本,我有同样的错误,我通过更改版本我的节点模块、我的插件 cordova、android studio 版本解决了这个问题。

            我在下面的配置:

            安卓工作室:3.0.0

            pply plugin: 'com.android.application'
            

            构建脚本 { 存储库{ 中心() 行家{ 网址“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 依赖项。 所有项目{ 存储库{ 中心() 行家{ 网址“https://maven.google.com” } } }

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

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

            应用插件:'com.google.gms.google-services'

            Gradle 版本:3.3 com.google.android.gms:play-services:11.4.2

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

            尝试进入android studio => files => project structure => project =>ok 通常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'
            

            可穿戴游戏服务和常规服务。我注释掉了可穿戴部分,它可以工作。 不确定我是否需要它,但项目向导默认包含它

            希望能帮到你。继续!

            【讨论】:

              【解决方案10】:

              只需将 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.+
              

              这对我有用

              【讨论】:

                【解决方案11】:

                它对我有用。

                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
                }
                

                【讨论】:

                  【解决方案12】:

                  对我来说,这是在 project.properies 文件中将版本号添加到 Google Play 服务的问题。

                  因此您需要更改以下内容:

                  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:
                  

                  到:

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

                  【讨论】:

                    【解决方案13】:

                    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

                    【讨论】:

                      【解决方案14】:

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

                      2.我在我的“project.properties”中只使用了谷歌分析,不得不在版本末尾添加“11.+”,这对我有用。不确定这是否是长期解决方案,但它起到了作用。

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

                      【讨论】:

                        【解决方案15】:

                        我在我的 ionic 项目中遇到了同样的错误,经过一番搜索后,我了解到要升级最新的 Android Gradle 插件所需的 Android 平台以构建应用程序。

                        解决方法很简单只需按照下面提到的步骤即可。

                        1. 删除您现有的 Anroid 平台

                        ionic cordova 平台移除 android

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

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

                        ionic cordova 平台添加android@^6.4.0

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 1970-01-01
                          • 2018-09-04
                          • 2018-08-30
                          • 2018-12-04
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2014-06-23
                          相关资源
                          最近更新 更多