使用 Intune 应用包装工具为应用保护策略准备 Android 应用

使用 Microsoft Intune App Wrapping Tool for Android 通过限制应用的功能而不更改应用本身的代码来更改内部 Android 应用的行为。

该工具是在 PowerShell 中运行的 Windows 命令行应用程序,并在 Android 应用周围创建包装器。 包装应用后,可以通过在 Intune 中配置 移动应用程序管理策略 来更改应用的功能。

运行该工具之前,请查看 运行应用包装工具的安全注意事项。 若要下载该工具,请转到 GitHub 上 适用于 Android 的 Microsoft Intune App Wrapping Tool

注意

如果在将 Intune 应用包装工具用于应用时遇到问题,请在 GitHub 上提交 帮助请求

满足使用应用包装工具的先决条件

  • 你的应用必须使用最新的库

  • 你的应用必须与 Google Play 要求兼容

  • 如果应用很复杂,则必须与适用于 Android 的 Intune 应用 SDK 集成

  • 必须在运行 Windows 10 或更高版本的 Windows 计算机上运行应用包装工具。

  • 输入应用必须是文件扩展名.apk的有效 Android 应用程序包,并且:

    • 它无法加密。
    • 它之前不得被 Intune 应用包装工具包装。
    • 它必须针对 Android 9.0 或更高版本编写。

    注意

    如果输入应用是 Android 应用捆绑包 (.aab) ,则需要在使用 Intune 应用包装工具之前将其转换为 APK。 有关详细信息,请参阅 将 Android App Bundle (AAB) 转换为 APK。 自 2021 年 8 月起, 新的专用应用仍可作为 APK 发布到 Google Play 商店

  • 应用必须由或为你的公司开发。 不能在 Google Play 商店中提供的应用上使用此工具。 这包括从 Google Play 商店下载或获取应用。

  • 若要运行应用包装工具,必须安装最新版本的 Java 运行时环境 ,然后确保在 Windows 环境变量中将 Java 路径变量设置为 C:\ProgramData\Oracle\Java\javapath。 有关更多帮助,请参阅 Java 文档

    注意

    在某些情况下,32 位版本的 Java 可能会导致内存问题。 最好安装 64 位版本。

  • Android 要求对 (.apk) 的所有应用包进行签名。 有关 重用 现有证书和整体签名证书指南,请参阅 重用签名证书和包装应用。 使用 Intune 应用包装工具包装 .apk 文件后,建议使用 Google 提供的 Apksigner 工具。 这将确保应用到达最终用户设备后,可以按照 Android 标准正确启动它。

  • (可选) 由于包装过程中添加的 Intune MAM SDK 类,有时应用可能会达到 Dalvik 可执行文件 (DEX) 大小限制。 DEX 文件是 Android 应用编译的一部分。 Intune 应用包装工具在包装过程中自动处理自 1.0.2501.1) 起最小 API 级别为 21 或更高 (的应用的 DEX 文件溢出。 对于最小 API 级别 < 为 21 的应用,最佳做法是使用包装器的 -UseMinAPILevelForNativeMultiDex 标志提高最小 API 级别。 对于无法提高应用的最低 API 级别的客户,可以使用以下 DEX 溢出解决方法。 在某些组织中,这可能需要与编译应用 (人员协作。应用生成团队) :

    • 使用 ProGuard 从应用的主 DEX 文件中消除未使用的类引用。
    • 对于使用 Android Gradle 插件 v3.1.0 或更高版本的客户,请禁用 D8 dexer

应多久使用 Intune 应用包装工具重新包装一次 Android 应用程序?

需要重新打包应用程序的主要方案如下:

  • 应用程序本身已发布新版本。 应用的早期版本已包装并上传到 Microsoft Intune 管理中心。

  • 适用于 Android 的 Intune 应用包装工具发布了一个新版本,该版本支持关键 bug 修复或新的特定 Intune 应用程序保护策略功能。 这种情况每隔 6-8 周通过 适用于 Android 的 Microsoft Intune App Wrapping Tool 的 GitHub 存储库进行一次。

重新包装的一些最佳做法包括:

安装应用包装工具

  1. GitHub 存储库中,将适用于 Android 的 Intune 应用包装工具的安装文件 InstallAWT.exe 下载到 Windows 计算机。 打开安装文件。

  2. 接受许可协议,然后完成安装。

记下工具安装到的文件夹。 默认位置为:C:\Program Files (x86) \Microsoft Intune 移动应用程序管理\Android\App Wrapping Tool。

运行应用包装工具

重要

Intune 定期发布 Intune 应用包装工具的更新。 定期检查 适用于 Android 的 Intune 应用包装工具 是否有更新,并纳入软件开发发布周期,以确保你的应用支持最新的应用保护策略设置。

  1. 在安装了应用包装工具的 Windows 计算机上,打开 PowerShell 窗口。

  2. 从安装该工具的文件夹中,导入应用包装工具 PowerShell 模块:

    Import-Module .\IntuneAppWrappingTool.psm1
    
  3. 使用 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上运行应用包装工具。

invoke-AppWrappingTool -InputPath .\app\HelloWorld.apk -OutputPath .\app_wrapped\HelloWorld_wrapped.apk -Verbose

包装的应用和日志文件将生成并保存在指定的输出路径中。

重用签名证书和包装应用

Android 要求所有应用都必须由有效的证书签名才能安装在 Android 设备上。

包装后,可以使用现有的签名工具 (应用中的任何签名信息进行包装 然后包装) 丢弃。 如果可能,应在包装过程中使用在生成过程中已使用的签名信息。 在某些组织中,这可能需要与拥有密钥存储信息 (人员合作。应用生成团队) 。

如果无法使用以前的签名证书,或者之前尚未部署应用,则可以按照 Android 开发人员指南中的说明创建新的签名证书。

如果之前已使用其他签名证书部署应用,则升级后无法将应用上传到 Intune。 如果应用使用与生成应用时使用的不同证书进行签名,则应用升级方案将中断。 因此,应维护任何新的签名证书,以便进行应用升级。

运行应用包装工具的安全注意事项

防止潜在的欺骗、信息泄露和特权提升攻击:

  • 确保输入业务线 (LOB) 应用程序,并且输出应用程序位于运行应用包装工具的同一台 Windows 计算机上。

  • 将输出应用程序导入到运行该工具的同一台计算机上的 Intune。 有关 Java keytool 的详细信息,请参阅 keytool

  • 如果输出应用程序和工具位于通用命名约定 (UNC) 路径上,并且你未在同一台计算机上运行该工具和输入文件,请使用 Internet 协议安全性 (IPsec) 服务器消息块 (SMB) 签名来保护环境。

  • 确保应用程序来自受信任的源。

  • 保护包含包装应用的输出目录。 考虑对输出使用用户级目录。

将 Android 应用捆绑包 (AAB) 转换为 APK

Intune 应用包装工具目前仅支持 APK 输入。 必须首先将 Android 应用捆绑包转换为 APK 才能与该工具一起使用。

可以使用 Google 的命令行工具 bundletool将 Android 应用捆绑包转换为 APK。 可以从 Google 的 bundle-toolbundletool GitHub 存储库下载 最新版本。

bundletool 可以使用以下命令生成与 Intune 应用包装工具配合使用的单个通用 APK:

bundletool build-apks --bundle=input.aab --mode=universal --output=input.apks

输出 .apks 文件是包含单个通用 APK 文件的 ZIP 存档。 解压缩存档并使用该 APK 文件作为 Intune 应用包装工具的输入。

另请参阅