包装Android手机应用程序
本文描述Citrix Endpoint Management管理员如何包装第三方企业应用程序,以及开发人员如何包装ISV应用程序。要包装Android移动应用程序,请使用MDX Toolkit,它包括一个macOS图形界面工具和一个Java命令行工具。命令行工具具有自定义选项,可以从脚本中引用,从而自动化应用程序包装过程,并允许您预设一些MDX策略。
包装应用程序的文件类型是.mdx。将.mdx文件上传到端点管理控制台,然后在那里配置端点管理商店强制执行的特定应用程序细节和策略设置。当用户登录时,应用程序就会出现在应用商店中。用户可以订阅、下载并在他们的设备上安装该应用程序。
下图提供了应用程序包装步骤的概述,从安装MDX Toolkit到测试移动生产力应用程序。图表下面列出了相关主题。
关于第一条的详细信息,请参见:
关于第二条的详细信息,请参见:
- ISV Android应用程序的命令行包装
- 使用命令行包装企业Android应用程序
- 命令选项
- 为Android应用程序预设MDX策略
- 识别Android应用程序包装错误
- 从命令行收集应用程序日志
- 添加MDX应用程序
重要的是:
确保您的用户设备已更新为与用于包装应用程序的MDX Toolkit版本兼容的Secure Hub版本。否则,用户将收到不兼容的错误消息。有关详细信息,请参见端点管理兼容性.
ISV应用程序包装与图形界面
以下步骤描述了包装您将从谷歌Play Store部署的ISV应用程序的一般流程。
在使用工具包包装应用程序之前,请确保备份这些应用程序的原始版本,以便在需要时可以返回到它们。
从iOS Applications文件夹中启动MDX Toolkit,选择对于独立软件供应商,然后点击下一个.
在从App Store部署屏幕上,选择你的应用程序,然后点击下一个.
在用户设置屏幕,如果你已经有了应用商店的URL,输入它。如果没有URL,请输入占位符,例如
https://play.google.com/store/apps/details?id=com.citrix
.您可以稍后更新URL。对于高级应用程序,选择MDX的应用.对于一般应用程序,选择App Store应用程序.
在验证应用程序的细节屏幕,根据需要更新详细信息。
浏览到您的密钥存储库并单击创建.
保存您的应用程序。
当GUI工具完成包装应用程序时,应用程序文件名包括_andr。
使用命令行包装企业Android应用程序
你可以使用企业应用包装来包装自定义(内部)应用和一些第三方应用。你应该直接从应用程序供应商那里购买第三方应用程序。对于企业应用程序包装,可以从Android应用程序(.apk)开始。在使用工具包包装应用程序之前,备份这些应用程序的原始版本,以便在需要时返回它们。
下面的示例显示使用默认设置的基本应用程序包装命令。应用程序使用提供的密钥库进行签名。密钥存储库是一个包含用于签名Android应用程序的证书的文件。如果密钥存储库包含多个私钥,您可以指定密钥别名。您只需创建一次密钥存储库。然后,您可以使用密钥存储库对包装的应用程序进行签名。如果不使用相同的密钥存储库来包装之前部署的应用程序的新版本,则该应用程序的升级将无法工作。在安装新版本之前,用户需要手动删除旧版本。
修改您的特定系统的粗体信息。后面的反斜杠表示命令继续到下一行。运行命令前请删除这些符号。
注意:
由于/Applications/目录受到限制,您可能需要在超级用户模式下运行以下命令。为此,在命令前添加sudo。当您从这个受限制的目录运行时,将提示您输入计算机密码。
java -jar /Applications/Citrix/MDXToolkit/ managedapptility .jar \ wrap \ in ~/Desktop/SampleApps/Sample.apk \ out ~/Desktop/SampleApps/Sample. jarmdx \ -keystore ~/Desktop/MyCompany. xmlMyCompanyKeyAlias \ -keypass MyKeyAliasPassword
修改粗体部分后,可以添加到上述命令的选项示例如下:
- -appName "包装样本应用程序"
- 这是我新包装的Android应用程序。
此外,如果在开发过程中版本密钥库不可用,使用以下命令创建一个使用您的密钥签名的移动应用程序的零售构建:
java -jar /Applications/Citrix/MDXToolkit/ managedapptility .jar \ wrap \ in ~/Desktop/SampleApps/Sample.apk \ out ~/Desktop/SampleApps/Sample. jarmdx \ -keystore ~/Desktop/MyCompany. xmlMyCompanyKeyAlias \ -keypass MyKeyAliasPassword \ -createCert
具体选项请参见命令选项.对于内联文档,使用-help选项。
ISV Android应用程序的命令行包装
在使用工具包包装应用程序之前,请确保备份这些应用程序的原始版本,以便在需要时可以返回到它们。要为Android生成封装的ISV应用程序,请从以下基本的封装命令开始。
java -jar /Applications/Citrix/MDXToolkit/ managedapptility .jar \ wrap \ in ~/Desktop/SampleApps/Sample.apk \ out ~/Desktop/SampleApps/Sample. jarmdx \ -keystore ~/Desktop/MyCompany. xmlMyCompanyKeyAlias \ -keypass MyKeyAliasPassword \ -createCert
要将应用程序包装为ISV应用程序,必须设置-apptype参数如下:
- 保险费:要将应用程序包装为Premium应用程序,其中一些Citrix策略甚至对非托管用户也会强制执行,请添加以下选项:-apptype Premium
- 一般:要将应用程序包装为General应用程序,它不包含针对非托管用户的Citrix策略实施,请添加以下选项:-apptype General
如果需要将包装的.apk文件上传到谷歌Play Store或web服务器,并且在包装时知道URL,请添加-storeURL选项。确保还设置了apptype参数。
-storeURL“https://play.google.com/store/apps/details?id=com.zenprise”
如果您在包装时不知道URL,您可以稍后使用以下命令修改.mdx文件:
java -jar /Applications/Citrix/MDXToolkit/ managedapptility .jar \ setinfo \ -in ~/Desktop/SampleApps/Sample. jar \ setinfo \mdx \ out ~/Desktop/SampleApps/wrapped/Sample。mdx \ -storeURL \ " https://play.google.com/store/apps/details?id=com.zenprise "
如果你自定义了策略文件,请确保指向你修改过的文件:
-policyxml /应用程序/ Citrix / MDXToolkit /数据/ policy_metadata.xml
具体选项请参见命令选项.对于内联文档,请使用-选择。
命令选项
用命令
- 帮助:显示此命令的帮助。
- :必需的。要包装的应用程序的路径和文件名。
- :可选的。生成的.mdx文件的路径和文件名。如果省略此选项,则该文件具有与输入文件相同的路径和文件名,并且扩展名为.mdx。
- AppType:可选的。默认为MDXOnly。要生成ISV应用程序,可以使用General或Premium。
- 密钥存储库:keystore文件的路径。签名.apk文件时必须。
- 对于StorePass:密钥存储库的密码。签名.apk文件时必须。
- KeyAlias:密钥库中特定密钥的名称。签名.apk文件时必须。
- KeyPass:指定密钥的密码。签名.apk文件时必须。
- SigAlg:可选的。签名时使用的算法。
- 浏览器名称:可选的。应用程序名称,如果可能的话从应用程序中获取。
- AppDesc:可选的。应用程序描述,如果可能的话,从应用程序中获取。
- MinPlatform:可选的。支持的最小SDK级别。默认为空白。
- MaxPlatform:可选的。支持的最大SDK级别。默认为空白。
- ExcludedDevices:可选的。不允许应用程序在其上运行的设备类型列表。默认为空白。
PolicyXML:可选的。替换XML策略定义文件和路径。默认为内置策略定义。例子:
-policyxml /应用程序/ Citrix / MDXToolkit /数据/ policy_metadata.xml
详细信息请参见为Android应用程序预设MDX策略。
- StoreURL:对于ISV应用程序,在谷歌应用程序商店中的应用程序的URL。默认为空白。
签署命令
- 帮助:显示此命令的帮助。
- :必需的。要包装的应用程序的路径和文件名。
- :可选的。生成的.mdx文件的路径和文件名。如果省略此选项,则该文件具有与输入文件相同的路径和文件名,并且扩展名为.mdx。
- 密钥存储库:必需的。keystore文件的路径。
- 对于StorePass:必需的。密钥存储库的密码。
- KeyAlias:必需的。密钥库中特定密钥的名称。
- KeyPass:必需的。指定密钥的密码。
- SigAlg:可选的。签名时使用的算法。
setinfo命令
- 帮助:显示此命令的帮助。
- :必需的。待修改应用的路径和文件名。
- :对于setinfo,输出路径或文件名必须与原始路径或文件名不同。
- AppType:可选的。默认为MDXOnly。要生成ISV应用程序,可以使用General或Premium。
- 密钥存储库:keystore文件的路径。签名.apk文件时必须。
- 对于StorePass:密钥存储库的密码。签名.apk文件时必须。
- KeyAlias:密钥库中特定密钥的名称。签名.apk文件时必须。
- KeyPass:指定密钥的密码。签名.apk文件时必须。
- SigAlg:可选的。签名时使用的算法。
- 浏览器名称:可选的。应用程序名称,如果可能的话从应用程序中获取。
- 批准的:可选的。应用程序描述,如果可能的话,从应用程序中获取。
- MinPlatform:可选的。支持的最小SDK级别。默认为空白。
- MaxPlatform:可选的。支持的最大SDK级别。默认为空
- ExcludedDevices:可选的。不允许应用程序在其上运行的设备类型列表。默认为空白。
- StoreURL:对于ISV应用程序,在谷歌应用程序商店中的应用程序的URL。默认为空白。
PolicyXML:可选的。替换XML策略定义文件和路径。默认为内置策略定义。例子:
-policyxml /应用程序/ Citrix / MDXToolkit /数据/ policy_metadata.xml
详细信息请参见为Android应用程序预设MDX策略。
为Android应用程序预设MDX策略
对于使用MDX Toolkit命令行工具包装的应用程序,可以预设一些MDX策略。您还可以在添加应用程序时在Citrix Endpoint Management控制台中配置策略。
更新策略XML文件中的策略值。
MDXToolkit安装程序创建了这个策略文件:Applications/Citrix/MDXToolkit/data/policy_metadata.xml
请注意
注意,Android和iOS的策略文件是不同的。要为这两个平台预设策略,必须更新它们各自的策略XML文件。
当你用命令行包装应用程序时,包含
-policyxml /应用程序/ Citrix / MDXToolkit /数据/ policy_metadata.xml
识别Android应用程序包装错误
如果在包装Android应用程序时遇到错误,可以使用MDX Toolkit日志来识别错误。查看MDX Toolkit日志需要具有管理员权限。
运行MDXToolkit时,工具会在以下路径下保存日志文件:Applications/CitrixMDXToolkit/Logs/Citrix.log。默认情况下,该工具将警告和错误保存在日志中。
从命令行收集应用程序日志
- 安装Android调试桥从Android开发者网站。有关详细信息,请参见Android调试桥.
- 输入以下命令清除已有日志:“亚行logcat - c”
- 重现这个问题。
- 输入以下命令将日志捕获到文件中:adb logcat -d > log_file .txt名称