有谁知道如何发送包含嵌入式帮助应用程序包的 Mac 应用程序包以供 Apple 公证?当我尝试归档一个简单的应用程序时,一切都很顺利。该应用程序已正确存档,我可以上传存档文件,我的应用程序会在几分钟内得到公证。
但是,当我尝试使用脚本阶段归档包含帮助应用程序包的应用程序包并尝试通过创建存档的正常自动工作流程自动签署和公证我的应用程序包时,我无法上传应用程序包公证。所以我该怎么做?
任何帮助表示赞赏。
有谁知道如何发送包含嵌入式帮助应用程序包的 Mac 应用程序包以供 Apple 公证?当我尝试归档一个简单的应用程序时,一切都很顺利。该应用程序已正确存档,我可以上传存档文件,我的应用程序会在几分钟内得到公证。
但是,当我尝试使用脚本阶段归档包含帮助应用程序包的应用程序包并尝试通过创建存档的正常自动工作流程自动签署和公证我的应用程序包时,我无法上传应用程序包公证。所以我该怎么做?
任何帮助表示赞赏。
感谢 Apple 在 WWDC 2019 期间制作的新文档,我终于能够解决这个问题,这在以前是不可能的,即使在使用 DTS 票后也是如此。基本上,如果你有一个复杂的包并且你需要使用脚本自动构建它,你不能通过 Archive 使用自动工作流,然后通过 Xcode 中的 Organizer 上传应用包。
所以,对于现在和将来遇到这个问题的人来说,这就是解决我的问题的方法:
1) 转到项目导航面板并单击您的项目
2)通过单击构建设置转到每个目标并进行以下修改(在搜索框中输入单词“签名”,因为这会缩小显示的构建设置):
3) 要构建您的应用程序以进行分发,请执行以下操作:
4) 要公证您刚刚创建并正确签名的应用程序包,并使用有效的安全时间戳,您有多种选择:
/usr/bin/ditto -ck --keepParent "*APP_PATH*" "*ZIP_PATH*"
5) 在终端中使用它上传磁盘映像或 zip 文件:xcrun altool --notarize-app --primary-bundle-id "your-primary-bundle-id-here" --username "*your-username*" --password "*your-app-specific-password-here*" --file *your-path-here*
. 您需要转到您的appleid.apple.com帐户为应用程序生成应用程序专用密码altool
。这是一项安全措施,因此您不会以明文形式发送您的 Apple ID 密码。您可以在 Apple ID 管理帐户的“安全”面板中执行此操作。在确认上传成功之前不要做任何事情。
6) 要请求公证历史状态,请在终端中运行:xcrun altool --notarization-history 0 -u "*your-account*" -p "*your-app-specific-password-here*"
。您应该会看到上传列表及其各自的日期和 RequestUUID。最新上传的通常是列表中的第一个。
7) 要请求公证状态,包括访问公证日志文件,请在终端中运行:xcrun altool --notarization-info RequestUUID -u "*your-account*"
8) 如果您的应用程序包已获得批准的状态,那么您可以通过在终端中运行此命令来装订该批准:xcrun stapler staple *path-to-your-app-bundle*
。
你可以在这里找到有用的信息
看看能不能通过公证。对我来说,我必须解压一些罐子并在其中签署文件并重新打包。
我遇到的另一个问题是,当您使用“运行时”选项对其进行代码设计时,Java 应用程序无法运行,这可能与您遇到的问题相同(消失)。要查看错误,您可以从终端运行您的应用程序,您将看到错误。在这种情况下,您可以尝试使用--entitlements
添加一些例外。
这是我用来让我的应用程序运行的权利
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>
签署应用程序的命令:
codesign --force --verbose=9 -s "Developer ID Application: XXXXXXX" --options runtime --deep --entitlements ./entitlements Myapp.app