

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

# 在 AWS Device Farm 中对 iOS 应用程序测试进行故障排除
<a name="troubleshooting-ios-applications"></a>

以下主题列出了在上传 iOS 应用程序测试期间出现的错误消息并推荐了解决方法来解决每个错误。

**注意**  
以下说明基于 Linux x86\_64 和 Mac。

## IOS\_APP\_UNZIP\_FAILED
<a name="IOS_APP_UNZIP_FAILED"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法打开您的应用程序。请验证文件是否有效，然后重试。

确保您可以解压应用程序包，而不会出现错误。在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   有效的 iOS 应用程序包应生成类似以下内容的输出：

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- Info.plist
                         `-- (any other files)
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_PAYLOAD\_DIR\_MISSING
<a name="IOS_APP_PAYLOAD_DIR_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在您的应用程序中找到 .Payload 目录。请解压缩您的应用程序，验证 Payload 目录位于该程序包中，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   如果 iOS 应用程序包有效，您将在工作目录中找到 {{Payload}} 目录。

   ```
   .
   `-- {{Payload}} (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- Info.plist
                         `-- (any other files)
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_APP\_DIR\_MISSING
<a name="IOS_APP_APP_DIR_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在 Payload 目录中找到 .app 目录。请解压缩您的应用程序，打开 Payload 目录，并验证 .app 目录在该目录中，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   如果 iOS 应用程序包有效，您将在 {{Payload}} 目录中找到 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}})。

   ```
   .
   `-- Payload (directory)
           `-- {{AWSDeviceFarmiOSReferenceApp.app}} (directory)
                         |-- Info.plist
                         `-- (any other files)
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_PLIST\_FILE\_MISSING
<a name="IOS_APP_PLIST_FILE_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在 .app 目录中找到 Info.plist 文件。请解压缩您的应用程序，打开 .app 目录，并验证 Info.plist 文件在该目录中，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   如果 iOS 应用程序包有效，您将在 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}}) 中找到 {{Info.plist}} 文件。

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- {{Info.plist}}
                         `-- (any other files)
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_CPU\_ARCHITECTURE\_VALUE\_MISSING
<a name="IOS_APP_CPU_ARCHITECTURE_VALUE_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在 Info.plist 文件中找到 CPU 架构值。请解压缩您的应用程序，打开 .app 目录中的 Info.plist 文件，并验证已指定“UIRequiredDeviceCapabilities”键，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   您应该在 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}}) 中找到 {{Info.plist}} 文件：

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- {{Info.plist}}
                         `-- (any other files)
   ```

1. 要查找 CPU 架构值，您可以使用 Xcode 或 Python 打开 Info.plist。

   对于 Python，您可以通过运行以下命令来安装 biplist 模块：

   ```
   $ pip install biplist
   ```

1. 接下来，打开 Python 并运行以下命令：

   ```
   import biplist
   info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist')
   print info_plist['UIRequiredDeviceCapabilities']
   ```

   有效的 iOS 应用程序包应生成类似以下内容的输出：

   ```
   ['armv7']
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_PLATFORM\_VALUE\_MISSING
<a name="IOS_APP_PLATFORM_VALUE_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在 Info.plist 文件中找到平台值。请解压缩您的应用程序，打开 .app 目录中的 Info.plist 文件，并验证已指定“CFBundleSupportedPlatforms”键，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   您应该在 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}}) 中找到 {{Info.plist}} 文件：

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- {{Info.plist}}
                         `-- (any other files)
   ```

1. 要查找平台值，您可以使用 Xcode 或 Python 打开 Info.plist。

   对于 Python，您可以通过运行以下命令来安装 biplist 模块：

   ```
   $ pip install biplist
   ```

