封装 Android 移动应用程序

本文描述 Citrix Endpoint Management 管理员如何封装第三方企业应用程序,以及开发者如何封装 ISV 应用程序。要封装 Android 移动应用程序,请使用 MDX Toolkit,其中包括一个 macOS 图形界面工具和一个 Java 命令行工具。此命令行工具具有一些自定义选项,可从用于自动执行应用程序封装过程的脚本中引用,并允许您预设一些 MDX 策略。

封装的应用程序的文件类型为 .mdx。可将 .mdx 文件上载到 Endpoint Management 控制台,然后在其中配置特定的应用程序详细信息以及由 Endpoint Management 应用商店强制执行的策略设置。用户登录时,应用程序将显示在应用商店中。用户之后可以订阅、下载该应用程序以及在其用户设备上安装。

下图概述了应用程序封装过程的各个步骤(从安装 MDX Toolkit 到测试移动生产力应用程序)。图下方列出了相关主题。

Android 应用程序的应用程序封装流程

有关数字 1 的详细信息,请参阅:

有关数字 2 的详细信息,请参阅:

重要:

请务必使用与封装应用程序时使用的 MDX Toolkit 版本兼容的 Secure Hub 版本更新用户设备。否则,系统将接收到一条关于不兼容的错误消息。有关详细信息,请参阅 Endpoint Management 兼容性

使用图形界面执行 ISV 应用程序封装

以下步骤描述用于封装将从 Google Play 应用商店中部署的 ISV 应用程序的常规过程。

  1. 在使用工具包封装应用程序之前,请务必备份这些应用程序的原始版本,以便在需要时恢复到这些版本。

  2. 从 iOS 应用程序文件夹中启动 MDX Toolkit,选择 For Independent Software Vendors (ISVs)(适用于独立软件供应商),然后单击 Next(下一步)。

    MDX Toolkit 向导示意图

  3. Deploy from App Store(从应用商店部署)屏幕中,选择您的应用程序并单击 Next(下一步)。

  4. 如果您已具有应用程序商店 URL,请在 User Settings(用户设置)屏幕中输入此 URL。如果您没有 URL,请输入占位符,例如 https://play.google.com/store/apps/details?id=com.citrix。可在以后更新此 URL。

    对于高级应用程序,请选择 MDX apps(MDX 应用程序)。对于常规应用程序,请选择 App Store apps(App Store 应用程序)。

    MDX Toolkit 用户设置屏幕示意图

  5. Verify App Details(验证应用程序详细信息)屏幕中,根据需要更新详细信息。

  6. 浏览到您的密钥库,并单击 Create(创建)。

    MDX Toolkit App Store URL 选项示意图

  7. 保存您的应用程序。

    “保存 MDX”选项示意图

    当 GUI 工具完成应用程序封装时,应用程序名称中会包含 _andr。

使用命令行执行企业 Android 应用程序封装

可以使用企业应用程序封装工具封装自定义(内部)应用程序和某些第三方应用程序。您应直接从应用程序供应商处获取第三方应用程序。执行企业应用程序封装时,请先封装 Android 应用程序 (.apk)。在使用工具包封装应用程序之前,请备份这些应用程序的原始版本,以便在需要时恢复到这些版本。

下例显示了使用默认设置的基本应用程序封装命令。应用程序使用提供的密钥库签名。密钥库是包含用于签署 Android 应用程序的证书的文件。如果密钥库包含多个私钥,则可以指定密钥别名。需要创建密钥库一次。 之后,可以使用该密钥库对您封装的应用程序进行签名。如果未使用相同的密钥库封装以前部署的应用程序的新版本,该应用程序的升级将无法正常工作。用户需要先手动删除旧版本,才能安装新版本。

修改特定系统的粗体显示的信息。结尾处的反斜杠指示命令将继续执行下一行。运行命令之前,请删除这些符号。

注意:

