封装 Android 移动应用程序
本文描述 Citrix Endpoint Management 管理员如何封装第三方企业应用程序,以及开发者如何封装 ISV 应用程序。要封装 Android 移动应用程序,请使用 MDX Toolkit,其中包括一个 macOS 图形界面工具和一个 Java 命令行工具。此命令行工具具有一些自定义选项,可从用于自动执行应用程序封装过程的脚本中引用,并允许您预设一些 MDX 策略。
封装的应用程序的文件类型为 .mdx。可将 .mdx 文件上载到 Endpoint Management 控制台,然后在其中配置特定的应用程序详细信息以及由 Endpoint Management 应用商店强制执行的策略设置。用户登录时,应用程序将显示在应用商店中。用户之后可以订阅、下载该应用程序以及在其用户设备上安装。
下图概述了应用程序封装过程的各个步骤(从安装 MDX Toolkit 到测试移动生产力应用程序)。图下方列出了相关主题。
有关数字 1 的详细信息,请参阅:
有关数字 2 的详细信息,请参阅:
- 使用命令行封装 ISV Android 应用程序
- 使用命令行执行企业 Android 应用程序封装
- 命令选项
- 预设 Android 应用程序的 MDX 策略
- 确定 Android 应用程序封装错误
- 从命令行中收集应用程序日志
- 添加 MDX 应用程序
重要:
请务必使用与封装应用程序时使用的 MDX Toolkit 版本兼容的 Secure Hub 版本更新用户设备。否则,系统将接收到一条关于不兼容的错误消息。有关详细信息,请参阅 Endpoint Management 兼容性。
使用图形界面执行 ISV 应用程序封装
以下步骤描述用于封装将从 Google Play 应用商店中部署的 ISV 应用程序的常规过程。
-
在使用工具包封装应用程序之前,请务必备份这些应用程序的原始版本,以便在需要时恢复到这些版本。
-
从 iOS 应用程序文件夹中启动 MDX Toolkit,选择 For Independent Software Vendors (ISVs)(适用于独立软件供应商),然后单击 Next(下一步)。
-
从 Deploy from App Store(从应用商店部署)屏幕中,选择您的应用程序并单击 Next(下一步)。
-
如果您已具有应用程序商店 URL,请在 User Settings(用户设置)屏幕中输入此 URL。如果您没有 URL,请输入占位符,例如
https://play.google.com/store/apps/details?id=com.citrix
。可在以后更新此 URL。对于高级应用程序,请选择 MDX apps(MDX 应用程序)。对于常规应用程序,请选择 App Store apps(App Store 应用程序)。
-
在 Verify App Details(验证应用程序详细信息)屏幕中,根据需要更新详细信息。
-
浏览到您的密钥库,并单击 Create(创建)。
-
保存您的应用程序。
当 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 控制台中配置策略。
-
在策略 XML 文件中更新策略值。
MDX Toolkit 安装程序将创建此策略文件︰Applications/Citrix/MDXToolkit/data/policy_metadata.xml
注意
适用于 Android 和 iOS 的策略文件不同。要预设同时适用于这两种平台的策略,您必须更新它们各自的策略 XML 文件。
-
使用命令行封装应用程序时,包括
-policyxml /Applications/Citrix/MDXToolkit/data/policy_metadata.xml
确定 Android 应用程序封装错误
如果您在封装 Android 应用程序时遇到错误,可以使用 MDX Toolkit 日志确定该错误。必须具有管理员权限才能查看 MDX Toolkit 日志。
运行 MDX Toolkit 时,此工具会将日志文件保存到以下位置:Applications/CitrixMDXToolkit/Logs/Citrix.log。默认情况下,此工具在该日志中保存警告和错误。
从命令行中收集应用程序日志
- 从 Android 开发人员 Web 站点安装 Android Debug Bridge。有关详细信息,请参阅 Android Debug Bridge。
- 输入以下命令以清除现有日志:“adb logcat -c”
- 重现问题。
- 输入以下命令以捕获文件中的日志:adb logcat -d > Name_of_Log_File.txt