1

以下のようなクラッシュ レポート サービスのログを見つけることができます。

Caused by: java.lang.VerifyError: com/google/android/gms/auth/GoogleAuthUtil
    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(ProGuard:255)
    at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(ProGuard:279)
    at com.google.api.client.http.HttpRequest.execute(ProGuard:859)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(ProGuard:410)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(ProGuard:343)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(ProGuard:460)

ドキュメントから

クラス検証フェーズを通過しないクラスをロードしようとしたことを VM が認識した場合にスローされます。

これはめったに発生せず、ほとんどがルート化されたデバイスで発生します。このクラスはアプリ内にパッケージ化されているため、一部のデバイスでのみ機能しないのは奇妙です。

これは、誰かがアプリを変更しようとしていることが原因だと思います (例: odex や dalvik-cache のパッチ適用など)。現時点では、アプリをクラッシュさせましたLinkageError。これは、私の意見では処理されるべきではないためです。私は正しいですか、それともこの問題の他の原因があるのでしょうか?

4

1 に答える 1

1

不正なバイト コードが検出された場合、JVM によるクラスのロード中に がスローされるためVerifyError、インストルメンテーションが原因でエラーが発生する可能性があります。Android でのエラーは、com/google/android/gms/auth/GoogleAuthUtilDalvik が読み込めない参照がバイトコードに含まれていることを意味します。GoogleAuthUtilまた、デバイスに存在するものよりも高い API レベルを必要とするメソッドが使用されている場合にも発生する可能性があります。

これ以上、顧客のデバイスからこれ以上の事実を推測することは困難です。あなたが示唆しているように、誰かがアプリのバイトコードを変更しようとしている可能性がありGoogleAuthUtilます.

a)ほとんどの場合、根本的な原因を推測することはできず、b)それについてあまり何もしなくても、アプリをクラッシュさせることはまったく問題ありません。

于 2015-02-23T12:08:18.037 に答える