由于 /Applications/ 目录受到限制,因此,您可能需要在超级用户模式下运行以下命令。为此,请在命令前面添加 sudo。从此受限目录运行时,系统将提示您输入计算机密码。

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword
<!--NeedCopy-->

修改粗体显示的信息后,您可能需要将以下示例选项添加到之前的命令中:

  • -appName “Wrapped Sample app”
  • -appDesc “这是我的新封装的 Android 应用程序。”

此外,如果在开发期间版本密钥库不可用,可使用以下命令来创建移动应用程序零售版本(通过您的密钥进行签名)︰

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword \
-createCert
<!--NeedCopy-->

有关选项的详细信息,请参阅命令选项。要获取嵌入式文档,请使用 –help 选项。

使用命令行封装 ISV Android 应用程序

在使用工具包封装应用程序之前,请务必备份这些应用程序的原始版本,以便在需要时恢复到这些版本。要生成适用于 Android 的封装的 ISV 应用程序,请先执行以下基本封装命令。

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
wrap \
-in ~/Desktop/SampleApps/Sample.apk \
-out ~/Desktop/SampleApps/Sample.mdx \
-keystore ~/Desktop/MyCompany.keystore \
-storepass MyKeystorePassword \
-keyalias MyCompanyKeyAlias \
-keypass MyKeyAliasPassword \
-createCert
<!--NeedCopy-->

要将应用程序封装为 ISV 应用程序,必须按如下所示设置 -apptype 参数:

  • 高级: 要将应用程序封装为高级应用程序(在其中将强制实施一些 Citrix 策略,即使对于非托管用户也是如此),请添加下列选项:-apptype Premium
  • 常规:要将应用程序封装为“一般”应用程序(其中不包含针对非托管用户的 Citrix 策略实施),请添加下列选项:-apptype 常规

如果需要将封装的 .apk 文件上载到 Google Play 应用商店或 Web 服务器,并且封装时 URL 已知,请添加 -storeURL 选项。还请务必设置 apptype 参数。

-storeURL "https://play.google.com/store/apps/details?id=com.zenprise"

如果您在封装时不知道 URL,可稍后通过以下命令修改 .mdx 文件:

java -jar /Applications/Citrix/MDXToolkit/ManagedAppUtility.jar \
setinfo \
-in ~/Desktop/SampleApps/Sample.mdx \
-out ~/Desktop/SampleApps/wrapped/Sample.mdx \
-storeURL \
“https://play.google.com/store/apps/details?id=com.zenprise”
<!--NeedCopy-->

如果已自定义策略文件,请确保指向您已修改的文件︰

-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml 有关选项的详细信息,请参阅命令选项。要获取嵌入式文档,请使用 –help 选项。

命令选项

wrap 命令

  • Help: 显示针对此命令的帮助信息。
  • In: 必需。您要封装的应用程序的路径和文件名。
  • Out: 可选。生成的 .mdx 文件的路径和文件名。如果省略此选项,则文件与输入文件具有相同的路径和文件名,并具有扩展名 .mdx。
  • AppType: 可选。默认值为 MDXOnly。要生成 ISV 应用程序,请使用“常规”或“高级”。
  • KeyStore: 密钥库文件的路径。如果要签名 .apk 文件则为必需。
  • StorePass: 密钥库的密码。如果要签名 .apk 文件则为必需。
  • KeyAlias: 密钥库中的特定密钥的名称。如果要签名 .apk 文件则为必需。
  • KeyPass: 特定密钥的密码。如果要签名 .apk 文件则为必需。
  • SigAlg: 可选。在签名时要使用的算法。
  • AppName: 可选。从应用程序获得的应用程序名称(如果可能)。
  • AppDesc: 可选。从应用程序获得的应用程序说明信息(如果可能)。
  • MinPlatform: 可选。支持的最低 SDK 级别。默认值为空。
  • MaxPlatform: 可选。支持的最高 SDK 级别。默认值为空。
  • ExcludedDevices: 可选。不允许在其中运行应用程序的设备类型的列表。默认值为空。
  • PolicyXML: 可选。更换 XML 策略定义文件和路径。默认为内置的策略定义。示例:

    -policyxml/Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    有关详细信息,请参阅后面的“预设 Android 应用程序的 MDX 策略”。

  • StoreURL: 对于 ISV 应用程序,为 Google App Store 中的应用程序的 URL。默认值为空。

