Appium [已解决] WDA 使用开发者账号签名之后出现 dyld: Library not loaded

water · June 29, 2017 · Last by 志阳、 replied at April 03, 2018 · 3284 hits

问题描述:
这个月才抽出时间来搞iOS10的自动化,因为公司的测试环境不能联网验证wda的app,如果用普通apple id打包就无法运行wda的app,一咬牙买了个apple开发者账号。
使用开发者证书的签名之后,执行appium一直报下面的错误:

dyld: Library not loaded: @rpath/XCTest.framework/XCTest
Referenced from: /var/containers/Bundle/Application/A142DB9C-1134-4A9E-8DD6-2AB08B9845C9/WebDriverAgentRunner-Runner.app/XCTRunner
Reason: no suitable image found. Did find:
/private/var/containers/Bundle/Application/A142DB9C-1134-4A9E-8DD6-2AB08B9845C9/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest: code signing blocked mmap() of '/private/var/containers/Bundle/Application/A142DB9C-1134-4A9E-8DD6-2AB08B9845C9/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest'
/private/var/containers/Bundle/Application/A142DB9C-1134-4A9E-8DD6-2AB08B9845C9/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest: code signing blocked mmap() of '/private/var/containers/Bundle/Application/A142DB9C-1134-4A9E-8DD6-2AB08B9845C9/WebDriverAgentRunner-Runner.app/Frameworks/XCTest.framework/XCTest'

已经尝试下面的方法均无法解决:
1,build Phases设置中添加XCTest.framework,设置为optional;
2,对/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Frameworks 下的XCTest.framework使用开发者签名进行重签名;
3,使用在线安装appium1.6.5、或者下载appium-destop-beta3版本都是这个问题;
4,勾选Automatically Manage Singing或者使用手工导入provisioning都存在这个问题;
5,请iOS开发人员看了很久也没解决;

多谢论坛的热心大神,问题已解决。下面说一下主要的解决办法:
1,删掉手机上原来的keychain,证书等等重新设置开发者证书。(这个不一定有影响,保险起见还是做了)
2,按照下面地址的说明操作来操作,内容中的“Basic (manual) configuration”
https://github.com/imurchie/appium-xcuitest-driver/blob/isaac-rs/docs/real-device-config.md#basic-manual-configuration

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

帮你Google了一下, 应该是 Carthage 相关的问题, 这个问题我也没遇到过, 要不你看看这个帖子 https://github.com/Carthage/Carthage/issues/756, 看有没有帮助

普通的苹果ID也是可以打包的, 只不过复杂了一点, 可以详细看我这篇帖子 Appium iOS 安装和配置 https://testerhome.com/topics/8375

water #2 · June 30, 2017 作者
mark 回复

多谢热心的回复!不用开发者账号,用普通证书打包是没问题的,重装Carthage也不行,所以应该不是Carthage的问题。只是我们测试的手机和mac都放在内网,所以不能联网验证应用,而且证书也只能用7天,所以才选择买了个开发者账号来打包。然后就出现这个问题咯。
感觉像是动态库签名的问题,然而我重签名这个动态库还是不行~~ 是ios开发小白,没办法TAT

看源码可知 其实appium只是起了一个转发WDA请求的作用,而一般在安装appium时会默认安装一个WDA版本 就是appium文件夹下的 appium-xcuitest-driver 一般这个不是最新的 我刚才试验了下 通过npm重装appium-xcuitest-driver即可 或者去wda官网下载一个 appium版本其实无所谓 主要是wda的版本

water 回复

看错误提示还是签名的问题,你去GitHub重新克隆一遍WDA,重新试一下?

water #5 · June 30, 2017 作者
mark 回复

问题解决了,我把设备上所有证书删掉重新按照官网的操作去做成功了。

赞,互帮互助

在新环境部署时碰见了相同问题,用了一天的时间反复试验了多种方式,都未解决,请问具体解决方式是什么呢😩
已经参照正文中推荐的部分完全重新进行了操作,但是仍然没有解决问题,

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up