-2

Play 開発者コンソールで次のスタック トレースが表示されるアプリがあります。

java.lang.NoClassDefFoundError: android.security.MessageDigest
  at com.google.android.maps.KeyHelper.getSignatureFingerprint(KeyHelper.java:60)   
  at com.google.android.maps.MapActivity.createMap(MapActivity.java:513)
  at com.google.android.maps.MapActivity.onCreate(MapActivity.java:409)
  ...

Play コンソールでは、これらすべてのデバイスがタイプ「OTHER」として一覧表示されます。これは、ユーザーの 1% 程度にしか発生していません。何が原因でしょうか? 修正するにはどうすればよいですか?

ありがとう

4

2 に答える 2

0

MessageDigest クラスは、MD5 や SHA-1 などの一般的な方法を使用して、キーをエンコード/デコードするために使用されるヘルパー クラスです。

クラス android.security.MessageDigest は Honeycomb 以降の Android リリースから削除されたようで、java.security.MessageDigest に置き換える必要があります (このページを参照)。

最新バージョンの Google Maps API をダウンロードして、targetSDK を利用可能な最大値 (16 / Jelly Bean にする必要があります) に設定してアプリケーションを再構築してみてください。

また

簡単な回避策を見つけました!src ディレクトリにパッケージ android\security を作成し、その中に MessageDigest.java を配置するだけです。

package android.security;

import java.security.NoSuchAlgorithmException;

public class MessageDigest
{
    private java.security.MessageDigest instance;

    public MessageDigest() {}

    private MessageDigest(java.security.MessageDigest instance)
    {
        this.instance = instance;
    }

    public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
    {
        if (algorithm == null) return null;

        try
        {
            if (algorithm.equals("SHA-1"))
                return (MessageDigest) Class.forName("android.security.Sha1MessageDigest").newInstance();
            else if (algorithm.equals("MD5"))
                return (MessageDigest) Class.forName("android.security.Md5MessageDigest").newInstance();
        }
        catch (Exception e) {}

        return new MessageDigest(java.security.MessageDigest.getInstance(algorithm));
    }

    public void update(byte[] input)
    {
        instance.update(input);
    }

    public byte[] digest()
    {
        return instance.digest();
    }

    public byte[] digest(byte[] input)
    {
        return instance.digest(input);
    }
}
于 2013-12-05T09:50:17.077 に答える