在android上创建统一的崩溃分析



我正在努力,但未能获得统一的崩溃分析。

我使用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更改并生成了这些文件,一切都好了。

相关内容

  • 没有找到相关文章

最新更新