我正在努力,但未能获得统一的崩溃分析。
我使用unity 2018.4.30。它作为一个包(7.0.2)添加到unity中。其他firebase包已经在项目中运行了。最初,我运行依赖项解析器并尝试构建它。解析器添加了以下内容:
implementation 'com.google.firebase:firebase-crashlytics:17.2.2' //Packages/com.google.firebase.crashlytics/Firebase/Editor/CrashlyticsDependencies.xml:13
implementation 'com.google.firebase:firebase-crashlytics-unity:7.0.2' //Packages/com.google.firebase.crashlytics/Firebase/Editor/CrashlyticsDependencies.xml:20
构建,但它在启动时崩溃,错误信息指向我一些android特定的设置,必须添加到gradle文件(奇怪的是,解析器没有这样做…)
我遵照指示添加了
classpath 'com.google.gms:google-services:4.3.5'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.0'
的依赖性我还添加了
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
到gradle文件
我的gradle工具是:
classpath 'com.android.tools.build:gradle:3.4.3'
我的错误信息是:
* What went wrong: A problem occurred configuring root project 'gradleOut'.
java.lang.ClassCastException: org.gradle.api.internal.file.DefaultFilePropertyFactory$DefaultDirectoryVar$1 cannot be cast to org.gradle.api.file.Directory
更新gradle包装到版本5.6.4(从5.4.1)解决了这个错误的问题。
gradle-wrapper.properties
distributionUrl=https://services.gradle.org/distributions/gradle-5.6.4-all.zip
我的Android Build Gradle工具是3.5.4
com.android.tools.build:gradle:3.5.4
如果你使用的是Unity,你根本不需要编辑gradle文件。如果你想要其他原因,你可以添加一个mainTemplate.gradle
文件(我喜欢这样做,所以EDM4U不添加一堆库到Assets/Plugins/Android
),但你必须有点谨慎(在较新的版本的Unity,如2019年末和所有的2020分支,你也必须添加gradleTemplate.properties
)。
你通常应该只遵循Unity的集成步骤,而不是Android的。apply plugin: 'com.google.gms.google-services'
行实际上与Firebase Unity插件的功能相冲突。apply plugin: 'com.google.firebase.crashlytics'
可以通过一些努力来工作,但也不是必要的,除非你正在尝试与NDK集成(这是Unity SDK中不支持的配置,并且在我自己的测试中,本机崩溃报告器目前不与Unity 2020一起工作)。
我建议回滚你所做的任何构建配置更改,试图让Crashlytics与Unity一起工作,并尝试重新导入。保持SDK尽可能的更新也是值得的——尽管看看发行说明,在7.0.2和7.1.0之间应该不会有任何变化。
如果以上不工作,有一个问题在6。x SDK分支与Unity 2020.1。您可以尝试此解决方案(请注意,我正在用mainTemplate.gradle
替换所有内容,因为2018年没有拆分2019年底和2020年等项目):
现在打开
mainTemplate.gradle
,寻找看起来大致类似的东西:allprojects { buildscript { repositories {**ARTIFACTORYREPOSITORY** google() jcenter() } dependencies {
在
allprojects.buildscript.dependencies
(本例中的dependencies {
位)中,添加以下代码来告诉gradle关于Crashlytics:// Add the Crashlytics Gradle plugin. classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'
和这行代码到
mainTemplate.gradle
的最后,将Crashlytics插件添加到您的应用程序:// Apply the Crashlytics Gradle plugin apply plugin: 'com.google.firebase.crashlytics'
如果Crashlytics仍然是坏的,你可以提交一个bug报告。如果第二个解决方案有效,或者你不介意在公共场合调试你的项目,你可以在这里提交GitHub问题。
总而言之,我的依赖解析器没有生成crashlytics_build_id.xml和其他一些文件。这个错误信息让我找到了android特定的gradle解决方案,这并不适用于unity客户端。一旦我撤消了我的gradle更改并生成了这些文件,一切都好了。