首页 > 解决方案 > Xamarin.UITest 是否能够将 IPA 文件安装到物理 iPhone?

问题描述

我们有在本地 iPhone 上使用 iTunes 手动安装的 .ipa 文件,以及通过 Xamarin.UITest 使用自动安装的 .apk 文件

IApp ApplicationContext = ConfigureApp
                    .Android
                    .ApkFile("my/path/to/apk/file")
                    .StartApp();

尝试的时候

IApp ApplicationContext = ConfigureApp
                    .iOS
                    .DeviceIdentifier("device id string as shown in xcode device list")
                    .AppBundleZip("my/path/to/ipa/file")
                    .StartApp();

.ipa 文件已解压缩,但响应为

错误:Zip 文件不包含有效的应用程序包。

像这样使用 .InstalledApp 和 .App("App bundle identifier") 进行更新:

IApp ApplicationContext = ConfigureApp
                    .iOS
                    .DeviceIdentifier("device id string as shown in xcode device list")
                    .AppBundleZip("my/path/to/ipa/file")
                    .InstalledApp("app.bundle.id")
                    .StartApp();

我得到一个例外:

TestError:System.Exception:不能同时安装应用程序和应用程序包。在 Xamarin.UITest.Configuration.iOSAppConfiguration.Verify()

更新 2

使用

IApp ApplicationContext = ConfigureApp
                    .iOS
                    .DeviceIdentifier("device id string as shown in xcode device list")
                    .InstalledApp("app.bundle.id")
                    .StartApp();

需要已经安装该应用程序。

使用

IApp ApplicationContext = ConfigureApp
                    .iOS
                    .DeviceIdentifier("device id string as shown in xcode device list")
                    .InstalledApp("/my/path/to/ipa/file")
                    .StartApp();

只安装 DeviceAgent-Runner.app,而不是提供的 ipa。

手动解压缩 .ipa 并使用 .app 文件夹,如下所示:

IApp ApplicationContext = ConfigureApp
                    .iOS
                    .DeviceIdentifier("device id string as shown in xcode device list")
                    .AppBundle("/my/path/to/x.app/")
                    .StartApp();

结果是:

-> 错误:此应用程序包不适用于在物理设备上运行。要解决此问题,请确保您的目标设备是模拟器。

但是我可以通过将 x.app 拖到 XCode 中设备的已安装应用程序部分来将其安装到手机上,因此 x.app 可以在物理设备上运行。

通过 Xamarin.UITest 将 .ipa 文件安装到本地物理 iPhone 有什么要求?

IPA 文件使用内部企业证书进行签名,测试人员的 Apple ID 列在应用程序的配置文件中。Calabash 使用模拟器构建(.app 包)在应用程序上运行进行测试,通过 Xamarin.UITest 在运行 iOS 12-14 和 Xamarin.UITest 3.0.9 的 iPhone 模拟器上完美安装。

如果您对在不使用 Xamarin.UITest 的物理 iPhone 上自动(卸载)安装有任何建议,我会对此感兴趣作为备用计划。

标签: iosxamarinxamarin.uitest

解决方案


推荐阅读