1. 接下来，打开 Python 并运行以下命令：

   ```
   import biplist
   info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist')
   print info_plist['CFBundleSupportedPlatforms']
   ```

   有效的 iOS 应用程序包应生成类似以下内容的输出：

   ```
   ['iPhoneOS']
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_WRONG\_PLATFORM\_DEVICE\_VALUE
<a name="IOS_APP_WRONG_PLATFORM_DEVICE_VALUE"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们发现 Info.plist 文件中的平台设备值错误。请解压缩您的应用程序，打开 .app 目录中的 Info.plist 文件，并验证“CFBundleSupportedPlatforms”键值不包含关键字“simulator”，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   您应该在 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}}) 中找到 {{Info.plist}} 文件：

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- {{Info.plist}}
                         `-- (any other files)
   ```

1. 要查找平台值，您可以使用 Xcode 或 Python 打开 Info.plist。

   对于 Python，您可以通过运行以下命令来安装 biplist 模块：

   ```
   $ pip install biplist
   ```

1. 接下来，打开 Python 并运行以下命令：

   ```
   import biplist
   info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist')
   print info_plist['CFBundleSupportedPlatforms']
   ```

   有效的 iOS 应用程序包应生成类似以下内容的输出：

   ```
   ['iPhoneOS']
   ```

   如果 iOS 应用程序有效，则该值不应包含关键字 `simulator`。

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_FORM\_FACTOR\_VALUE\_MISSING
<a name="IOS_APP_FORM_FACTOR_VALUE_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在 Info.plist 文件中找到外形规格值。请解压缩您的应用程序，打开 .app 目录中的 Info.plist 文件，并验证已指定“UIDeviceFamily”键，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   您应该在 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}}) 中找到 {{Info.plist}} 文件：

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- {{Info.plist}}
                         `-- (any other files)
   ```

1. 要查找外形规格值，您可以使用 Xcode 或 Python 打开 Info.plist。

   对于 Python，您可以通过运行以下命令来安装 biplist 模块：

   ```
   $ pip install biplist
   ```

1. 接下来，打开 Python 并运行以下命令：

   ```
   import biplist
   info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist')
   print info_plist['UIDeviceFamily']
   ```

   有效的 iOS 应用程序包应生成类似以下内容的输出：

   ```
   [1, 2]
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_PACKAGE\_NAME\_VALUE\_MISSING
<a name="IOS_APP_PACKAGE_NAME_VALUE_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在 Info.plist 文件中找到程序包名称值。请解压缩您的应用程序，打开 .app 目录中的 Info.plist 文件，并验证已指定“CFBundleIdentifier”键，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   您应该在 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}}) 中找到 {{Info.plist}} 文件：

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- {{Info.plist}}
                         `-- (any other files)
   ```

1. 要查找程序包名称值，您可以使用 Xcode 或 Python 打开 Info.plist。

   对于 Python，您可以通过运行以下命令来安装 biplist 模块：

   ```
   $ pip install biplist
   ```

1. 接下来，打开 Python 并运行以下命令：

   ```
   import biplist
   info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist')
   print info_plist['CFBundleIdentifier']
   ```

   有效的 iOS 应用程序包应生成类似以下内容的输出：

   ```
   Amazon.AWSDeviceFarmiOSReferenceApp
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。

## IOS\_APP\_EXECUTABLE\_VALUE\_MISSING
<a name="IOS_APP_EXECUTABLE_VALUE_MISSING"></a>

如果您看到以下消息，请执行以下步骤来修复此问题。

**警告**  
我们无法在 Info.plist 文件中找到可执行文件值。请解压缩您的应用程序，打开 .app 目录中的 Info.plist 文件，并验证已指定“CFBundleExecutable”键，然后重试。

在以下示例中，程序包的名称为 **AWSDeviceFarmiOSReferenceApp.ipa**。

1. 将您的应用程序包复制到工作目录，然后运行以下命令：

   ```
   $ unzip AWSDeviceFarmiOSReferenceApp.ipa
   ```

1. 成功解压缩程序包后，您可以通过运行以下命令找到工作目录树结构：

   ```
   $ tree .
   ```

   您应该在 {{.app}} 目录 (例如我们示例中的 {{AWSDeviceFarmiOSReferenceApp.app}}) 中找到 {{Info.plist}} 文件：

   ```
   .
   `-- Payload (directory)
           `-- AWSDeviceFarmiOSReferenceApp.app (directory)
                         |-- {{Info.plist}}
                         `-- (any other files)
   ```

1. 要查找可执行文件值，您可以使用 Xcode 或 Python 打开 Info.plist。

   对于 Python，您可以通过运行以下命令来安装 biplist 模块：

   ```
   $ pip install biplist
   ```

1. 接下来，打开 Python 并运行以下命令：

   ```
   import biplist
   info_plist = biplist.readPlist('Payload/AWSDeviceFarmiOSReferenceApp-cal.app/Info.plist')
   print info_plist['CFBundleExecutable']
   ```

   有效的 iOS 应用程序包应生成类似以下内容的输出：

   ```
   AWSDeviceFarmiOSReferenceApp
   ```

   有关更多信息，请参阅 [AWS Device Farm 中的 iOS 测试](test-types-ios-tests.md)。