繁体   English   中英

无法解析:com.google.android.gms:play-services in IntelliJ Idea with gradle

[英]Failed to resolve: com.google.android.gms:play-services in IntelliJ Idea with gradle

我正在尝试在 IntelliJ Idea 中将 google play 服务添加到我的 libGDX 项目中。 我已按照此处的设置指南进行操作: 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 服务时都要确保更新此版本号”,但问题是似乎几乎不可能找到该版本号:根据 Android SDK,我的 Google Play 服务 SDK 版本manager 是“43”,到目前为止我一直无法将这样的“11.2.0”或任何典型的版本字符串与“43”版本号相关联。 并不是说设置指南对此一无所知。

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

Android SDK 管理器 项目结构

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

任何想法都非常受欢迎。

提前致谢!

我有问题,当我把jcenter()之前, google()在项目级的build.gradle。 当我更改顺序并将google()放在jcenter()中的 jcenter 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
}

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

因此,在与所有可用的分散文档苦苦挣扎之后,我纯粹是偶然地找到了这个文档(我猜它没有被 Google 索引得足够高): https : //developers.google.com/android/guides/releases

我从那里引用:

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

现在,即使这不一定意味着它们不再适用于下载的 SDK,但事实似乎确实如此。

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

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:

首先,我的 minSdkVersion 为 8。通过将其提高到 14 来解决。我想我可以不支持所有 14 以下的设备。

其次,我在引用的 dex 上限方面遇到了问题。 我以前从未遇到过这个问题,但也许您已经注意到我使用的解决方案:我只使用了 com.google.android.gms 而不是编译整个 'com.google.android.gms:play-services' :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文件中:

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

它对我有用

在我有一段时间没有使用 Android Studio 并且不知道更新之后,我尝试解决这个问题几个小时。

重要的是google()是位于repositories的第一个项目,如下所示:

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

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

Google Play 服务 SDK 位于Google Repository

  1. 启动 Intellij IDEA。

  2. 在工具菜单上,单击 Android > SDK 管理器。

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

当前的 Google 存储库版本是 57。

更新后同步您的项目。

编辑

从版本11.2.0 ,我们必须使用 google maven repo,因此在 repositories 标签中添加 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

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

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

这对我来说很好用

检查你的gradle设置,它可能被设置为离线工作

我也遇到了这个错误,但原因不同。 事实证明,当我尝试将版本号指定为变量时,我犯了一个错字:

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

那为我解决了问题。

就我而言,我使用的是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。它可能抛出了错误。所以,尽量保持版本号的一致性。

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

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

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

如果找不到您的需求,您应该从以下方式更新您的 SDK:

工具>android>sdk manager>sdk update>选择你需要的任何东西>ok

我遇到了同样的问题,它通过禁用 Gradle 的离线模式解决了,尽管我不记得我什么时候禁用它了!

这是解决方案:

如何在android studio中禁用Gradle“离线模式”? [重复]

第 1 步:打开 android 文件夹

第二步:打开gradlew.bat文件

第 3 步:搜索这个(可能的第 74 行)@rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org. gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

第 4 步:添加 --offline 添加结尾像

@rem 执行 Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_offlineARGS%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM