使用适用于 Android 的 Microsoft Intune App Wrapping Tool通过限制应用的功能而不更改应用本身的代码来更改内部 Android 应用的行为。
该工具是在 PowerShell 中运行的 Windows 命令行应用程序,并在 Android 应用周围创建包装器。 包装应用后,可以通过在 Intune 中配置 移动应用程序管理策略 来更改应用的功能。
运行该工具之前,请查看运行App Wrapping Tool的安全注意事项。 若要下载该工具,请转到 GitHub 上适用于 Android 的 Microsoft Intune App Wrapping Tool。
注意
如果在对应用使用 Intune App Wrapping Tool时遇到问题,请在 GitHub 上提交帮助请求。
满足使用App Wrapping Tool的先决条件
- 你的应用必须使用最新的库 
- 你的应用必须与 Google Play 要求兼容 
- 如果应用很复杂,则必须与适用于 Android 的 Intune 应用 SDK 集成 
- 必须在运行 Windows 10 或更高版本的 Windows 计算机上运行App Wrapping Tool。 
- 输入应用必须是文件扩展名.apk的有效 Android 应用程序包,并且: - 它无法加密。
- 它之前不得被 Intune App Wrapping Tool包装。
- 它必须针对 Android 9.0 或更高版本编写。
 - 注意 - 如果输入应用是 Android 应用捆绑包 (.aab) ,则需要先将其转换为 APK,然后再使用 Intune App Wrapping Tool。 有关详细信息,请参阅 将 Android App Bundle (AAB) 转换为 APK。 自 2021 年 8 月起, 新的专用应用仍可作为 APK 发布到 Google Play 商店。 
- 应用必须由或为你的公司开发。 不能在 Google Play 商店中提供的应用上使用此工具。 这包括从 Google Play 商店下载或获取应用。 
- 若要运行App Wrapping Tool,必须安装最新版本的 Java 运行时环境,然后确保在 Windows 环境变量中将 Java 路径变量设置为 C:\ProgramData\Oracle\Java\javapath。 有关更多帮助,请参阅 Java 文档。 - 注意 - 在某些情况下,32 位版本的 Java 可能会导致内存问题。 最好安装 64 位版本。 
- Android 要求对 (.apk) 的所有应用包进行签名。 有关 重用 现有证书和整体签名证书指南,请参阅 重用签名证书和包装应用。 使用 Intune App Wrapping Tool包装 .apk 文件后,建议使用 Google 提供的 Apksigner 工具。 这将确保应用到达最终用户设备后,可以按照 Android 标准正确启动它。 
- (可选) 由于包装过程中添加的 Intune MAM SDK 类,有时应用可能会达到 Dalvik 可执行文件 (DEX) 大小限制。 DEX 文件是 Android 应用编译的一部分。 Intune App Wrapping Tool在包装过程中自动处理自 1.0.2501.1 版起最小 API 级别为 21 或更高 (的应用的 DEX 文件溢出) 。 对于最小 API 级别 < 为 21 的应用,最佳做法是使用包装器的 - -UseMinAPILevelForNativeMultiDex标志提高最小 API 级别。 对于无法提高应用的最低 API 级别的客户,可以使用以下 DEX 溢出解决方法。 在某些组织中,这可能需要与编译应用 (人员协作。应用生成团队) :- 使用 ProGuard 从应用的主 DEX 文件中消除未使用的类引用。
- 对于使用 Android Gradle 插件 v3.1.0 或更高版本的客户,请禁用 D8 dexer。
 
应多久使用 Intune App Wrapping Tool重新包装一次 Android 应用程序?
需要重新打包应用程序的主要方案如下:
- 应用程序本身已发布新版本。 应用的早期版本已包装并上传到 Microsoft Intune 管理中心。 
- 适用于 Android 的 Intune App Wrapping Tool发布了一个新版本,该版本支持关键 bug 修复或新的特定 Intune 应用程序保护策略功能。 这每 6-8 周通过适用于 Android 的 Microsoft Intune App Wrapping Tool GitHub 存储库进行一次。 
重新包装的一些最佳做法包括:
- 维护在生成过程中使用的签名证书,请参阅 重用签名证书和包装应用
安装App Wrapping Tool
- 从 GitHub 存储库中,将适用于 Android 的 Intune App Wrapping Tool 安装文件 InstallAWT.exe 下载到 Windows 计算机。 打开安装文件。 
- 接受许可协议,然后完成安装。 
记下工具安装到的文件夹。 默认位置为:C:\Program Files (x86) \Microsoft Intune 移动应用程序管理\Android\App Wrapping Tool。
运行App Wrapping Tool
重要
Intune 定期发布对 Intune App Wrapping Tool的更新。 定期检查适用于 Android 的 Intune App Wrapping Tool进行更新,并纳入软件开发发布周期,以确保应用支持最新的应用保护策略设置。
- 在安装了 App Wrapping Tool的 Windows 计算机上,打开 PowerShell 窗口。 
- 从安装该工具的文件夹中,导入 App Wrapping Tool PowerShell 模块: - Import-Module .\IntuneAppWrappingTool.psm1
- 使用 invoke-AppWrappingTool 命令运行该工具,该命令具有以下用法语法: - Invoke-AppWrappingTool [-InputPath] <String> [-OutputPath] <String> [<CommonParameters>]- 下表详细介绍 了 invoke-AppWrappingTool 命令的属性: 
| 属性 | Information | 
|---|---|
| -InputPath<字符串> | 源 Android 应用 (.apk) 的路径。 | 
| -OutputPath<字符串> | 输出 Android 应用的路径。 如果此目录路径与 InputPath 相同,则打包将失败。 | 
| <CommonParameters> | (可选) 命令支持常见 PowerShell 参数,例如详细和调试。 | 
- 有关常见参数的列表,请参阅 Microsoft脚本中心。 
- 若要查看该工具的详细使用情况信息,请输入 命令: - Help Invoke-AppWrappingTool
示例:
导入 PowerShell 模块。
Import-Module "C:\Program Files (x86)\Microsoft Intune Mobile Application Management\Android\App Wrapping Tool\IntuneAppWrappingTool.psm1"
在本机应用HelloWorld.apk上运行App Wrapping Tool。
invoke-AppWrappingTool -InputPath .\app\HelloWorld.apk -OutputPath .\app_wrapped\HelloWorld_wrapped.apk -Verbose
包装的应用和日志文件将生成并保存在指定的输出路径中。
重用签名证书和包装应用
Android 要求所有应用都必须由有效的证书签名才能安装在 Android 设备上。
包装后,可以使用现有的签名工具 (应用中的任何签名信息进行包装 , 然后包装) 丢弃。 如果可能,应在包装过程中使用在生成过程中已使用的签名信息。 在某些组织中,这可能需要与拥有密钥存储信息 (人员合作。应用生成团队) 。
如果无法使用以前的签名证书,或者之前尚未部署应用,则可以按照 Android 开发人员指南中的说明创建新的签名证书。
如果之前已使用其他签名证书部署应用,则升级后无法将应用上传到 Intune。 如果应用使用与生成应用时使用的不同证书进行签名,则应用升级方案将中断。 因此,应维护任何新的签名证书,以便进行应用升级。
运行App Wrapping Tool的安全注意事项
防止潜在的欺骗、信息泄露和特权提升攻击:
- 确保输入业务线 (LOB) 应用程序,并且输出应用程序位于运行App Wrapping Tool的同一台 Windows 计算机上。 
- 将输出应用程序导入到运行该工具的同一台计算机上的 Intune。 有关 Java keytool 的详细信息,请参阅 keytool 。 
- 如果输出应用程序和工具位于通用命名约定 (UNC) 路径上,并且你未在同一台计算机上运行该工具和输入文件,请使用 Internet 协议安全性 (IPsec) 或 服务器消息块 (SMB) 签名来保护环境。 
- 确保应用程序来自受信任的源。 
- 保护包含包装应用的输出目录。 考虑对输出使用用户级目录。 
将 Android 应用捆绑包 (AAB) 转换为 APK
Intune App Wrapping Tool目前仅支持 APK 输入。 必须首先将 Android 应用捆绑包转换为 APK 才能与该工具一起使用。
可以使用 Google 的命令行工具 bundletool将 Android 应用捆绑包转换为 APK。 可以从 Google 的 bundle-toolbundletool GitHub 存储库下载 最新版本。
              bundletool可以使用以下命令生成单个通用 APK,以便与 Intune App Wrapping Tool配合使用:
bundletool build-apks --bundle=input.aab --mode=universal --output=input.apks
输出 .apks 文件是包含单个通用 APK 文件的 ZIP 存档。 解压缩存档并使用该 APK 文件作为 Intune App Wrapping Tool的输入。