Добавление зависимости к сервисам Google Play в библиотеке Android


Я разрабатываю библиотеку Android, которая зависит от сервисов Google Play.

В инструкции Google по настройке сервисов Google Play указаны только шаги, которые необходимо выполнить при добавлении приложения в проект, а не в библиотеку.

Я попытался выполнить те же шаги для моей библиотеки и в итоге получил следующий файл build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0-alpha3'
        classpath 'com.google.gms:google-services:2.0.0-alpha3'
    }
}

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-annotations:+'
    provided 'com.google.android.gms:play-services-auth:8.4.0'
}

apply plugin: 'com.google.gms.google-services'

Проблема в том, что при построении проекта я получаю следующее исключение:

* What went wrong:
Execution failed for task ':processDebugGoogleServices'.
> File google-services.json is missing from module root folder. The Google Services Plugin cannot function without it.

Я понимаю. это потому, что, как указано в документации Google Play Services (https://developers.google.com/android/guides/setup ), это зависит от файла json для конфигурации. Однако, поскольку я строю это как библиотеку, мне нужны были google-сервисы.JSON-файл будет добавлен в проект, который будет использовать мою библиотеку, а не помещать его в саму библиотеку.

Так как же я могу это сделать? Как я могу скомпилировать свою библиотеку, которая зависит от классов, определенных в сервисах Google Play, но не совсем настроить сервисы Google Play внутри библиотеки и разрешить это делать приложению, которое использует мою библиотеку?

Спасибо!

2 2

2 ответа:

Вы можете создать и добавить google-services.json, используя инструкцию на этой странице

Он имеет пошаговый набор инструкций для генерации файла.

Это оказалось проще, чем я думал.

Все, что мне нужно было сделать, это удалить строки classpath 'com.google.gms:google-services:2.0.0-alpha3' и apply plugin: 'com.google.gms.google-services' из файла библиотеки build.gradle, а затем добавить их только в файл gradle в моем проекте приложения, который зависит от этой пользовательской библиотеки.