组内的iOS自动化测试工具,使用了Facebook的 WebDriverAgent,并且做了些许修改。最近升级到Xcode 10之后,运行之后报错。
Undefined symbols for architecture x86_64:
"OBJC_CLASS$XCElementSnapshot", referenced from:
l_OBJC$CATEGORY_XCElementSnapshot$FBIsVisible in XCUIElement+FBIsVisible.o
l_OBJC$CATEGORY_XCElementSnapshot$FBUID in XCUIElement+FBUID.o
l_OBJC$CATEGORY_XCElementSnapshot$WebDriverAttributes in XCUIElement+FBWebDriverAttributes.o
objc-class-ref in XCUIElement+FBWebDriverAttributes.o
l_OBJC$CATEGORY_XCElementSnapshot$FBAccessibility in XCUIElement+FBAccessibility.o
l_OBJC$CATEGORY_XCElementSnapshot$FBScrolling in XCUIElement+FBScrolling.o
l_OBJC$CATEGORY_XCElementSnapshot$_FBHitPoint in XCElementSnapshot+FBHitPoint.o
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个issue已经讨论了这个问题,并且作者已经修复这个问题。
产生这个问题的原因是苹果将XCElementSnapshot
从XCTest.framework
移动到了私有的XCTAutomationSupport.framework
。于是作者在工程里显示地链接这两个库,现在的问题是私有的XCTAutomationSupport.framework
是没办法在Xcode中直接进行添加的。
查看作者的提交记录,发现作者是只是修改了project.pbxproj
,于是将原始project.pbxproj
覆盖到我们WDA工程的project.pbxproj
,去掉其他的diff,只保留这次提交的diff。