sign 命令

  • Help: 显示针对此命令的帮助信息。
  • In: 必需。您要封装的应用程序的路径和文件名。
  • Out: 可选。生成的 .mdx 文件的路径和文件名。如果省略此选项,则文件与输入文件具有相同的路径和文件名,并具有扩展名 .mdx。
  • KeyStore: 必需。密钥库文件的路径。
  • StorePass: 必需。密钥库的密码。
  • KeyAlias: 必需。密钥库中的特定密钥的名称。
  • KeyPass: 必须。特定密钥的密码。
  • SigAlg: 可选。在签名时要使用的算法。

setinfo 命令

  • Help: 显示针对此命令的帮助信息。
  • In: 必需。您要修改的应用程序的路径和文件名。
  • Out: 对于 setinfo,输出路径或文件名必须不同于原始路径或文件名。
  • AppType: 可选。默认值为 MDXOnly。要生成 ISV 应用程序,请使用“常规”或“高级”。
  • KeyStore: 密钥库文件的路径。如果要签名 .apk 文件则为必需。
  • StorePass: 密钥库的密码。如果要签名 .apk 文件则为必需。
  • KeyAlias: 密钥库中的特定密钥的名称。如果要签名 .apk 文件则为必需。
  • KeyPass: 特定密钥的密码。如果要签名 .apk 文件则为必需。
  • SigAlg: 可选。在签名时要使用的算法。
  • AppName: 可选。从应用程序获得的应用程序名称(如果可能)。
  • AppDes: 可选。从应用程序获得的应用程序说明信息(如果可能)。
  • MinPlatform: 可选。支持的最低 SDK 级别。默认值为空。
  • MaxPlatform: 可选。支持的最高 SDK 级别。默认值为空
  • ExcludedDevices: 可选。不允许在其中运行应用程序的设备类型的列表。默认值为空。
  • StoreURL: 对于 ISV 应用程序,为 Google App Store 中的应用程序的 URL。默认值为空。
  • PolicyXML: 可选。更换 XML 策略定义文件和路径。默认为内置的策略定义。示例:

    -policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    有关详细信息,请参阅后面的“预设 Android 应用程序的 MDX 策略”。

预设 Android 应用程序的 MDX 策略

对于要用 MDX Toolkit 命令行工具封装的应用程序,您可以预设一些 MDX 策略。也可以在添加应用程序时,在 Citrix Endpoint Management 控制台中配置策略。

  1. 在策略 XML 文件中更新策略值。

    MDX Toolkit 安装程序将创建此策略文件︰Applications/Citrix/MDXToolkit/data/policy_metadata.xml

    注意

    适用于 Android 和 iOS 的策略文件不同。要预设同时适用于这两种平台的策略,您必须更新它们各自的策略 XML 文件。

  2. 使用命令行封装应用程序时,包括

    -policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml

确定 Android 应用程序封装错误

如果您在封装 Android 应用程序时遇到错误,可以使用 MDX Toolkit 日志确定该错误。必须具有管理员权限才能查看 MDX Toolkit 日志。

运行 MDX Toolkit 时,此工具会将日志文件保存到以下位置:Applications/CitrixMDXToolkit/Logs/Citrix.log。默认情况下,此工具在该日志中保存警告和错误。

从命令行中收集应用程序日志

  1. 从 Android 开发人员 Web 站点安装 Android Debug Bridge。有关详细信息,请参阅 Android Debug Bridge
  2. 输入以下命令以清除现有日志:“adb logcat -c”
  3. 重现问题。
  4. 输入以下命令以捕获文件中的日志:adb logcat -d > Name_of_Log_File.txt