Конфликты с мгновенной игрой Google и плагином com.google.gms.google-services. - PullRequest
0 голосов
/ 30 августа 2018

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

https://codelabs.developers.google.com/codelabs/android-instant-apps/index.html?index=..%2F..%2Findex#0

Проблема в том, что в функциональном модуле мне нужен доступ к сервисам, реализованным плагином com.google.gms.google-services, поэтому я поместил его внизу моих зависимостей в файле Gradle для такого модуля, но как имя пакета моей игры (скажем) com.me.mygame, в то время как для функционального модуля будет com.me.mygame.base, вышеупомянутый плагин не работает, потому что в моем пакете не определен пакет com.me.mygame.base Приложение google-services.json file.

Итак, я попытался установить имя функционального модуля равным com.me.mygame, и это сделало хитрость, и gradle успешно собрал бы проект, но он потерпит неудачу при попытке построить APK из-за

com.android.dex.DexException: Multiple dex files define Lcom/me/mygame/BuildConfig

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

android {
    dexOptions {
        preDexLibraries = false
    }
}

Но безрезультатно. Проблема сохраняется.

Кажется, логично было бы, чтобы у функционального модуля было другое имя пакета, но, как было сказано ранее, это не удастся из-за того, что плагин com.google.gms.google-services не нашел конфигурацию для такого пакета.

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

Заранее спасибо за миллион!

ОБНОВЛЕНИЕ: я опубликовал минимальный пример в github по следующему URL:

https://github.com/fmmarzoa/IssuesWithFirebaseCrashlytics

Я взял этот пример прямо из Руководств Google. Основная ветвь пуста, те с обходными путями, которые я пробовал до сих пор, называются 'firebase / ...'. Последний - это 'firebase / update-plugins':

https://github.com/fmmarzoa/IssuesWithFirebaseCrashlytics/tree/firebase/updating-plugins

Что я сделал в этом, так это обновил несколько вещей, как это было предложено dchai, и, похоже, он добился цели для плагина Google Services (по крайней мере, сейчас он собирает), но для плагина Firebase Crashlytics, который зависит от вышеупомянутого один продолжает сбой с сообщением об ошибке:

Crashlytics не смог найти манифест. Не найден в /Users/fran/Desktop/Idea/android-topeka/base/build/intermediates/merged_manifests/debug/AndroidManifest.xml

1 Ответ

0 голосов
/ 31 августа 2018

Старые версии плагинов неправильно выбирают applicationId для целей проверки на google-services.json.

Если вы обновитесь до com.android.tools.build:gradle:3.3.0-alpha08 и com.google.gms:google-services:4.1.0, ваша исходная структура проекта должна работать нормально.

...