在 AWS Device Farm 中跳过私有设备上的应用程序重新签名 - AWS Device Farm

在 AWS Device Farm 中跳过私有设备上的应用程序重新签名

应用程序签名是通过私钥对应用程序包(如 APKIPA)进行数字签名的过程,完成后才能将此应用程序包安装在设备上或发布到 Google Play Store 或 Apple App Store 等应用商店。为通过减少所需签名和配置文件的数量来优化测试流程,并提升远程设备上的数据安全性,AWS Device Farm 将在您的应用程序上传到服务后对其进行重新签名。

将应用程序上传到 AWS Device Farm 后,该服务将使用自己的签名证书和预置配置文件为该应用程序生成新的签名。此过程将原始应用程序签名替换为 AWS Device Farm 的签名。然后,重新签名的应用程序将安装在 AWS Device Farm 提供的测试设备上。获得新签名后,应用程序无需原始开发者的证书即可在这些设备上安装和运行。

在 iOS 上,我们会使用通配符配置文件替换嵌入式预置配置文件,然后对该应用程序进行重新签名。如果您提供辅助数据,我们将在安装前将其添加到应用程序包中,这样这些数据就会出现在您的应用程序的沙盒中。对 iOS 应用程序进行重新签名会导致某些权限被删除。这包括应用程序组、关联域、游戏中心、HealthKit、HomeKit、无线配件配置、应用程序内购买、应用程序间音频、Apple Pay、推送通知以及 VPN 配置和控制。

在 Android 上,我们对应用程序进行重新签名。这可能会破坏依赖于应用程序签名的功能,例如 Google Maps Android API。这还可能触发 DexGuard 等产品提供的反盗版和防篡改检测。对于内置测试,我们可能会修改清单以包含捕获和保存屏幕截图所需的权限。

如果您使用私有设备,则可以跳过 AWS Device Farm 对您的应用程序重新签名的步骤。这一点与公有设备不同,对于公有设备,Device Farm 始终会对 Android 和 iOS 平台上的应用程序重新签名。

您可以在创建远程访问会话或测试运行时跳过应用程序重新签名。如果您的应用程序功能在 Device Farm 对您的应用程序重新签名时发生崩溃,这会很有用。例如,重新签名后推送通知可能无法正常工作。有关 Device Farm 在测试应用程序时所做更改的更多信息,请参阅 AWS Device Farm 常见问题应用程序页面。

要跳过测试运行中的应用程序重新签名,请在其他配置下选择跳过应用程序重新签名。此选项仅在私有设备上可用。

在使用私有设备实例进行测试运行时选择“Skip app re-signing (跳过应用程序重新签名)”

注意

如果您使用的是 XCTest 框架,Skip app re-signing (跳过应用程序重新签名) 选项将不可用。有关更多信息,请参阅 将 Device Farm 与适用于 iOS 的 XCTest 集成

根据您使用的是私有 Android 设备还是 iOS 设备,配置应用程序签名设置的其他步骤有所不同。

在 Android 设备上跳过应用程序重新签名

如果您在私有 Android 设备上测试应用程序,请在创建测试运行或远程访问会话时选择 Skip app re-signing (跳过应用程序重新签名)。无需其他配置。

在 iOS 设备上跳过应用程序重新签名

Apple 要求您在将用于测试的应用程序加载到设备上之前对应用程序签名。对于 iOS 设备,您有两种选择来对应用程序签名。

  • 如果您使用的是内部(企业)开发人员配置文件,则可以跳到下一部分创建远程访问会话,以信任您的 iOS 应用程序

  • 如果您使用的是临时 iOS 应用程序开发配置文件,则必须先将设备注册到您的 Apple 开发人员账户,然后更新您的预配置配置文件,使其包含私有设备。然后,您必须使用更新的预配置配置文件对应用程序重新签名。然后可以在 Device Farm 中运行重新签名的应用程序。

将设备注册到临时 iOS 应用程序开发预配置配置文件
  1. 登录您的 Apple 开发人员账户。

  2. 导航到控制台的 Certificates, IDs, and Profiles (证书、ID 和配置文件)部分。

  3. 转到 Devices (设备)

  4. 在您的 Apple 开发人员账户中注册该设备。要获取设备的名称和 UDID,请使用 Device Farm API 的 ListDeviceInstances 操作。

  5. 转到您的预配置配置文件,然后选择 Edit (编辑)

  6. 从列表中选择设备。

  7. 在 XCode 中获取经过更新的预配置配置文件,然后对应用程序重新签名。

无需其他配置。现在,您可以创建远程访问会话或测试运行,然后选择 Skip app re-signing (跳过应用程序重新签名)

创建远程访问会话,以信任您的 iOS 应用程序

如果您使用的是内部(企业)开发人员预配置配置文件,则必须在每台私有设备上执行一次性过程,以信任内部应用程序开发人员证书。

为此,您可以在私有设备上安装要测试的应用程序,也可以安装虚拟应用程序,使用与要测试的应用程序相同的证书对该应用程序进行签名。安装使用相同证书进行签名的虚拟应用程序具有一个优势。一旦您信任配置配置文件或企业应用程序开发人员,则该开发人员的所有应用程序在私有设备上都是可信的,直到您删除这些应用程序。因此,如果您上传了要测试的应用程序的新版本,则不必再次信任该应用程序开发人员。如果您运行测试自动化,不希望在每次测试您的应用程序时都创建远程访问会话,这种方法特别有用。

在启动远程访问会话之前,请按照 在 AWS Device Farm 中创建实例配置文件 中的步骤在 Device Farm 中创建或修改实例配置文件。在实例配置文件中,将测试应用程序或虚拟应用程序的捆绑 ID 添加到清理时需排除的程序包设置。然后,将实例配置文件附加到私有设备实例,以确保 Device Farm 在启动新的测试运行之前不会从设备中删除该应用程序。这样可确保您的开发人员证书仍是可信的。

您可以使用远程访问会话将虚拟应用程序上传到设备,从而启动应用程序并信任此开发人员。

  1. 按照创建会话中的说明操作,创建使用您创建的私有设备实例配置文件的远程访问会话。在创建会话时,请务必选择 Skip app re-signing (跳过应用程序重新签名)

    创建远程访问会话时跳过应用程序重新签名

    重要

    要将设备列表筛选为仅包含私有设备,请选择 Private device instances only (仅限私有设备实例),以确保您使用的是具有正确实例配置文件的私有设备。

    另请确保将虚拟应用程序或要测试的应用程序添加到已附加到此实例的实例配置文件的清理时需排除的程序包设置。

  2. 您的远程会话启动时,请选择选择文件来安装使用内部预置配置文件的应用程序。

  3. 启动您刚刚上传的应用程序。

  4. 请按照说明信任开发人员证书。

现在,该配置文件或企业应用程序开发人员的所有应用程序在此私有设备上都是可信的,直到您删除这些应用程序。