未能解决: com.google.android.gms: Play-services in IntelliJ Ideas with gradle

我试图添加谷歌播放服务到我的 libGDX 项目在 IntelliJ 的想法。我已经按照这里的设置指南: 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'
}
}

然后我尝试同步我的分级项目的想法,只是为了得到“未能解决”的错误。

好吧,安装指南还说“确保每次 Google Play 服务更新时都更新这个版本号”,但问题是似乎几乎不可能找到这个版本号: 根据 Android SDK 管理器,我的 Google Play Services SDK 版本是“43”,到目前为止,我还无法将这样的“11.2.0”或任何典型的版本字符串与“43”版本号相关联。并不是说设置指南没有提到这一点。

无论如何,我已经尝试了很多东西从过多的问题相关的这个没有用。具体来说,我必须指出,我的 Android SDK 确实已经得到了适当的更新,而且我确信这是 Ideas 正在使用的 SDK (我已经三次检查过了... ...) :

Android SDK Manager Project Structure

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

任何想法都欢迎。

先谢谢你!

175835 次浏览

Google Play 服务 SDK 在 Google Repository中。

  1. 启动 Intellij IDEA。

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

  3. 更新 Android SDK Manager: 单击 SDK 工具,展开 支援储存库,选择 谷歌知识库,然后单击 OK。

目前的 Google Repository 版本是57。

更新后同步项目。

剪辑

从版本 11.2.0,我们已经使用谷歌专家回购,所以添加谷歌专家回购链接库标签。检查 给你的释放说明。

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

我只是把11.2.0版本替换成了11.0.0版本,然后它似乎工作得很好,所以这意味着最新的 Android SDK 没有包含11.2.0版本。

因此,在与所有可用的分散文档作斗争之后,我完全是碰巧找到了这个文档(我猜它的索引级别不够高) : Https://developers.google.com/android/guides/releases

我引用一下:

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

现在,即使这不一定意味着它们不再可用于已下载的 SDK,看起来事实确实如此。

无论如何,在 build.gradle 中添加 google ()不起作用(找不到,没有定义,或者其他什么... ...) ,所以我使用了一种不同的方法,这种方法是我在前面的文档中找到的:

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

我修改了 build.gradle 文件,将这一行添加到所有项目/存储库,如下所示:

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'
}
}

这两句台词足以让格拉德尔毫无问题地同步。除了那些已经默认添加到我的 libGDX 项目中的插件之外,我不需要添加任何插件。

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

首先,我有一个 minSdkVersion 8。提高到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 Studio 中,打开“文件”菜单,进入“项目结构”,在“模块”应用程序中,进入“依赖项”选项卡,通过点击“ +”按钮,可以添加“ com.google.Android.gms: play-services: x.x.x”。

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

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

这招对我很管用

一个更新的答案:

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

这可能是因为您没有输入正确的依赖版本。 你可以从这里选择正确的依赖项:

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

如果找不到你的需要,你应该从以下方式更新你的 sdk:

工具 > android > sdk Manager > sdk update > select any thing you need > OK

在最新的 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

检查您的等级设置,它可能被设置为脱机工作

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

这是我最后的成果,分级

// 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
}

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

// 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
}

对我来说挺好的

我有同样的问题,它解决了禁用格拉德尔的离线模式,虽然我不记得我什么时候禁用了它!

解决办法是:

如何在安卓工作室中禁用“离线模式”? [复制]

我也得到了这个错误,但原因不同。事实证明,当我试图将版本号指定为变量时,出现了一个输入错误:

dependencies {
// ...
implementation "com.google.android.gms:play-services-location:{$playServices}"
// ...
}

我在我项目的根目录 gradle.properties 中定义了变量 playServices:

playServices=15.0.1

这个错误是 {$playServices},它应该像这样写 ${playServices}:

dependencies {
// ...
implementation "com.google.android.gms:play-services-location:${playServices}"
// ...
}

解决了我的问题。

我尝试解决这个问题几个小时后,我没有使用安卓工作室一段时间,并没有意识到更新。

重要的是,google()是第一个像这样站在 repositories的项目:

allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}

不知为何,google()是继 jcenter()之后的第二个项目,所以一切都搞砸了,没有工作。也许这对某些人有帮助。

在我的情况下,我使用的是版本 17.0.1。它显示错误。

implementation "com.google.android.gms:play-services-location:17.0.1"

在改变版本为 17.0.0之后,它工作了

implementation "com.google.android.gms:play-services-location:17.0.0"

原因可能是我使用的是版本17.0.0的地图依赖关系和位置版本17.0.1。它可能会抛出错误。因此,请尝试保持版本号的一致性。

第一步: 打开机器人文件夹

第二步: 打开 gradle.bat 文件

第三步: 搜索这个(可能是第74行) @ rem Execute Gradle “% JAVA _ EXE%”% DEFAULT _ JVM _ OPTS%% JAVA _ OPTS%% GRADLE _ OPTS%”-Dorg.GRADLE.appname =% APP _ BASE _ NAME% “-类路径”% CLASSPATH% “ org.GRADLE.wrapper

第四步: 添加——离线添加像

@ rem Execute Gradle “% JAVA _ EXE%”% DEFAULT _ JVM _ OPTS%% JAVA _ OPTS%% GRADLE _ OPTS%”-Dorg.GRADLE.appname =% APP _ BASE _ NAME% “-类路径”% CLASSPATH% “ org.GRADLE.wrapper