我们正在开发一个Java实用程序来以编程方式签署Jar文件,但是面临的问题是签署JDK 1.6的Jar,因为它正在为JDK1.7正常工作
以下是用于对APK文件进行签名的代码段:
private void signAPK(){
APK_SIGNER_COMMAND = "jarsigner -verbose -keystore keystore_file.keystore -digestalg SHA1 apk_file.apk Alias_Value -storepass Password_value";
try {
System.out.println(APK_SIGNER_COMMAND);
Process p = Runtime.getRuntime().exec(APK_SIGNER_COMMAND);
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null){
System.out.println(line);
line=reader.readLine();
}
reader.close();
p.destroy();
} catch (IOException e) {
e.printStackTrace();
}
}
对于JDK1.7 jar / apk文件正确签名,但对于JDK 1.6应用程序在读取器readline(String line = reader.readLine();)的行被阻止。 有人可以帮助解释为什么这可能不适用于JDK1.6版本。
感谢。帮助感谢。
答案 0 :(得分:0)
正在发生这种情况是因为您正在使用SHA1,对于JDK1.6使用SHA256。你或许可以签名。
更改摘要算法可能会有所帮助。
Jarsigner对JDK1.7和JDK1.6使用不同的摘要算法