封装 iOS 移动应用程序
-
本文介绍 Citrix Endpoint Management™ 管理员如何封装第三方企业应用程序以及开发人员如何封装 ISV 应用程序。要封装 iOS 移动应用程序:
- 使用 MDX Service。有关详细信息,请参阅MDX Service。
- 使用 MDX Toolkit,其中包括 macOS 图形界面工具和 macOS 命令行工具。macOS 命令行工具具有自定义选项,可从自动化应用程序封装过程的脚本中引用,并允许您预设一些 MDX 策略。
封装应用程序的文件类型为 .mdx。您将 .mdx 文件上载到 Endpoint Management 控制台,在该控制台中配置特定的应用程序详细信息和策略设置,这些设置由 Endpoint Management Store 强制执行。当用户登录时,应用程序将显示在应用商店中。然后,用户可以在其设备上订阅、下载和安装应用程序。
-
下图概述了应用程序封装步骤,从安装 MDX Toolkit 到测试移动生产力应用程序。相关主题列在图表下方。
-

-
有关第一部分的详细信息,请参阅:
- 系统要求
- 封装 iOS 移动应用程序的其他要求
- Endpoint Management 兼容性
-
有关第二部分的详细信息,请参阅:
- 创建预配配置文件
- 应用程序升级
- 策略和移动生产力应用程序
- 使用图形界面封装企业应用程序
- 使用命令行封装企业 iOS 应用程序
- 命令选项
- 预设 iOS 应用程序的 MDX 策略
- 识别 iOS 应用程序封装错误
- 在 iOS 设备上收集系统日志
- 将 MDX 应用程序添加到 Citrix Endpoint Management
重要:
请确保用户设备已更新到与用于封装应用程序的 MDX Toolkit 版本兼容的 Secure Hub 版本。否则,用户会看到有关不兼容性的错误消息。有关详细信息,请参阅 Endpoint Management 兼容性。
通过 Apple DEP 部署 iOS 设备
注册 Apple 部署计划以利用 Apple 设备注册计划 (DEP)。您可以使用 Apple DEP 在 Citrix Endpoint Management 中部署和管理 iOS 和 macOS 设备。有关详细信息,包括如何注册 Apple 部署计划,请参阅通过 Apple DEP 部署 iOS 和 macOS 设备。
创建预配配置文件
在物理 iOS 设备上运行的应用程序(Apple App Store 中的应用程序除外)必须使用预配配置文件和相应的分发证书进行签名。分发有两种开发人员计划:
- iOS Developer Program (Ad Hoc)
-
iOS Developer Enterprise Program。要封装应用程序,Citrix 建议使用 Enterprise 计划。您可以从 Apple 网站注册该计划。
- Enterprise 配置文件允许您在无限数量的设备上运行应用程序。Ad Hoc 配置文件允许您在最多约 100 台设备上运行应用程序。
Apple 不再支持新企业帐户使用通配符 App ID。如果您的企业帐户不支持通配符 App ID,则必须创建多个显式 App ID 和预配配置文件,如下所示。
-
验证您是否拥有有效的 iOS 分发证书。
-
在 Apple Enterprise Developer 门户中,为您计划使用 MDX Toolkit 封装的每个应用程序创建一个显式 App ID。可接受的 App ID 示例为:com.CompanyName.ProductName。
-
在 Apple Enterprise Developer 门户中,转到 Provisioning Profiles > Distribution(预配配置文件 > 分发)并创建内部预配配置文件。对上一步中创建的每个 App ID 重复此步骤。
-
下载所有预配配置文件。
如果您的 Apple 企业帐户支持通配符 App ID,您可以继续使用通配符预配配置文件来封装应用程序。但是,如果您在 Secure Mail 在后台运行时使用 Apple 推送通知服务 (APNs) 进行通知,则必须使用显式预配配置文件和 App ID。
您要安装 MDX 应用程序的任何设备都需要在设备上具有预配配置文件。您可以通过电子邮件附件将配置文件分发给用户设备。用户可以通过单击附件在其 iOS 设备上添加配置文件。
有关预配配置文件和分发证书的详细信息,请参阅 Apple Developer Account Help。
有关将预配配置文件部署到 iOS 设备以及处理过期配置文件的更多信息,请参阅 Endpoint Management 文章中关于预配配置文件设备策略的内容。
应用程序升级
重要:
在升级应用程序之前,请注意 App ID 的更改或使用部分通配符 App ID 预配配置文件如何影响应用程序升级。
- 除非 App ID 已更改,否则以前封装的应用程序会就地升级。例如,如果您将 bundle ID 从 com.citrix.mail 更改为 com.example.mail,则没有升级路径。用户必须重新安装应用程序。设备会将该应用程序视为新应用程序。新版本和旧版本的应用程序都可以驻留在设备上。
- 如果您使用部分预配配置文件(例如 com.xxxx)来封装包含 com.citrix 的 bundle ID 的应用程序,我们建议如下:删除已安装的 MDX 封装应用程序,并安装使用最新 MDX Toolkit 封装的应用程序。由于 bundle ID 从 com.citrix.mail 更改为 com.example,用户必须重新安装应用程序。
- 当满足以下条件时,就地升级成功:如果应用程序使用完整通配符 App ID 封装,并且应用程序的新版本具有与已安装应用程序匹配的 App ID。
策略和移动生产力应用程序
注意:
MDX 10.7.5 版本是支持封装移动生产力应用程序的最终版本。您不能使用 MDX 10.7.10 及更高版本或 MDX Service 来封装 10.7.5 或更高版本的移动生产力应用程序。您必须从公共应用商店访问移动生产力应用程序。
Citrix 提供了一组通用默认策略,适用于所有移动生产力应用程序,并为某些移动生产力应用程序提供了一组特定策略。策略文件名基于捆绑包 ID。默认情况下,Citrix Endpoint Management 应用程序的策略文件名采用 com.citrix.app_policy_metadata.xml 形式,其中 app 是一个名称,例如“mail”。
如果您拥有不支持通配符应用程序 ID 的 Apple Enterprise 帐户,请执行以下操作:在打包 Endpoint Management 应用程序时,更改捆绑包 ID 中的公司标识符。例如,Secure Mail 的捆绑包 ID 为 com.citrix.mail。将该标识符中的“citrix”替换为您的公司标识符。如果您的公司标识符是“example”,则捆绑包 ID 为 com.example.mail。当您打包该应用程序时,策略文件名将是 com.example.mail_policy_metadata.xml。
为确定要应用于应用程序的策略文件,MDX Toolkit 按以下顺序查找文件,并使用找到的第一个文件:
- 与您的捆绑包 ID 匹配的文件名,例如 com.example.mail_policy_metadata.xml,如上例所述。
- 与原始捆绑包 ID 匹配的文件名,例如 com.citrix.mail_policy_metadata.xml。
- 与通用默认策略文件 policy_metadata.xml 匹配的文件名。
通过修改与您的捆绑包 ID 或原始捆绑包 ID 匹配的文件,为特定的 Citrix Endpoint Management 应用程序创建您自己的一组默认策略。
使用图形界面打包企业应用程序
以下步骤介绍了打包从 Endpoint Management 部署的企业应用程序的一般过程。ISV 应用程序打包的一般过程在使用图形界面打包 ISV 应用程序中进行了描述。
重要提示:
在使用图形界面打包 iOS 应用程序之前,私钥和证书都必须安装在 Mac 的“钥匙串访问”中。如果关联的分发证书未将私钥安装到“钥匙串访问”中,则图形界面不会预填充 iOS 分发证书列表。有关详细信息,请参阅本文后面的“当工具包找不到分发证书时修复您的钥匙串”。
-
在使用工具包打包应用程序之前,请务必备份这些应用程序的原始版本,以便在需要时可以恢复。
-
从 iOS 应用程序文件夹启动 MDX Toolkit,选择 For IT administrators,然后单击 Next。

