プロジェクトで 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.7
、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
が、問題はまだ存在します。
ベストアンサー1
難読化解除されたクラッシュレポートについては、次の手順を実行できます。引用元:Firebase Crashlytics ドキュメント
1. 読みやすいクラッシュ レポートを作成するために Crashlytics が必要とする情報を保存するには、構成ファイルに次の行を追加します。
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public class * extends java.lang.Exception
2. Crashlytics が ProGuard または DexGuard マッピング ファイルを自動的にアップロードできるようにするには、構成ファイルから次の行を削除します。
-printmapping mapping.txt