8

Google PlayデベロッパーコンソールでProguardを有効にしていて(minifyenabled true)、最近クラッシュレポートを取得しました。私はそれを見たとき、私は 次のことを見た:Stacktraceでクラスとメソッドの名前を表示しているGoogle Playデベロッパーコンソール

enter image description here

ProGuardのが有効になっているように私は、1行目では完全なクラスやメソッドの名前を見て驚きました。 com.myname.myapp.cfで

(不明なソース)

私も私はありませんとして、行番号が表示されているか興味:私はいつも以前にこのようなものを見てきました私のProguard設定ファイルに行番号を保存しています(なぜ、私は通常、スタックトレースに 'Unknown Source'が表示されるのですか)。

私は.apkを逆コンパイルし、classes.dexファイルを閲覧しました。 stacktraceの1行目で参照されているクラスが見つかったので、メソッド名と同様に、クラス名は確かに難読化されていました。

今、 'MyActivity'(スタックトレースの2行目)は、アプリケーションの起動アクティビティです。マニフェストで宣言されているので、名前がわかりにくく、 'onConnected'メソッドが私の方法ではありません(Google Playゲームサービスからのものです)、これもまた問題ありません。がそうのようonConnected内

'MyMethodNameは' から呼び出されます。

@Override 
public void onConnected(Bundle arg0) { 
    myClassObject.myMethodName();  //Where myClassObject is an instance of MyClassName 
} 

デバッグは、私のbuild.gradleファイルで無効に設定されています。

mapping.txtファイルをPlay Consoleにアップロードしません。手動でリトレースを実行して、難読化されていないスタックトレースを表示します。

ここでフルクラスとメソッド名が表示されている理由を誰かが理解できたら助かりますか?これを防ぐにはどうすればよいですか?

+0

'MyClassName'は' Activity'クラスですか?デフォルトの 'ProGuard'ルールを使用していますか? –

答えて

3

このオーバー苦渋の週間後、私は最終的に原因を発見し...

十分では私の解放アプリが完全に難読化された、と言うことです - これらのデ - 難読化されたスタックトレースは私自身の試験装置から来ています!!

はい、Androidスタジオから直接アプリを実行している自分のテストデバイスとの署名なしです。 (明らかな理由から、私はデバッグビルドでProGuardを有効にしません)。

このアプリのテストに使用したデバイスは「主流」デバイスではなく、Dev Consolに表示される「名前」はデバイスの実際の名前と似ていないため、すぐに気付かなかった。

私はこれまで過去に起こったことはないと確信しています(私は確かにこれまで見ていません)。なぜなら、デバッグビルドからのクラッシュレポートを実動ビルドのクラッシュに伴い、知りません。

誰かがこの問題を遭遇している場合は、自分のデバッグビルドではないことを確認してから、何かの前にスタックトレースの流入を引き起こします。

-2

mapping.txtファイルをPlay Consoleにアップロードしていないため、手動でリピート を実行して、難読化されていないスタックトレースを表示します。

次に、mapping.txtをGoogleプレイに追加すると、パッケージとクラス名がわかりにくくなる場合があります。

+0

これは正しくありません - mappings.txtがアップロードされ、リトレースのようなツールを手動で使用することなく開発者コンソール内の難解なスタックトレースを直接表示できます。それらを難読化することとは何の関係もありません。まったく逆です。参照:https://support.google.com/googleplay/android-developer/answer/6295281?hl=en-GB – Zippy

関連する問題