Java 使用JDK1.6以编程方式对Jar文件进行签名但使用JDK1.7时出错
我们正在开发一个Java实用程序,以编程方式对Jar文件进行签名,但我们面临的问题是为JDK1.6签名Jar,因为它在JDK1.7中正常工作 下面给出了用于对APK文件进行签名的代码段:Java 使用JDK1.6以编程方式对Jar文件进行签名但使用JDK1.7时出错,java,android,jdk1.6,jarsigner,Java,Android,Jdk1.6,Jarsigner,我们正在开发一个Java实用程序,以编程方式对Jar文件进行签名,但我们面临的问题是为JDK1.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 P
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文件已正确签名,但对于JDK1.6,应用程序在reader readsline String line=reader.readLine;的第行被阻塞;。
有人能帮我解释一下为什么JDK1.6版本不能使用这个功能吗
谢谢。感谢您的帮助。这是因为您正在使用SHA1,对于JDK1.6,请使用SHA256。你可以在上面签名 更改摘要算法可能会有所帮助 Jarsigner对JDK1.7和JDK1.6使用不同的摘要算法
有人知道这个问题的答案吗?我需要帮助。