小编Moh*_*min的帖子

Crashlytics的stacktraces在启用Dexguard时将文件名显示为Unknown Source

当我在项目中启用Dexguard时,我遇到了来自Fabric Crashlytics的崩溃报告的问题.

我在项目中启用了Dexguard,效果非常好.然后我按照本页中的说明添加了所提到的配置,以使Fabric对我的堆栈跟踪进行去混淆并显示正确的崩溃报告.以下是我在主模块中应用fabric和dexguard插件的方法build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'dexguard'
apply plugin: 'io.fabric'
Run Code Online (Sandbox Code Playgroud)

以下是我proguard-project.txt文件中的配置:

# Fabric
#############################################################################
-keepattributes *Annotation*,SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
-keepresourcexmlelements manifest/application/meta-data@name=io.fabric.ApiKey
-keep class com.crashlytics.** { *; }
-dontwarn com.crashlytics.**
#############################################################################
Run Code Online (Sandbox Code Playgroud)

以下是我proguard-project.txt在发布版本中的使用方法:

buildTypes{
    debug{
        proguardFile getDefaultDexGuardFile('dexguard-debug-shrink.pro')
        proguardFile 'proguard-project.txt'
    }
    release{
        proguardFile getDefaultDexGuardFile('dexguard-release.pro')
        proguardFile 'proguard-project.txt'
        proguardFile 'dexguard-project.txt'
        if(new File("$projectDir/../local.properties").exists()){
            signingConfig signingConfigs.release
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当在发布版本中遇到崩溃时,发生崩溃的文件名将丢失,但其他所有内容都正常工作,并且堆栈跟踪几乎是可以理解的.这是一个崩溃报告示例:

未知的源文件名

正如您在崩溃报告中看到的那样,堆栈跟踪中只缺少文件名.行号和方法名称等其他描述完全正常.

虽然使用完整的方法名称ir.X.ui.XMainActivity.throwSomething和前面的行号Unknown Source,但我可以得出错误发生的文件名,我希望我的堆栈跟踪显示文件名并完全描述自己.我尝试了很多选项和许多试验和错误,但问题仍然存在.

有什么我想念的吗?我怎么解决这个问题?

我正在使用8.1.0.7Dexguard版本1.21.7,Fabric插件版本2.9.0 …

android stack-trace dexguard crashlytics-android google-fabric

20
推荐指数
1
解决办法
2056
查看次数