无法解决:com.google.android.gms:使用gradle在IntelliJ Idea中播放服务

我正在尝试在IntelliJ Idea中为我的libGDX项目添加Google Play服务。 我已按照此处的设置指南进行操作: https : //developers.google.com/android/guides/setup

这看起来非常简单。 我刚刚在相应的部分中将这些行添加到我的build.gradle中,所以现在看起来像:

project(":android") { apply plugin: "android" apply plugin: 'com.android.application' configurations { natives } dependencies { compile project(":core") compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64" compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86" compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86" natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64" compile 'com.google.android.gms:play-services:11.2.0' } } 

然后我尝试在Idea中同步我的gradle项目,以获得“无法解决”错误。

好吧,设置指南还说“确保每次更新Google Play服务时都更新此版本号”,但问题是find该版本号几乎是不可能的:根据Android SDK我的Google Play Services SDK版本manager是“43”,到目前为止,我无法将这样的“11.2.0”或任何典型的版本字符串与“43”版本号相关联。 并非设置指南对此没有任何说明。

无论如何,我已经从与此相关的众多问题中尝试了很多事情但无济于事。 具体来说,我必须指出我确实更新了我的Android SDK,我确信它是Idea正在使用的那个(我已经三次检查了这个……):

Android SDK Manager 项目结构

我正在使用API​​级别26,但无论如何其他定义确实使用Android SDK的相同目录。 此外,我没有在这台笔记本电脑上安装任何其他Android SDK,所以毫无疑问,Idea只使用那个和那个。

任何想法都非常受欢迎。

提前致谢!

我刚用11.0.0替换了版本11.2.0然后它似乎工作正常,所以这意味着最新的Android SDK不包含11.2.0。

因此,在努力学习所有可用的分散文档之后,我完全有机会获得了这个文档(我猜它没有被Google索引得足够高): https : //developers.google.com/android/guides/releases

我引用那里:

Google Play服务11.2版本的亮点。 Google Play服务依赖项现在可通过maven.google.com获得

现在,即使这不一定意味着它们不再适用于已下载的SDK,看起来实际上就是这种情况。

无论如何,将google()添加到我的build.gradle不起作用(找不到,未定义,或其他……),所以我使用了一种不同的方法,我在上一篇引用的文档中find了它:

https://developer.android.com/studio/build/dependencies.html#google-maven

我修改了我的build.gradle文件,将该行添加到allprojects / repositories,如下所示:

 allprojects { ... repositories { ... maven { url "https://maven.google.com/"} } } 

然后还在同一build.gradle文件的android部分:

 project(":android") { ... dependencies { ... compile 'com.google.android.gms:play-services-ads:11.2.0' } } 

这两行足以使Gradle同步而不会出现问题。 除了默认情况下已添加到我的libGDX项目中的插件之外,我不需要添加任何插件。

之后,我得到了一些不同的错误,但没有关于Gradle或依赖关系的错误。 简而言之,JFTR:

首先,我有一个8的minSdkVersion。通过将它提高到14来解决。我想我可以在不支持14岁以下的所有设备的情况下生活。

其次,我对引用的dex上限有问题。 我以前从未遇到过这个问题,但也许您已经注意到我使用的解决方案:而不是编译整个’com.google.android.gms:play-services’我只使用’com.google.android.gms :play-services-ads’这是我现在真正感兴趣的API。 对于像这样的解决方案可能没用的其他特殊情况,本文档可以提供一些更好的见解: https : //developer.android.com/studio/build/multidex.html

第三,即使在那之后,我在这里描述并回答了这个“巨型”问题: https : //stackoverflow.com/a/26248495/1160360

就是这样。 截至目前,一切都在构建,我的游戏终于展示了那些Admob横幅。

我想花了几个小时,这让我想知道我们最近使用的所有这些楼宇自动化系统是否值得他们增加的额外负荷。

我的意思是,五年前我第一次将Admob添加到应用程序中时,我只需下载.jar文件并将其放在我项目的目录中。 这是非常明显的整个过程,从谷歌搜索“如何在我的Android项目中设置Admob”让我的应用程序显示Admob横幅花了我几分钟。 我要把它留在这里,因为这不是进行这种辩论的地方。

尽管如此,我希望自己的经验对其他人有用。

当我在项目级build.gradle中的google()之前放置jcenter()时,我遇到了问题。 当我更改顺序并在jcenter()中的jcenter google()之前放置google() ,问题就消失了

这是我的最终build.gradle

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

将其添加到项目级build.gradle文件中:

 repositories { maven { url "https://maven.google.com" } } 

它对我有用

Google Play服务SDK位于Google Repository

  1. 启动Intellij IDEA。

  2. 在“工具”菜单上,单击“Android”>“SDK Manager”。

  3. 更新Android SDK Manager:单击SDK Tools ,展开Support Repository ,选择Google Repository ,然后单击OK。

目前的Google Repository版本为57。

更新后同步您的项目。

编辑

从版本11.2.0 ,我们将使用google maven repo,因此请在存储库标记中添加google maven repo链接。 从这里查看发行说明。

 allprojects { .. repositories { ... maven { url 'https://maven.google.com' // Alternative URL is 'https://dl.google.com/dl/android/maven2/' } } } 

更新的答案:

 allprojects { repositories { google() // add this } } 

并且不要忘记将gradle更新为4.1+(在gradle-wrapper.properties中):

 distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip 

来源: https : //developer.android.com/studio/build/dependencies.html#google-maven

在最新的Google Play Services 15.0.0 ,如果您包含此类整个播放服务,则会出现此错误

 implementation 'com.google.android.gms:play‐services:15.0.0' 

相反,您必须具体说明Google Drive等详细服务

 com.google.android.gms:play-services-drive:15.0.0 

这可能是关于你没有输入正确的依赖版本。 你可以从中选择正确的依赖:

 file>menu>project structure>app>dependencies>+>Library Dependency>select any thing you need > OK 

如果无法find您的需求,您应该从以下方式更新您的sdk:

工具> android> sdk管理器> sdk更新>选择你需要的任何东西>确定

检查您的gradle设置,它可能设置为Offline Work

我find了以下解决方案来替换以下代码

 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.3' classpath 'com.google.gms:google-services:3.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

这对我来说很好

我有那个问题。 我发现这个解决了。 在Android Studio中,打开文件菜单,然后转到项目结构,在模块应用程序中,转到依赖项选项卡,您可以通过单击+按钮添加“com.google.android.gms:play-services:xxx”。