署名付き apk には、META-INF/MANIFEST.MFファイルがあります。このファイルでは、次のようなダイジェストを見つけることができます。
名前: res/layout/main.xml SHA1 ダイジェスト: NJ1YLN3mBEKTPibVXbFO8eRCAr8=
名前: AndroidManifest.xml SHA1 ダイジェスト: BlnC6ZBDtQYWeJNiespsQve82wY=
名前: res/drawable-mdpi/ic_launcher.png SHA1 ダイジェスト: 4ss2KZ3FzkmfE6HAAsVu0aJKx1U=
次のように Java でダイジェストを生成する方法を見つけました。
public static void main(String[] args) throws NoSuchAlgorithmException, Exception {
MessageDigest md = MessageDigest.getInstance("sha-1");
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));
}
テストのために、この単純なコードを使用していくつかのダイジェストを生成しました。これは apk のMETA-INF/MANIFEST.MF のダイジェストとほとんど同じですが、少数の例外があります。この Png ファイルのように:
apk では、この png ファイルのダイジェストは4ss2KZ3FzkmfE6HAAsVu0aJKx1U=であり、上記のコードで生成されたsjmKOs4BYDXg7COdeTc8tIfPBR0=とは大きく異なります。
しかし、私のコードによって生成されたほぼ 20 のダイジェストがあることを説明する方法は、apk のダイジェストと同じであり、この Png のダイジェストだけが異なりますか?
Android アプリケーション パッケージのリソースに対して SDK または ADT が SHA1-Digest を生成する方法、または私のコードとの違いを教えてください。
どうもありがとう!