无法解决:带有 gradle 的 IntelliJ Idea 中的 com.google.android.gms:play-services

新手上路,请多包涵

我正在尝试在 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 服务时都更新此版本号”,但问题是似乎几乎不可能找到该版本号:我的 Google Play 服务 SDK 版本根据 Android SDK manager 是“43”,到目前为止,我无法将这样的“11.2.0”或任何典型的版本字符串与“43”版本号相关联。并不是说设置指南对此一无所知。

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

Android SDK 管理器项目结构

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

任何想法都非常受欢迎。

提前致谢!

原文由 Fran Marzoa 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 632
2 个回答

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

因此,在与所有可用的零散文档苦苦挣扎之后,我纯粹是偶然发现了这个文档(我猜它没有被谷歌索引得足够高): 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: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 横幅的整个过程只花了我几分钟。我会把它留在这里,因为这里不是进行这种辩论的地方。

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

原文由 Fran Marzoa 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

这是我最后的 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
}

原文由 Moussa 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题