Error: more than one library with package name com.google.android.gms.license

Error: more than one library with package name com.google.android.gms.license

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

当你运行命令ionic cordova你可以改变版本,我有同样的错误,我通过改变节点模块的版本解决了这个问题,我的插件 cordova,版本关闭 android studio.

我的配置如下:

ANDROID工作室:3.0.0

pply plugin: 'com.android.application'

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

任务包装器(类型:包装器){ gradle版本 = '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 工作室应该同步您的 gradle

错误:包名称为 com.google.android.gms.license

的库不止一个

就我而言,问题是因为我包括:

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

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

希望能帮到你。继续!

我最近遇到了这个问题,对我来说问题是由于某种原因 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.+

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

可能与 Google Play services 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

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

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

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

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

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

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

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.

就我而言

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+

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

这对我有用

对我有用。

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
}

更新

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

Known Issues with version 12.0.0 -license POM dependencies cause "more than one library with package name ‘com.google.android.gms.license'" issues in Ionic Pro.

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

Restores unique package names for runtime linked -license artifacts which affected some build systems' (e.g. Ionic Pro) compatibility issues.

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

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

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

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

2. 我在 "project.properties" 中只使用了 google 分析,不得不在版本末尾添加“11.+”,并且这对我有用。不确定这是否是长期修复,但它起到了作用。

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

我在我的 ionic 项目中遇到了同样的错误,经过少量搜索后,我阅读了有关升级 Android 平台的信息,这是最新的 Android Gradle 插件所必需的构建应用程序。

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

  1. 删除现有的 Anroid 平台

ionic cordova platform remove android

  1. 添加最低版本 Android SDK 构建工具 26.0.2 通过 Android SDK 管理器使用最新的 Android Gradle 插件来构建应用

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

ionic cordova platform add android@^6.4.0

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

Google Android

的 API

2018 年 3 月 20 日 - 版本 12.0.0

版本 12.0.0 的已知问题

  • ...
  • -license POM 依赖项导致 Ionic Pro 出现 "more than one library with package name ‘com.google.android.gms.license'" 问题。
  • ...

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


我的解决方法

(基于 jeremy castelli's and keldar 的后续评论)

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

将以下内容添加到 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。

resolutionStrategy force 所做的是覆盖 project/plugins 所做的版本选择并强制 gradle 引用特定版本。

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