

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 AWS Device Farm 中跳过私有设备上的应用程序重新签名
<a name="skip-app-re-signing-on-private-devices"></a>

应用程序签名是通过私钥对应用程序包（如 [APK](https://developer.android.com/studio/publish/app-signing)、[IPA](https://support.apple.com/guide/security/app-code-signing-process-sec7c917bf14/web)）进行数字签名的过程，完成后才能将此应用程序包安装在设备上或发布到 Google Play Store 或 Apple App Store 等应用商店。为通过减少所需签名和配置文件的数量来优化测试流程，并提升远程设备上的数据安全性，AWS Device Farm 将在您的应用程序上传到服务后对其进行重新签名。

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

在 iOS 上，我们将嵌入式配置文件替换为通配符配置文件并重新签署应用程序。如果您提供辅助数据，我们将在安装前将其添加到应用程序包中，这样这些数据就会出现在您的应用程序的沙盒中。重新签名 iOS 应用程序会导致所有权利被删除。

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

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

您可以在创建远程访问会话或测试运行时跳过应用程序重新签名。如果您的应用程序功能在 Device Farm 对您的应用程序重新签名时发生崩溃，这会很有用。例如，重新签名后推送通知可能无法正常工作。有关 Device Farm 在测试您的应用程序时所做的更改的更多信息，请参阅 [AWS Device Farm FAQs](https://aws.amazon.com/device-farm/faq/) 或[应用程序](https://docs.aws.amazon.com/devicefarm/latest/developerguide/apps.html)页面。

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

![在使用私有设备实例进行测试运行时选择“Skip app re-signing (跳过应用程序重新签名)”](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/aws-device-farm-skip-app-re-signing.png)




**注意**  
如果您使用的是 XCTest 框架，则**跳过应用程序重新签名**选项不可用。有关更多信息，请参阅 [将 Device Farm 与 XCTest 适用于 iOS 的集成](test-types-ios-xctest.md)。

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

## 在 Android 设备上跳过应用程序重新签名
<a name="signing-apps-on-android-devices"></a>

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

## 在 iOS 设备上跳过应用程序重新签名
<a name="signing-apps-on-ios-devices"></a>

Apple 要求您在将用于测试的应用程序加载到设备上之前对应用程序签名。对于 iOS 设备，您有两种选择来对应用程序签名。
+ 如果您使用的是内部（企业）开发人员配置文件，则可以跳到下一部分[创建远程访问会话，以信任您的 iOS 应用程序](#create-remote-session-trust-your-app)。

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

**将设备注册到临时 iOS 应用程序开发预配置配置文件**

1. 登录您的 Apple 开发人员账户。

1. 导航到控制台的 “**证书 IDs、和配置文件**” 部分。

1. 转到 **Devices (设备)**。

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

1. 转到您的预配置配置文件，然后选择 **Edit (编辑)**。

1. 从列表中选择设备。

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

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

## 创建远程访问会话，以信任您的 iOS 应用程序
<a name="create-remote-session-trust-your-app"></a>

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

为此，您必须安装占位符应用程序，该应用程序使用与您要测试的应用程序相同的证书进行签名。在设备信任配置文件或企业应用程序开发者之后，该开发者的所有应用程序都将在私有设备上受到信任，直到您将其删除。因此，当您安装要测试的应用程序的新版本时，您不必每次都再次信任应用程序开发者。如果您运行测试自动化，不希望在每次测试您的应用程序时都创建远程访问会话，这种方法特别有用。

许多客户常用的程序是重新签名 [iOS 版 Device Farm 示例应用程序](https://github.com/aws-samples/aws-device-farm-sample-app-for-ios/blob/master/prebuilt/prebuiltSampleApp.ipa)，然后将其作为占位符应用安装到他们的设备上。

在启动远程访问会话之前，请按照 [在 AWS Device Farm 中创建实例配置文件](set-up-private-devices-account-settings.md) 中的步骤在 Device Farm 中创建或修改实例配置文件。在实例配置文件中，将占位符应用程序的捆绑包 ID 添加到 “**从清理中排除软件包” 设置**中。然后，将实例配置文件附加到私有设备实例，以确保 Device Farm 在启动新的测试运行之前不会从设备中删除该应用程序。这样可确保您的开发人员证书仍是可信的。

您可以使用远程访问会话将占位符应用程序上传到设备，这样您就可以启动应用程序并信任开发者。

1. 按照[创建会话](how-to-create-session.md)中的说明操作，创建使用您创建的私有设备实例配置文件的远程访问会话。在创建会话时，请务必选择 **Skip app re-signing (跳过应用程序重新签名)**。  
![创建远程访问会话时跳过应用程序重新签名](http://docs.aws.amazon.com/zh_cn/devicefarm/latest/developerguide/images/aws-device-farm-create-reomte-access-session-skip-app-resigning.png)

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

   此外，请务必将占位符应用程序或要测试的应用程序添加到附加到此实例的实例配置文件的 “**从清理中排除软件包” 设置**中。

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

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

1. 确认出现 iOS 对话框，指示企业应用程序开发者不受信任。

1. 然后，如果 iOS 设备使用的是 iOS 版本 18 或更高版本，请向 Device Farm 团队提交支持请求，让我们的团队信任您的应用程序，因为这些设备需要手动信任该应用程序。 AWS 否则，如果iOS版本为17或更低，则可以进入**设置**应用程序，然后在**常规**设置下，从 **VPN和配置文件**菜单中自己信任该应用程序。

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