У меня проблема с отчетами о сбоях от Fabric Crashlytics, когда я включаю Dexguard в своем проекте.
Я включил Dexguard в своем проекте, и он работает очень хорошо. Затем я выполнил инструкции на этой этой странице и добавил упомянутые конфигурации, чтобы позволить фабрике де-запутать мои трассировки стека и отображать правильные отчеты о сбоях. Вот как я применяю плагины fabric и dexguard в build.gradle
основного модуля:
apply plugin: 'com.android.application'
apply plugin: 'dexguard'
apply plugin: 'io.fabric'
А вот конфигурации в моем 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.**
#############################################################################
А вот как я использую 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
}
}
}
Но когда в сборке выпуска встречается сбой, имя файла, в котором произошел сбой, отсутствует, но все остальное работает правильно, и трассировка стека почти понятна. Вот пример отчета о сбое:
Как вы можете видеть в отчете о сбое, в трассировке стека отсутствует только имя файла. Остальные описания, такие как номера строк и имена методов, полностью в порядке.
Хотя я использую полные имена методов, такие как ir.X.ui.XMainActivity.throwSomething
, и номера строк перед Unknown Source
, я могу заключить имя файла, в котором произошла ошибка, я бы хотел, чтобы мои трассировки стека отображали имена файлов и были полностью описательными. Я перепробовал много вариантов, много проб и ошибок, но проблема все еще существует.
Что мне не хватает? Как я могу решить эту проблему?
Я использую версию 8.1.0.7
Dexguard, версию 1.21.7
плагина Fabric и версию 2.9.0
библиотеки Crashlytics.
Я обновил плагин Fabric до версии 1.25.1
и библиотеку Crashlytics до версии 2.9.1
, но проблема все еще существует.
Я обновил плагин Fabric до версии 1.25.2
, версию инструментов сборки до 27.0.3
и версию плагина gradle до 3.1.0
, но проблема все еще существует.
ir.resid.ui.ResidMainActivity.throwSomething (Unknown Source:87469)
- person Mohamad Amin   schedule 13.03.2018Dexguard
илиCrashlytics
, а не нашей конфигурации. - person Mohamad Amin   schedule 14.05.2018Unknown Source
- это то место, где будет имя файла (например,Something.java:608
). Тебе это не нужно. Имя класса (ResidMainActivity
) и имя метода (throwSomething
) разрешены правильно, и по ним вы можете угадать имя файла или попросить IDE найти класс за вас. Хорошо. - person Eugen Pechanec   schedule 16.07.2018