-
单击 Browse,选择文件,然后单击 Next。

-
Verify App Details(验证应用程序详细信息)屏幕显示从应用程序获取的信息。根据需要更改预填充的信息。您可以选择指定最低和最高操作系统版本,并列出不允许运行该应用程序的设备类型。您还可以在将应用程序上载到 Citrix Endpoint Management 后更改应用程序详细信息。
-

-
- 在 Create Citrix Mobile App(创建 Citrix 移动应用程序)屏幕中,单击 Browse,选择预配配置文件,然后选择分发证书。如果 iOS 证书列表为空,请修复运行 MDX Toolkit 的计算机上的钥匙串。有关详细信息,请参阅本文后面的“当工具包找不到分发证书时修复您的钥匙串”。
-
- 如果您选择了具有显式应用程序 ID 的预配配置文件,该工具会提示您确认应用程序 ID。例如,Citrix Endpoint Management 应用程序的捆绑包 ID 为 com.citrix.ProductName。您使用的预配配置文件必须包含您的公司标识符而不是“citrix”。
-
单击 Yes 后,单击 Create。
-

-
- 如果您选择了具有通配符应用程序 ID 的预配配置文件,该工具会显示可用应用程序 ID 的列表。如果您要使用的应用程序 ID 未列出,请选择其他预配配置文件。选择应用程序 ID 后,单击 Create。
-

