appium入门指南(十)mac编译webdriveragent 报错汇总

一、xcode升级后编译报错

解决方法可以有两种,一种是不使用New Build System,在File > Project/Workspace Settings中的Share Project/Workspace Settings 里build system 将New Build System(Default)切换成Legacy build system。



appium入门指南(十)mac编译webdriveragent 报错汇总_第1张图片

其次是根据出错信息,在新创建系统模式下,去除多余的引用重建。

Info.plist

在 target -> Build phase > Copy Bundle Resource 中找到info.plist,移除

appium入门指南(十)mac编译webdriveragent 报错汇总_第2张图片

二、编译证书弹窗输入密码不会消失

原因为弹出了三个弹窗被重叠了,你输入的可能不是最外层的弹窗,故输入没反应,解决策略:

把三个弹窗拉开,分别输入密码,点击始终信任,直至弹窗消失(如果你到钥匙串去配置始终信任会报错: code signing is required for product type 'xxxxx' in SDK 'iOS 13.5')

 

三、高版本xcode编译webdriveragent 报错(Xcode11.5)

appium入门指南(十)mac编译webdriveragent 报错汇总_第3张图片

正常结果:

解决方案修改两个webdriveragent代码文件:

1、WebDriverAgent/PrivateHeaders/XCTest/XCTestCase.h

加入以下代码到下图中红框位置

@property(nonatomic) BOOL shouldSetShouldHaltWhenReceivesControl;

appium入门指南(十)mac编译webdriveragent 报错汇总_第4张图片

2、WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.m

修改红框中代码26~36行为下方内容,替换后的代码如下图
//  self.internalImplementation = (_XCTestCaseImplementation *)[FBXCTestCaseImplementationFailureHoldingProxy proxyWithXCTestCaseImplementation:self.internalImplementation];
  if ([self respondsToSelector:@selector(internalImplementation)]) {
    // The `internalImplementation` API has been removed since Xcode 11.4
      self.internalImplementation =
        (_XCTestCaseImplementation *)[FBXCTestCaseImplementationFailureHoldingProxy
                                      proxyWithXCTestCaseImplementation:self.internalImplementation];
    } else {
      // https://github.com/appium/appium/issues/13949
      self.shouldSetShouldHaltWhenReceivesControl = NO;
      self.shouldHaltWhenReceivesControl = NO;
    }

appium入门指南(十)mac编译webdriveragent 报错汇总_第5张图片

代码修改之后再次运行即可,应该就可以成功了

四、xcode-select: error

运行xcodebuild遇到下面这个错误

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
执行 sudo xcode-select -s /Applications/Xcode.app/Contents/Developer 就可以修复。See also: https://github.com/nodejs/node-gyp/issues/569

你可能感兴趣的:(appium)