如何公开包含嵌入其中的帮助程序的应用程序包?

问题描述 投票:0回答:1

有没有人知道如何发送包含嵌入式帮助应用程序包的Mac应用程序包,以便由Apple公证?当我尝试归档一个简单的应用程序时,一切顺利。该应用程序已正确存档,我可以上传存档,我的应用程序会在几分钟的问题中进行公证。

但是,当我尝试将包含帮助应用程序包的应用程序包归档到其中时,使用脚本阶段并尝试通过创建存档的正常自动工作流程自动签署和公证我的应用程序包,我无法上传应用程序包公证。所以我该怎么做?

任何帮助表示赞赏。

macos sign xcode10 software-distribution
1个回答
1
投票

你可以找到有用的信息here

看看你是否可以通过公证。对我来说,我必须解开一些罐子并在其中签名并重新包装。

我遇到的另一个问题是当你使用'runtime'选项对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

0
投票

由于Apple在2019年WWDC期间制作的新文档,我终于能够解决这个问题,这在以前是不可能的,即使在使用DTS票证之后也是如此。基本上,如果您有一个复杂的包,并且需要使用脚本自动构建它,则不能通过Archive使用自动工作流,然后通过Xcode中的管理器上传应用包。

那么,对于那些现在和将来遇到这个问题的人来说,这就解决了我的问题:

1)转到项目导航面板,然后单击您的项目

2)通过单击构建设置转到每个目标并进行以下修改(在搜索框中输入“签名”一词,因为这会缩小显示的构建设置):

  • 转到代码签名身份,并在发布版本上将Mac Developer(默认值)更改为您的钥匙串上的开发人员ID应用程序。
  • 转到代码签名注入基本权利和发布版本更改是(默认值)为否。如果您没有这样做,公证服务器将拒绝您的应用程序包,因为您允许代码注入您的应用程序,这是调试所需要的,但存在安全风险。
  • 转到代码签名样式,并在发布版本上将自动更改为手动。如果您没有这样做,正确的签名将失败。
  • 转到其他代码签名标志和发布版本添加--timestamp。这将标记要为您的应用添加安全时间戳的Xcode。如果您未能执行此操作,公证服务器将拒绝您的应用程序包。

3)要构建您的应用程序以进行分发,请执行以下操作:

  • 使用版本构建设置创建包含所有目标的新Scheme
  • 单击Build或Command + B作为键快捷键,只要您遵循由内到外的规则(即,应首先签署更深层次目录中的代码!),您将对所有捆绑包进行正确签名。

4)要公证您刚刚创建并正确签名的应用程序包,并使用有效的安全时间戳,您有几个选项:

  • 创建一个.dmg磁盘映像,并按照此answer中的说明进行操作。但是,跳过代码签名说明,我在这里解释的内容涵盖了那里解释的所有问题和注意事项。或者,您可以压缩并上传zip文件,如下所述:
  • 使用终端:/usr/bin/ditto -ck --keepParent "*APP_PATH*" "*ZIP_PATH*"中的应用程序将您的应用程序包压缩为zip文件

5)在Terminal: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*中使用它上传磁盘映像或zip文件。您需要转到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*中运行此批准来批准该批准。

© www.soinside.com 2019 - 2024. All rights reserved.