it-roy-ru.com

Не удалось разрешить: 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». Не то чтобы руководство по установке ничего не говорило об этом.

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

Android SDK Manager Project Structure

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

Любые идеи приветствуются.

Заранее спасибо!

57
Fran Marzoa

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

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

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

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

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

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

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

В-третьих, даже после этого я получил описание этой «гигантской» проблемы и ответил здесь: https://stackoverflow.com/a/26248495/1160360

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

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

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

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

75
Fran Marzoa

У меня возникла проблема, когда я поставил 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
}
208
Mouss

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

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

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

14
Zakawat

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

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

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

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

11
AlexioVay

SDK сервисов Google Play находится внутри Google Repository.

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

  2. В меню Сервис выберите Android> SDK Manager.

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

Текущая версия Google Repository - 57.

После обновления синхронизируйте ваш проект.

ПРАВКА

Начиная с версии 11.2.0, мы должны использовать репозиторий Google Maven, поэтому добавьте ссылку репозитория Google Maven в тег репозитория. Проверьте информацию о выпуске от здесь .

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

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

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

6
Noureddine AMRI

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

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

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

3
user3318703

В последнем 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
2
Alen Lee

У меня была та же проблема, и она была решена путем отключения автономного режима колыбели, хотя я не мог вспомнить, когда отключил его!

вот решение:

Как отключить Gradle «автономный режим» в Android-студии? [Дубликат]

1
Lily bentham

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

1
MJahongir

У меня была эта проблема . И я нашел, что это решает . В Android Studio, откройте меню «Файл» и перейдите в «Структура проекта», в приложении «Модуль» перейдите на вкладку зависимостей, и вы можете добавить «com.google.Android». gms: play-services: xxx ', нажав кнопку +. 

0
Amirhosein

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

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

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

0
Michael Osofsky

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

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

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

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

0
a.miadian