为什么即使在Firebase崩溃报告中上传mapping.txt后,我也会在日志中获得混淆代码?

时间:2017-01-21 07:24:31

标签: android proguard obfuscation android-proguard deobfuscation

我在我的Android应用中使用Firebase崩溃报告。我正在使用Proguard来混淆我的应用程序。我已经将构建版本apk后生成的mapping.txt文件上传到Firebase崩溃报告,但我仍然收到一些混淆代码,主要是用于我项目中的库的代码,如下所示。

Caused by java.lang.NullPointerException: Attempt to invoke virtual method   
'long com.google.firebase.b.a.a(java.lang.String)' on a null object reference
com.myapp.myodulel.GamePageFragment.onActivityCreated (GamePageFragment.java)
__null__.access$300 (GamePageFragment.java)
android.support.v4.app.Fragment.getActivity (Fragment.java)
__null__.performActivityCreated (Fragment.java)
android.support.v4.app.FragmentManagerImpl.modifiesAlpha     (FragmentManagerImpl.java)

第三方应用功能无法正确显示为“com.google.firebase.b.a.a”。此外,我没有得到正确的错误行数。

我正在将以下罐子用于我的项目。

compile 'com.google.firebase:firebase-ads:9.8.0'      
compile 'com.google.firebase:firebase-config:9.8.0'
compile 'com.google.firebase:firebase-crash:9.8.0'
compile 'com.google.android.gms:play-services-analytics:9.8.0'
compile 'com.android.support:appcompat-v7:24.1.1'
compile project(path: ':BaseGameUtils')
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.facebook.android:facebook-android-sdk:4.8.2'

我相信我没有正确配置proguard来使用这些第三方应用。我已经看过他们的文档,但他们没有提到要添加的内容以及如何添加。请帮助我,因为我是Proguard的新手。

修改

目前我的proguard-rule.pro文件除注释外还有以下代码。

-dontwarn com.squareup.okhttp.**

我做了一些研究,我想我需要为我在我的应用中使用的第三方库添加-keep标志,例如firebase和google play服务。但它会否认混淆?那之后我会得到错误的行数吗?或者我还要做别的事情?

1 个答案:

答案 0 :(得分:1)

添加

-keepattributes SourceFile,LineNumberTable

到您的proguard配置中以查看正确的行号。