and*_*sel 3 testing xcodebuild ios
我正在尝试运行Facebook的WebDriverAgent,以便在真实设备上进行测试:https : //github.com/facebook/WebDriverAgent。
我们的管理员不喜欢Apple自动签名,因此我们正在尝试手动。当我放
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id='4xxx9' test DEVELOPMENT_TEAM=xxxx PROVISIONING_PROFILE=xxxxx
Run Code Online (Sandbox Code Playgroud)
它说
Testing failed:
WebDriverAgentLib has conflicting provisioning settings. WebDriverAgentLib is automatically signed, but provisioning profile xxxx has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor, or switch to manual signing in the project editor.
Run Code Online (Sandbox Code Playgroud)
我对所有内容(在xcode中)设置了手动签名,然后重试:
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id='4xxx9' test DEVELOPMENT_TEAM=xxxx PROVISIONING_PROFILE=xxxxx
Testing failed:
WebDriverAgentLib does not support provisioning profiles. WebDriverAgentLib does not support provisioning profiles, but provisioning profile xxxx has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor.
Run Code Online (Sandbox Code Playgroud)
似乎我需要分解“测试”操作来构建没有配置文件的库,但没有配置文件的其他所有内容,然后触发测试。
可以将此“ xcodebuild test”命令重写为几个可实现这种构建/测试的命令吗?我需要命令行解决方案,因为这是持续集成的一部分。
提前致谢!
使用手动签名并包含Cocoapods依赖项对我来说是这样。这可能是Cocoapods的已知问题(https://github.com/CocoaPods/CocoaPods/pull/6964)。他们的解决方法是在'的挂钩中指定设置PROVISIONING_PROFILE_SPECIFIER为,但这对我们不起作用,因为我们提交了Pod,因此在构建时挂钩不会运行。''Podfilepost_installpost_install
但是,除了将选项传递PROVISIONING_PROFILE_SPECIFIER=xxxxx给之外xcodebuild,我们还可以通过在Pods.xcodeproj / project.pbxproj中为每个目标/构建配置设置以下选项来进行构建:
CODE_SIGNING_ALLOWED = NO;
CODE_SIGNING_REQUIRED = NO;
PROVISIONING_PROFILE = '';
PROVISIONING_PROFILE_SPECIFIER = '';
Run Code Online (Sandbox Code Playgroud)
我主要不是从事iOS的行业开发人员,但据我了解,PROVISIONING_PROFILE已弃用并指定了两者,CODE_SIGNING_ALLOWED并且CODE_SIGNING_REQUIRED可能是多余的,但是无论如何,我们目前在项目中都这样做。
尝试使用PROVISIONING_PROFILE_SPECIFIER=xxxxx而不是设置 PROVISIONING_PROFILE,它从 Xcode8 开始已弃用。
如果错误仍然发生,请尝试设置 DEVELOPMENT_TEAM 和 PROVISIONING_PROFILE_SPECIFIER ,因为这些与代码签名相关的构建设置仅在您实际构建应用程序时才相关(但您仅在已构建的应用程序包上执行 xcodebuild 测试)。
如果您想通过一次调用 xcodebuild来构建和测试应用程序,我们鼓励您执行以下操作:xcodebuild ... clean build test
编辑
查看 WebDriverAgent 项目后,问题与 WebDriverAgentLib 作为动态框架和 WebDriverAgentRunner-Bundle 的目标依赖项有关。动态框架根本不喜欢在 Xcode8 的构建阶段进行协同设计(它们现在应该在复制到构建产品时动态进行协同设计)。通过在命令行上指定代码签名相关的构建设置(DEVELOPMENT_TEAM 等),Xcode8 会针对动态框架目标抱怨这一点并导致构建失败。
解决方案 1:从 xcodebuild 调用中删除所有与代码签名相关的构建设置(PROVISIONING_PROFILE_SPECIFIER、PROVISIONING_PROFILE、DEVELOPMENT_TEAM、CODE_SIGN_IDENTITY),然后为 WebDriverAgentRunner-Target 设置这些设置(在 Xcode UI 中或通过项目.pbxproj 上的 plistbuddy 进行命令行) 。
解决方案 2:不要在真实设备上进行测试,而仅在模拟器上进行测试。由于不需要为模拟器共同设计可执行文件和/或测试包,因此您可以安全地从 xcodebuild 调用中省略任何与共同设计相关的参数。
解决方案 3:只需坚持使用自动代码签名并确保构建机器的 Xcode 中正确的开发人员帐户有有效的登录名。