我想知道是否有人熟悉此错误,这种错误仅在将我的应用程序上载到Apple进行公证时才会发生:
"AppName.zip/AppName.app/Contents/Resources/EWSMacCompress.tar.gz/EWSMacCompress.tar/EWSMac.framework/Versions/A/EWSMac83886082"
"The signature algorithm used is too weak."
其他信息:
-我已经签署我的应用程序好多年了,没有任何问题。该错误仅在发送应用程序以进行公证时发生。
-我在2018年11月提交了一个错误,向苹果提供了他们要求的所有信息-但此问题从未得到进一步解决。
-我最近再次联系了Apple,他们向我指出了一些资源页面,该页面最后一次更新是在2016年。它简短地提到了一个类似的错误-但仍然没有任何有关如何解决该错误的信息: https://developer.apple.com/library/archive/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG301
-搜索此错误没有产生任何有用的结果。
-所涉及的tar.gz文件是eSellerate许可框架。正如许多人可能知道的那样,十多年来,它一直是Mac软件的流行许可平台。不久前我切换到另一个许可平台时,我仍然拥有成千上万的拥有eSellerate许可的客户(我敢肯定其他许多Mac开发人员的情况)。
据我了解,整个情况必须与tar.gz归档文件中的文件签名有关-在该文件上我也找不到任何信息
任何帮助将不胜感激!
谢谢, 狮子座
答案 0 :(得分:2)
您必须解压缩tar
,zip
或jar
文件,对所有有错误的文件进行代码签名,然后重新打包。
只需遍历日志并对所有错误进行代码签名,然后对整个应用程序进行签名。 对我来说,我使用以下两个命令。
find ./MyApp -type f \
-exec codesign --timestamp \
--keychain /Users/builduser/Library/Keychains/login.keychain-db \
-s 'Developer ID Application: XXXXXXXX' -f --verbose=9 --deep \
--options=runtime --entitlements entitlements.xml {} +
然后签名应用
codesign --timestamp \
--keychain /Users/builduser/Library/Keychains/login.keychain-db \
-s 'Developer ID Application: XXXXXXXX' -f --verbose=9 --deep \
--options=runtime --entitlements entitlements.xml MyApp
您必须使用--options=runtime
运行codesign。
这是要进行公证的guide。
如果要构建Java应用程序,这些链接也可能会有所帮助: How to build MacOS app with hardened runtime in AppBundler
https://bitbucket.org/infinitekind/appbundler/issues/39/build-with-hardened-runtime