1

最近プレイストアに提出したアプリがあります。.apk ファイルをテストしたところ、すべて正常に動作していました。最初のインストール時 (ストアから) - ログインはできますが、その後クラッシュします。レポートから取得したスタック トレースは次のとおりです。

java.lang.NullPointerException
at com.latlon.InitialSearchActivity.e(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.InitialSearchActivity.g(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.MyResultReceiver.onReceiveResult(Unknown Source)
at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:43)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:4385)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
at dalvik.system.NativeStart.main(Native Method)

どこから探し始めればよいのかよくわかりません。何か案は?

4

3 に答える 3

2

さて、スタック トレースのこの部分がコードです。

java.lang.NullPointerException
at com.latlon.InitialSearchActivity.e(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.InitialSearchActivity.g(Unknown Source)
at com.latlon.InitialSearchActivity.a(Unknown Source)
at com.latlon.MyResultReceiver.onReceiveResult(Unknown Source)

onReceiveResult()クラスのメソッドMyResultReceiverが呼び出されました。そのメソッドは、aそのInitialSearchActivityクラスのメソッドgを呼び出したそのクラスのメソッドを呼び出したaそのクラスのメソッドを呼び出したクラスのメソッドを呼び出しましたe。メソッドeNullPointerException(つまり、そのメソッドで、オブジェクト参照が含まれていると思われる変数を使用しようとしましたが、その変数には が含まれていnullました。

メソッド名が難読化されているように見えるため、実際のメソッド名が何であるかを把握するには、コードを確認する必要がある場合があります。

于 2013-02-08T21:35:41.323 に答える
0

Proguard(コードの難読化を行うツール)のドキュメントを確認してください。

「難読化」している可能性が非常に高く、デプロイされたコードで問題が発生する可能性があります。あなたが見ているように。

「proguard-project.txt」ファイルを編集して、Proguard機能をオフにすることができます。難読化が発生しないようにするには、このファイルのすべての行がコメント化されていることを確認してください(各行の先頭にハッシュまたは#マークを付けることによって)。

retrace難読化のマップを解除するためのコマンドがあります。これを機能させるには、proguardによって作成されたいくつかのファイルを提供する必要があります。

完全な説明については、ドキュメントを確認してください:http: //developer.android.com/tools/help/proguard.html

クイックフィックス(Proguardを排除するため)はファイルにコメントを付けることであるため、そもそもファイルは実行されません。

于 2013-02-08T21:49:04.507 に答える
0

コードを難読化するために(Proguardのような)いくつかのツールを使用したようです。難読化後にAPKをテストしましたか?

上記のログから、コードでNullPointerExceptionが発生したため、nullポインターがアクセスされた実際の場所(コード行)を見つけるために、難読化ツールによって生成されたキーファイルを使用してコードの難読化を解除する必要があります。 。

注意してください、難読化の過程で、時々(人為的エラー)が必要なメソッドのいくつかを難読化する可能性があります。これにより、これらのメソッドが見つからなくなるため、例外(NoSuchMethod)が発生する可能性があります。

于 2013-02-08T21:49:29.533 に答える