当我尝试将错误命令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
}
答案 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)
添加此
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应用程序上的构建成功:
这可能是让事情发挥作用的最糟糕的方式,但有点挽救了我的生命。希望这有助于某人!
答案 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版的已知问题
我们将尽快提供更新的12.0.1版本以解决这些问题。
我的解决方法
(基于jeremy castelli的answer和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-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插件所需的,以构建应用程序。
解决方案很容易,只需按照下面提到的步骤进行操作。
离子cordova平台删除android
通过Android SDK Manager添加最低版本Android SDK Build Tools 26.0.2以使用最新的Android Gradle插件来构建应用
添加Android平台的最低版本
离子cordova平台添加android@^6.4.0