Eclipse で ADT によって apk をエクスポートし、この apk を avd にインストールしようとしましたが、「アプリケーションがインストールされていません」というメッセージが表示されました。
logcat を確認したところ、次のことがわかりました。
W/PackageParser(59): java.lang.SecurityException: META-INF/MANIFEST.MF has invalid digest for res/drawable-mdpi/ic_launcher.png in /data/app/vmdl25264.tmp
E/PackageParser(59): Package com.ep.android has no certificates at entry res/drawable-mdpi/ic_launcher.png; ignoring!
apkのファイル「META-INF/MANIFEST.MF」で、これを見つけました:
Name: res/drawable-mdpi/ic_launcher.png
SHA1-Digest: 4ss2KZ3FzkmfE6HAAsVu0aJKx1U=
そこで、独自のJavaプログラミングを使用してpngファイルのSHA1-Digestを生成しようとしましたが、結果は「sjmKOs4BYDXg7COdeTc8tIfPBR0 =」で、まったく異なります。SHA1-Digest を生成するための私の Java コードは次のとおりです。
public static void main(String[] filename) throws NoSuchAlgorithmException,
Exception {
MessageDigest md = MessageDigest.getInstance("SHA1");
FileInputStream in = new FileInputStream("./ic_launcher.png");
int bytes = 0;
while ((bytes = in.read()) != -1) {
md.update((byte)bytes);
}
in.close();
byte[] thedigest = md.digest();
System.out.println(Base64Encoder.encode(thedigest));
}
avd と私のコードの両方で、apk の MANIFEST.MF の SHA1-Digest が無効であると見なされているようです。したがって、ADT の SHA1-Digest ジェネレーターがここで何か問題を起こしたと思います。バグですか?それとも私は何かを逃した?