包含名称为“com.google.android.gms.license”的多个库

我正在使用角4和离子3.现在当我运行“离子cordova运行android”它给我以下错误:

"more than one library with package name 'com.google.android.gms.license'" 

我的project.property文件:

 target=android-26 android.library.reference.1=CordovaLib cordova.system.library.1=com.android.support:support-v4:27.1.0 cordova.system.library.2=com.android.support:support-v4:27.1.0 cordova.system.library.3=com.android.support:support-v4:27.1.0 cordova.system.library.4=com.android.support:appcompat-v7:25.+ cordova.gradle.include.1=cordova-plugin-firebase/starter-build.gradle cordova.system.library.5=com.google.gms:google-services:+ cordova.system.library.6=com.google.android.gms:play-services-tagmanager:+ cordova.system.library.7=com.google.firebase:firebase-core:+ cordova.system.library.8=com.google.firebase:firebase-messaging:+ cordova.system.library.9=com.google.firebase:firebase-crash:+ cordova.system.library.10=com.google.firebase:firebase-config:+ 

我在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.android.support:support-v4:27.1.0" compile "com.android.support:appcompat-v7:25.+" compile "com.google.gms:google-services:+" compile "com.google.android.gms:play-services-tagmanager:+" compile "com.google.firebase:firebase-core:+" compile "com.google.firebase:firebase-messaging:+" compile "com.google.firebase:firebase-crash:+" compile "com.google.firebase:firebase-config:+" // SUB-PROJECT DEPENDENCIES END } 

提前致谢 :)

将project.property文件更改为:

 target=android-26 android.library.reference.1=CordovaLib cordova.system.library.1=com.android.support:support-v4:27.1.0 cordova.system.library.2=com.android.support:support-v4:25.+ cordova.system.library.3=com.android.support:appcompat-v7:25.+ cordova.system.library.6=com.google.firebase:firebase-core:11.8.0 cordova.system.library.7=com.google.firebase:firebase-messaging:11.8.0 cordova.system.library.8=com.google.firebase:firebase-crash:11.8.0 cordova.system.library.9=com.google.firebase:firebase-config:11.8.0 cordova.system.library.9=com.google.firebase:firebase-auth:11.8.0 cordova.system.library.9=me.leolin:ShortcutBadger:1.1.4@aar 

请更新build.gradle文件

 dependencies { classpath 'com.android.tools.build:gradle:2.3.0' } 

将您的版本更改为2.3.0

它为我工作…谢谢

我想你的问题来了:

编译“com.google.gms:google-services:+”

编译“com.google.android.gms:play-services-tagmanager:+”

您应该只导入特定的库,而不是像这样导入gms服务。

您正在使用这两个库。

 compile "com.google.gms:google-services:+" compile "com.google.android.gms:play-services-tagmanager:+" 

这个"com.google.gms:google-services:+"库包含所有播放服务库。

删除此依赖项"com.google.android.gms:play-services-tagmanager:+" ,它将起作用。

但是这仍然不是添加com.google.gms:google-services:+的好方法com.google.gms:google-services:+ ,因为没有必要添加所有谷歌的依赖项。

您可以使用特定依赖项代替此依赖项,例如,如果您使用的是地图,则只使用地图播放服务。

以下是所有播放服务依赖关系https://developers.google.com/android/guides/setup的列表。

我建议你只添加必需的依赖,而不是播放服务普遍依赖。

  • 如果您已经在/android/build.gradle中更改了版本但尚未使用。 也许你需要在node_modules检查一些库包。
  • 例如:react-native-onesignal还会编译一些具有最高版本的播放服务(他们使用+),因此它可以解决这个问题。
  • 您可以将脚本放在根目录下,并在包.json中添加{“scripts”:{“postinstall”:“node changeVersionGoogleService.js”}},这样它就可以在您安装npm时自动更改您的版本。
  • 这是脚本: https : //gist.github.com/duytq94/47ef945131b61de538447d449813b3d4
  • 我的脚本现在自动更改’react-native-onesignal’,’react-native-admob’,’react-native-maps’,’react-native-google-sign-in’

这里讨论的解决方案都没有为我工作,所以我继续

  • 重命名/platform/android文件夹并删除android平台
  • 添加android平台ionic cordova platform add android
  • 由于这有一个解决方案,你需要在platforms/android/app/src/main/res/values/strings.xml文件中添加你的应用程序ID和名称,因此面对facebook的另一个问题

编译后工作正常。

升级到cordova 7时,问题出现了。

只需添加:

 googlePlayServicesVersion=11.8.0 

到你的gradle.properties

玩得开心 …