ios - 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 上自动(卸载)安装有任何建议,我会对此感兴趣作为备用计划。
解决方案
推荐阅读
- javascript - w3.js 中的信息阅读困难
- html - 如何使用 CSS 使文本输入框变大?
- javascript - Javascript正则表达式至少匹配任何字符串中的一个特殊字符
- r - 更改堆积条形图的颜色,但保持每个类的堆栈按递增顺序排列
- ios - 输入设置值时如何删除用户意外输入的空格(用户默认值)
- java - 从完成服务中杀死线程?
- javascript - 在角度java脚本中过滤嵌套的对象数组
- ios - CoreBluetooth macOS 应用,连接 iPhone
- python - OpenGL:球体减慢帧速率
- javascript - 失败:第一个参数“电子邮件”必须是有效字符串。” javascript