1

私はAndroidベースのアプリにFirebaseのクラッシュレポートを使用しています。私はProguardを使用して私のアプリを難読化しています。私は、リリースapkをビルドした後に生成されたmapping.txtファイルをFirebase Crashレポートにアップロードしましたが、私はまだ以下のように私のプロジェクトに使用されているライブラリから主にコードを取得しています。Firebaseクラッシュレポートにmapping.txtをアップロードした後でも、なぜコードが難読化されているのですか?

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」として正しく表示されません。また、私はエラーの適切な行番号を取得していません。

私は自分のプロジェクトに次のjarファイルを使用しています。

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-rule.proファイルは、コメント以外のコードは次の通りです。

-dontwarn com.squareup.okhttp.** 

私はいくつかの研究を行なったし、私は私がfirebaseとGoogle Playのサービスのように私のアプリで使用していますサードパーティのライブラリを-keepフラグを追加する必要があると思います。しかし、それは難読化を妥協するだろうか?その後、私はエラーの行番号を取得しますか?それとも別のことをしなければならないのですか?

+1

ここにプロゴアードファイルを投稿できます –

+0

あなたのGamePageFragment.onActivityCreatedを投稿してください –

答えて

1

正しい行番号を参照してくださいProGuardの設定ファイルに

-keepattributes SourceFile,LineNumberTable 

を追加します。

+0

このフラグをプロダクションにしておくことの副作用はありますか? – vijay053

+0

はい。ソースを持つ人は誰でも手動でスタックトレースをリトレースできます。それを避けたい場合は、 '-renamesourcefileattribute'オプションを指定してください。 – F43nd1r

+0

そして、どのようにして" com.google.firebase.b.a.a "の問題を解決するのですか? -keepフラグを使用するのが正しい解決策です。はいの場合、アプリで使用しているすべてのサードパーティライブラリにKeepフラグを追加する必要がありますか? – vijay053

関連する問題