Не удалось разрешить: com.google.android.gms: игровые сервисы в IntelliJ Idea с gradle

Я пытаюсь добавить сервисы google play к моему проекту libGDX в IntelliJ Idea. Я следил за руководством по установке здесь: 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'
    }
}

Затем я пытаюсь синхронизировать мой проект gradle в Idea, чтобы получить ошибку "Не удалось разрешить".

В руководстве по настройке также говорится: "Обязательно обновляйте этот номер версии каждый раз, когда обновляется сервис Google Play", но проблема в том, что почти невозможно найти номер версии: моя версия Google Play Services SDK в соответствии с менеджер Android SDK - "43", и до сих пор мне не удалось сопоставить такую ​​ "11.2.0" или любую другую типичную строку версии с номером версии "43". Не то, чтобы руководство по установке ничего не говорило об этом.

В любом случае, я пробовал много вещей из множества вопросов, связанных с этим, безрезультатно. В частности, я должен указать, что у меня действительно обновлен SDK для Android, и я уверен, что это тот, который используется Idea (я уже проверял три раза...):

Android SDK Manager Структура проекта

Я использую уровень API 26, но в любом случае другие определяют, используют ли тот же каталог для Android SDK. Более того, у меня нет других SDK для Android, установленных на этом ноутбуке, поэтому нет никаких сомнений в том, что Idea использует этот и тот только.

Любые идеи более чем приветствуются.

Спасибо заранее!

Ответ 1

Я только что заменил версию 11.2.0 на 11.0.0, а затем, похоже, работал нормально, так что это означало, что 11.2.0 не был включен в последнюю версию Android SDK.

Итак, после борьбы со всей доступной разбросанной документацией, я достиг этого документа с чистой вероятностью (я думаю, что он недостаточно индексируется Google): https://developers.google.com/android/guides/releases

Я цитирую оттуда:

Основные моменты из выпуска 11.2 Служб Google Play. Гугл игры службы теперь доступны через maven.google.com

Теперь, даже если это не обязательно означает, что они недоступны с загруженным SDK, похоже, что это действительно так.

В любом случае, добавление google() в мой build.gradle не работает (не найдено, undefined или что-то еще...), поэтому я использовал другой подход, который я нашел в этом документе, ссылаясь на предыдущий

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

Я изменил файл build.gradle, добавив эту строку ко всем проектам/репозиториям, например:

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

А затем также в разделе Android в том же файле build.gradle:

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

В-третьих, даже после этого я получил эту "огромную" вещь, описанную здесь и ответил здесь: fooobar.com/questions/87874/...

И что это. На данный момент все строит, и моя игра наконец показывает те баннеры Admob.

Я потратил часы на это, подумал, что заставляет меня задаться вопросом, стоят ли все эти системы автоматизации зданий, которые мы используем в последнее время, дополнительную добавленную нагрузку.

Я имею в виду, что в первый раз, когда мне приходилось добавлять Admob в приложение пять лет назад или около того, мне просто пришлось загрузить файл .jar и поместить его в каталог моего проекта. Это было довольно очевидно, и весь процесс, от googling "как настроить Admob в моем проекте Android", чтобы мое приложение показывало баннер Admob, заняло у меня всего несколько минут. Я собираюсь оставить его здесь, поскольку это не место для такого рода дебатов.

Тем не менее, я надеюсь, что мой собственный опыт полезен для кого-то еще.

Ответ 2

У меня была проблема, когда я поставил jcenter() перед google() на уровне проекта build.gradle. Когда я изменил порядок и поставил google() перед jcenter() в build.gradle, проблема исчезла

Вот мой финальный 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
}

Ответ 3

Добавьте это в свой файл build.gradle на уровне проекта:

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

Это сработало для меня

Ответ 4

Я пытался решить эту проблему в течение нескольких часов после того, как некоторое время не пользовался Android Studio и не знал об обновлениях.

Важно, чтобы google() был первым элементом, который стоит в таких repositories:

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

Каким-то образом google() был вторым элементом после jcenter(), поэтому все было испорчено и не работало. Может быть, это кому-то помогает.

Ответ 5

SDK службы Google Play находится внутри Google Repository.

  • Запустите Intellij IDEA.

  • В меню "Сервис" выберите "Android" > "Менеджер SDK".

  • Обновите Android SDK Manager: нажмите Инструменты SDK, разверните Репозиторий поддержки, выберите Репозиторий Google и нажмите кнопку ОК.

Текущая версия репозитория Google - 57.

После обновления выполните синхронизацию проекта.

ИЗМЕНИТЬ

Из версии 11.2.0 мы должны использовать репозиторий google maven, чтобы добавить ссылку google maven repo в тег репозиториев. Отметьте примечание о выпуске здесь.

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

Ответ 6

Более актуальный ответ:

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

Ответ 7

Я нашел следующее решение, чтобы заменить следующий код

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

У меня нормально работает

Ответ 8

В последней версии Google Play Services 15.0.0 возникает эта ошибка, когда вы включаете весь сервис Play, как этот

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

Вместо этого вы должны указать подробный сервис, такой как Google Drive

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

Ответ 9

Проверьте настройки Gradle, возможно, он установлен в автономный режим.

Ответ 11

У меня была эта проблема. И я нашел это решение. В Android Studio, меню "Открыть файл" и перейдите на вкладку "Структура проекта" в приложении "Модуль", перейдите на вкладку "Зависимости", и вы можете добавить "com.google.android.gms: play-services: x.x.x", нажав кнопку +.

Ответ 12

вероятно, вы не ввели правильную версию зависимости. Вы можете выбрать правильную зависимость из этого:

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

Если вы не можете найти ваши потребности, вы должны обновить SDK снизу:

Инструменты> Android> SDK Manager> SDK обновление> выберите любую вещь, что вам нужно> хорошо

Ответ 13

Я тоже получил эту ошибку, но по другой причине. Оказывается, я сделал опечатку, когда попытался указать номер версии в качестве переменной:

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

Я определил переменную playServices в gradle.properties в корневом каталоге моего проекта:

playServices=15.0.1

Опечатка была {$playServices} которая должна была сказать ${playServices} следующим образом:

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

Это решило проблему для меня.