Не удалось разрешить: 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 (я уже проверял три раза...):
![Структура проекта]()
Я использую уровень 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, возможно, он установлен в автономный режим.
Ответ 10
У меня была та же проблема, и она была решена путем отключения автономного режима колыбели, хотя я не мог вспомнить, когда отключил его!
вот решение:
Как отключить Gradle "автономный режим" в Android Studio? [дубликат]
Ответ 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}"
// ...
}
Это решило проблему для меня.