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

water · 2017年06月29日 · 最后由 志阳、 回复于 2018年04月03日 · 3007 次阅读

问题描述:
这个月才抽出时间来搞 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

fdeferf 回复

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

匿名 #3 · 2017年06月30日

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

water 回复

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

fdeferf 回复

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

赞,互帮互助

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册