与Google Instant Game和com.google.gms.google-services插件冲突

时间:2018-08-30 14:42:43

标签: java android firebase gradle google-play-services

我正在创建我的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文件。

所以我也尝试通过将功能模块的名称设置为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插件未找到该程序包的配置,该操作将失败。

所以...我对此一无所知,没有任何想法,因此欢迎您提供任何帮助。

预先感谢一百万!

更新:我在以下URL的github中发布了一个最小的示例:

https://github.com/fmmarzoa/IssuesWithFirebaseCrashlytics

我直接从Google指南中获取了该示例。 master分支为空,到目前为止,我尝试过的解决方法都命名为“ firebase / ...”。最后一个是这个“ firebase / updating-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 :(得分:2)

较旧版本的插件无法正确提取applicationId来检查google-services.json

如果您升级到com.android.tools.build:gradle:3.3.0-alpha08com.google.gms:google-services:4.1.0,您的原始项目结构应该会很好。