Dexguard が有効になっている場合、Crashlytics のスタックトレースにファイル名が不明なソースとして表示される 質問する

Dexguard が有効になっている場合、Crashlytics のスタックトレースにファイル名が不明なソースとして表示される 質問する

プロジェクトで Dexguard を有効にすると、Fabric Crashlytics からのクラッシュ レポートに問題が発生します。

私はプロジェクトでDexguardを有効にしましたが、うまくいきました。その後、このこのページ上記の構成を追加して、ファブリックがスタックトレースを難読化解除し、適切なクラッシュレポートを表示できるようにします。メインモジュールにファブリックと 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、エラーが発生したファイル名を結論付けることができますが、スタックトレースにファイル名を表示し、それ自体を完全に説明的なものにしたいと思います。多くのオプションを試し、多くの試行錯誤をしましたが、問題はまだ存在します。

何か見落としている点はありますか? この問題をどのように解決すればよいでしょうか?

私は Dexguard のバージョン8.1.0.71.21.7Fabric プラグインのバージョン、2.9.0Crashlytics ライブラリのバージョンを使用しています。

Fabric プラグインをバージョンに1.25.1、Crashlytics ライブラリをバージョンに更新しました2.9.1が、問題は依然として存在します。

Fabric プラグインをバージョン に1.25.2、ビルド ツールのバージョンを に27.0.3、Gradle プラグインのバージョンを に更新しました3.1.0が、問題はまだ存在します。

ベストアンサー1

難読化解除されたクラッシュレポートについては、次の手順を実行できます。引用元:Firebase Crashlytics ドキュメント

 1. 読みやすいクラッシュ レポートを作成するために Crashlytics が必要とする情報を保存するには、構成ファイルに次の行を追加します。

 -keepattributes *Annotation*
 -keepattributes SourceFile,LineNumberTable
 -keep public class * extends java.lang.Exception

  2. Crashlytics が ProGuard または DexGuard マッピング ファイルを自動的にアップロードできるようにするには、構成ファイルから次の行を削除します。

 -printmapping mapping.txt

おすすめ記事