封装 Android 移动应用程序

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

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

  • 下图概述了从安装 MDX Toolkit 到测试移动生产力应用程序的应用程序封装步骤。相关主题列在图表下方。

  • Android 应用程序封装流程

有关第一项的详细信息,请参阅:

重要:

确保您的用户设备已更新到与用于封装应用程序的 MDX Toolkit 版本兼容的 Secure Hub 版本。否则,用户会收到有关不兼容性的错误消息。有关详细信息,请参阅 Endpoint Management 兼容性

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

以下步骤介绍了从 Google Play 商店部署 ISV 应用程序的通用过程。

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

  2. 从 iOS 应用程序文件夹启动 MDX Toolkit,选择 “适用于独立软件供应商 (ISV)”,然后单击 “下一步”

    MDX Toolkit 向导的图像

  3. “从应用商店部署” 屏幕中,选择您的应用程序,然后单击 “下一步”

  4. “用户设置” 屏幕中,如果您已有应用商店 URL,请将其输入。如果没有 URL,请输入一个占位符,例如 https://play.google.com/store/apps/details?id=com.citrix。您可以稍后更新 URL。

    对于高级应用程序,请选择 “MDX 应用程序”。对于通用应用程序,请选择 “应用商店应用程序”

    MDX Toolkit 用户设置屏幕的图像

  5. “验证应用程序详细信息” 屏幕中,根据需要更新详细信息。

  6. 浏览到您的密钥库,然后单击 “创建”

    MDX Toolkit 应用商店 URL 选项的图像

    1. 保存您的应用程序。

    保存 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 “封装的示例应用程序”
  • -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* 参数:

  • Premium: 要将应用程序封装为 Premium 应用程序(即使对于非托管用户,也会强制执行某些 Citrix® 策略),请添加以下选项:-apptype Premium
  • General: 要将应用程序封装为 General 应用程序(对于非托管用户,不强制执行 Citrix 策略),请添加以下选项:-apptype General

  • 如果需要将封装的 .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 应用程序,请使用 General 或 Premium。
  • 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 应用程序,请使用 General 或 Premium。
  • 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 开发者网站安装 Android 调试桥。有关详细信息,请参阅 Android 调试桥
  2. 输入以下命令以清除现有日志:**"adb logcat -c"**
  3. 重现问题。
  4. 输入以下命令以将日志捕获到文件中:**adb logcat -d > Name_of_Log_File.txt**