我们发布一个Java应用程序,其中包含一个捆绑的JRE版本1.8.0_172。我使用-f --deep和--options runtime标志对应用程序进行签名。查看捆绑JRE的_CodeSignature目录中的CodeResources文件,JRE中的每个文件都已签名并得到确认。
然而,在将包含应用程序的DMG提交给苹果进行公证后,我们的软件被拒绝。在JRE中的所有60个DYLIB文件都被列为未签名。以下是一个示例:
从CodeResources文件中:
从苹果的回应中:
除了dylib文件外,文件jspawnhelper也因未签名而被拒绝。
最后,文件libjli.dylib由于以下原因被拒绝: “该二进制文件使用的SDK早于10.9 SDK。”
有人遇到过类似问题并能够通过认证过程吗?
2020年1月14日: 我从这个网站http://www.zarkonnen.com/signing_notarizing_catalina中使用的步骤已经不再适用于今天。苹果改变了他们的限制条件。我现在面临着与我在此帖子中首次提出的问题相同的问题。
2020年2月21日: 事实证明,列为未签名的文件实际上未签名。我现在使用一个shell脚本递归地为我们应用程序中的每个文件进行签名。我接着签署捆绑的JRE、其他内部应用程序,最后是整个顶级应用程序的总体签署。
剩余的问题是Java 8没有构建使用强化运行时的文件。希望OpenJDK和/或AdoptOpenJDK很快将有新版本的Java 8,满足Apple的强化运行时要求。
然而,在将包含应用程序的DMG提交给苹果进行公证后,我们的软件被拒绝。在JRE中的所有60个DYLIB文件都被列为未签名。以下是一个示例:
从CodeResources文件中:
<key>Home/jre/lib/libAppleScriptEngine.dylib</key>
<dict>
<key>hash</key>
<data>
oJjQQGky4LuYNhwuBu8zMLG4zbc=
</data>
<key>hash2</key>
<data>
grMACw0q7A9GJyPxlSBDGYEkZKrDusKLRRnXsW/bHGI=
</data>
</dict>
从苹果的回应中:
"severity": "error",
"code": null,
"path": "TheApplication.dmg/TheApplication.app/Contents/PlugIns/jdk1.8.0_172.jdk/Contents/Home/jre/lib/libAppleScriptEngine.dylib",
"message": "The binary is not signed.",
"docUrl": null,
"architecture": "x86_64"
除了dylib文件外,文件jspawnhelper也因未签名而被拒绝。
最后,文件libjli.dylib由于以下原因被拒绝: “该二进制文件使用的SDK早于10.9 SDK。”
有人遇到过类似问题并能够通过认证过程吗?
2020年1月14日: 我从这个网站http://www.zarkonnen.com/signing_notarizing_catalina中使用的步骤已经不再适用于今天。苹果改变了他们的限制条件。我现在面临着与我在此帖子中首次提出的问题相同的问题。
2020年2月21日: 事实证明,列为未签名的文件实际上未签名。我现在使用一个shell脚本递归地为我们应用程序中的每个文件进行签名。我接着签署捆绑的JRE、其他内部应用程序,最后是整个顶级应用程序的总体签署。
剩余的问题是Java 8没有构建使用强化运行时的文件。希望OpenJDK和/或AdoptOpenJDK很快将有新版本的Java 8,满足Apple的强化运行时要求。