-
- 工具包会在 MDX 包创建完成后通知您。要打包另一个应用程序,请单击 Start Over。
-

工具包会在打包的 iOS 应用程序的文件名末尾附加 _iOS。
-
使用命令行打包企业 iOS 应用程序
-
注意:
-
请务必直接从应用程序供应商处获取第三方应用程序。从 Apple Store 下载的 iOS 应用程序已加密,无法打包。
-
在使用工具包打包应用程序之前,请务必备份这些应用程序的原始版本,以便在需要时可以恢复。
-
以下示例显示了一个使用默认设置的基本应用程序打包命令。请根据您的特定系统修改粗体信息。尾随的反斜杠表示命令延续到下一行。在运行命令之前,请删除这些符号。
-
要执行这些命令,请在命令行中导航到 /Applications/Citrix/MDXToolkit/ 目录。
- 基本的 iOS 打包命令行如下。
./CGAppCLPrepTool \
Wrap \
–Cert CERTIFICATE \
–Profile PROFILE \
-bundleID ID \
–in INPUT_FILE \
–out OUTPUT_FILE
<!--NeedCopy-->
以下是此命令行选项的示例。
./CGAppCLPrepTool \
Wrap \
–Cert “iPhone Developer: Joe Admin (12MMA4ASQB)” \
–Profile “team_profile.mobileprovision” \
- -bundleID “com.CompanyABC.Sample” \
- –in “~/Desktop/SampleApps/Sample.ipa” \
- –out “~/Desktop/SampleApps/Sample.mdx”
<!--NeedCopy-->
您可以添加到上述命令的选项示例包括:
-appName “Wrapped Sample app”
-appDesc “This is my newly wrapped iOS application.”
如果可能,这两个选项都默认为从应用程序读取的值。
有关这些选项的详细信息,请参阅下一节中的“命令选项”。有关内联文档,请使用 -help 选项。
命令选项
Wrap 命令
- Help: 显示此命令的帮助。
- In: 必需。您正在封装的应用程序的路径和文件名。
- Out: 可选。生成的 .mdx 文件的路径和文件名。如果省略此选项,则该文件具有与输入文件相同的路径和文件名,并具有 .mdx 扩展名。
- outBundle: 为上传到 Intune 生成 .ipa 文件时必需。生成的 .ipa 文件的路径和文件名。
- Cert: 必需。用于签署应用程序的证书名称。
- Profile: 必需。用于签署应用程序的预配配置文件名称。
- bundleID: 对于不支持通配符应用程序 ID 的企业帐户是必需的。此值是您的 Apple 捆绑包 ID。MDX Toolkit 会验证捆绑包 ID 和预配配置文件是否兼容。
- Upgrade: 此选项适用于旧版应用程序,并将被弃用。当您使用部分通配符预配配置文件时,用于就地升级。此选项可确保新二进制文件使用与先前版本相同的授权进行签名。如果授权不匹配,用户尝试从 Secure Hub 安装升级将失败。
- AppName: 可选。应用程序名称,如果可能,从应用程序中获取。
-
AppDesc: 可选。应用程序描述,如果可能,从应用程序中获取。
- MinPlatform: 可选。支持的最低平台版本。默认为空白。
- MaxPlatform: 可选。支持的最高平台版本。默认为空白。
- ExcludedDevices: 可选。不允许运行应用程序的设备类型列表。默认为空白。
-
PolicyXML: 可选。替换 XML 策略定义文件和路径。默认为内置策略定义。示例:
-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml。有关详细信息,请参阅下一节中的“为 iOS 应用程序预设 MDX 策略”。 - useNetworkOnlylib: 此选项使用仅限网络的轻量级 MDX 动态库版本封装应用程序。使用此选项封装的应用程序只能由 Intune 管理或以非托管方式运行。它不能由 MDX 管理。
- LogFile: 可选。日志文件的名称。
- LogWriteLevel: 可选。日志级别,1 到 4。
- LogDisplayLevel: 可选。标准输出的日志级别,0 到 4。
Sign 命令
- Help: 显示此命令的帮助。
- In: 必需。您正在封装的应用程序的路径和文件名。
- Out: 可选。生成的 .mdx 文件的路径和文件名。如果省略此选项,则该文件具有与输入文件相同的路径和文件名,并具有 .mdx 扩展名。
- Cert: 必需。用于签署应用程序的证书名称。
- Profile: 必需。用于签署应用程序的预配配置文件名称。
setinfo 命令
- Help: 显示此命令的帮助。
- In: 必需。要修改的应用程序的路径和文件名。
- Out: 对于 setinfo,输出路径或文件名必须与原始文件不同。
- AppDesc: 可选。应用程序描述。如果未指定,则保持不变。
- MinPlatform: 可选。支持的最低 SDK 级别。如果未指定,则保持不变。
- MaxPlatform: 可选。支持的最高 SDK 级别。如果未指定,则保持不变。
- ExcludedDevices: 可选。不允许运行应用程序的设备类型列表。如果未指定,则保持不变。
- StoreURL: 可选。应用程序在应用商店中的 URL。如果未指定,则保持不变。
-
PolicyXML: 可选。替换 XML 策略定义文件和路径。默认为内置策略定义。示例:
-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml。有关详细信息,请参阅下一节中的“为 iOS 应用程序预设 MDX 策略”。
为 iOS 应用程序预设 MDX 策略
对于您使用 MDX Toolkit 命令行工具封装的应用程序,您可以预设一些 MDX 策略。您还可以在添加应用程序时在 Citrix Endpoint Management 控制台中配置策略。
-
更新策略 XML 文件中的策略值。
MDX Toolkit 安装程序会创建此策略文件:Applications/Citrix/MDXToolkit/data/policy_metadata.xml
Note:
iOS 和 Android 的策略文件不同。要为这两个平台预设策略,您必须更新各自的策略 XML 文件。
-
当您使用命令行封装应用程序时,请包含
-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml
识别 iOS 应用程序封装错误
如果您在封装 iOS 应用程序时遇到错误,可以使用 MDX Toolkit 日志来识别错误。您必须具有管理员权限才能查看 MDX Toolkit 日志。
当您运行 MDX Toolkit 时,该工具会将日志文件保存到以下位置:Applications > Citrix > MDXToolkit > Logs > Citrix.log。默认情况下,该工具会在日志中保存警告和错误。
如果 iOS 应用程序发生错误,日志末尾会显示带有参数的命令行。您可以复制该命令行并在“终端”中运行它。为此,请在 Applications > Utilities 中,单击 Terminal,并使用 Mac 命令行界面评估该命令。您可能需要参考应用程序要求来评估错误。
当您使用命令行工具运行封装过程时,可以在命令行中指定以下信息:日志文件位置、日志显示级别和日志写入级别。您还可以在命令行中指定详细日志记录级别和不同的日志文件。
选择正确的预配配置文件
当您封装移动 iOS 应用程序时,可能会收到一条警告,指示应用程序已成功封装,但可能包含错误。如果选择的预配配置文件与应用程序最初使用的预配配置文件不同,则可能会发生错误。
MDX Toolkit 可以就某些预配配置文件问题向您发出警报。例如,您的应用程序可能需要以下一个或多个功能:
- iCloud 应用程序,可为您的 iOS 应用程序启用 iCloud 数据存储
- 推送通知,使用 Apple 推送通知服务向 iOS 设备发送消息
- 特殊的 Keychain Access Groups Entitlement,用于访问另一个应用程序的钥匙串项目
日志会显示应用程序缺少的键值对。对于每个键值对,您可以决定是否要修复错误。如果不修复错误,应用程序可能无法正常运行。此外,根据键值对,您需要检查是否可以修复您的预配配置文件。有时,您可能无法修复预配配置文件,并且可以发布带有缺陷的应用程序。
有关配置文件详情,请参阅 Apple 开发者网站。
当 Toolkit 找不到分发证书时修复您的钥匙串
如果 MDX Toolkit 无法识别您的 iOS 分发证书,则您的 iCloud 钥匙串与运行 MDX Toolkit 的计算机上的钥匙串之间可能存在问题。要修复您的本地钥匙串,请按照以下步骤操作。
-
在您的 Mac 上,在“系统偏好设置”中,轻按 iCloud。
-
清除“钥匙串”复选框。
此步骤会从 iCloud 中移除您的本地同步的钥匙串。
-
打开钥匙串访问,它位于“应用程序”文件夹中的“实用工具”文件夹中。
-
删除用于签署您的封装应用程序的 iOS 开发者证书。此证书通常是“iPhone Distribution: Company Name”证书,并附带关联的私钥。
-
从“钥匙串访问”菜单中,选择“钥匙串急救”。
-
在“钥匙串急救”对话框中,轻按修复,然后轻按开始。
-
修复完成后,轻按验证,然后轻按开始。
-
如果修复成功,请将您的 iOS 分发证书再次导入到“钥匙串访问”应用程序中。
-
启动 MDX Toolkit。 “iOS 分发配置文件”和“iOS 分发证书”字段应包含您的信息。
-
如有需要,将您的钥匙串重新同步到 iCloud:在“系统偏好设置”中,轻按 iCloud,然后选中“钥匙串”复选框。
重新签署包含 MDX App SDK 的应用程序
如果您的应用程序已包含使用 Xcode 内置的 MDX App SDK,则您需要使用您的企业证书或配置文件重新签署该应用程序。以下是 Sign 命令的示例。
$ /Applications/Citrix/MDXToolkit/CGAppCLPrepTool Sign -help
Command Line Interface for MDX Toolkit, version 10.4.1.290 (Env:Test)
2016-09-29 15:21:45.284 CGAppCLPrepTool[88453:5477658]
---------------------------------------------------------
Sign Command
---------------------------------------------------------
CGAppCLPrepTool Sign -in INPUTFILE -out OUTPUTFILE -Cert CERTIFICATE -Profile PROFILE
-Cert CERTIFICATE ==> (Required)Name of the certificate to sign the app with
-Profile PROFILE ==> (Required)Name of the provisioning profile to sign the app with
-in INPUTFILE ==> (Required)Name of the input app file, ipa/mdx file
-out OUTPUTFILE ==> (Optional)Name of the output app, ipa(if ipa is input)/mdx file
-upgrade ==> (Optional)Preserve in-place upgrade capabilty (not recommended for new apps)
---------------EXAMPLE--------------------
Sign -Cert "iPhone Distribution: Company Name" -Profile "distributionprovisioanl.mobileprovision" -in "/Users/user1/Archives/citrix.ipa"
<!--NeedCopy-->
在 iOS 设备上收集系统日志
您可以使用 iPhone Configuration Utility 工具或 Xcode 在 iOS 设备上收集系统日志。然后您可以将文件通过电子邮件发送给 Citrix 支持,以帮助排查应用程序问题。
使用配置实用工具在 iOS 设备上收集系统日志
- 从 Apple 下载并安装 Apple Configurator(以前称为 iPhone Configuration Utility)工具。您可以在 iPhone 和 iPad 上使用此工具。
- 确保您的设备符合系统要求和支持的语言。
- 运行安装程序并按照提示操作,完成向导。
- 打开 Configurator 工具。
- 在“设备”下,单击您的设备。
- 单击控制台,然后单击清除以清除现有日志。
- 重现问题,单击将控制台另存为,然后将日志附加并通过电子邮件发送给支持人员。
使用 Xcode 在 iOS 设备上收集日志
-
在 Mac 上,单击访达,单击前往,然后单击实用工具。
-
在“实用工具”文件夹中,双击控制台。
-
在“控制台”中,在“设备”下,单击您要从中获取控制台日志的 iOS 设备。
-
重现问题。
- 在“控制台”中,执行以下操作之一:
- 在主窗口中,选择最近的错误消息。
- 在“控制台”菜单栏上,单击编辑,然后单击全选。
-
单击编辑,然后单击拷贝。
-
打开 TextEdit,然后将您拷贝的日志粘贴到新文件中。
- 将文件附加到您的电子邮件中发送给支持人员。