折腾:
期间,Xcode9中clean后重新build出错:
error: The following binaries use incompatible versions of Swift:
/Users/crifan/Library/Developer/Xcode/DerivedData/SRT-cfccwgbddwbjoqbfrtcfvclnuykq/Build/Products/Debug-iphonesimulator/SRTDev.app/Frameworks/ChartsRealm.framework/ChartsRealm
/Users/crifan/Library/Developer/Xcode/DerivedData/SRT-cfccwgbddwbjoqbfrtcfvclnuykq/Build/Products/Debug-iphonesimulator/SRTDev.app/SRTDev
所以再去删除掉Derived Data:
再clean后编译,结果:
问题依旧。
所以好像删除掉路径不对?
去打开:
/Users/crifan/Library/Developer/Xcode/DerivedData
从:
找到的Derived Data也是同样的路径:
/Users/crifan/Library/Developer/Xcode/DerivedData
难道是Carthage的build中的ChartsRealm.framework,会自动编译链接到Xcode项目中?
那干脆去删除掉ChartsRealm.framework
然后再去clean后build,结果:
突然发现了:
此处是:
虽然之前已经去掉了
Targets-》General-》Linked Frameworks and Libraries中的ChartsRealm.framework
但是Targets-》Build Phases-》Run Script-》中的:
/usr/local/bin/carthage copy-frameworks
中的:
$(SRCROOT)/Carthage/Build/iOS/ChartsRealm.framework
没有去掉
所以要去掉:
点击减号,删除掉。
且注意此处三个target都删除掉。
所以此处应该是:
确保没有script去copy这个
/Carthage/Build/iOS/ChartsRealm.framework
且
/Carthage/Build/iOS/ChartsRealm.framework
本身文件也被删除掉了
然后再去clean后build,结果:
终于可以正常编译了(都可以启动app了):
【总结】
此处,虽然之前去掉了
Targets-》General-》Linked Frameworks and Libraries中的ChartsRealm.framework
但是Targets-》Build Phases-》Run Script-》中的:
/usr/local/bin/carthage copy-frameworks
中的:
$(SRCROOT)/Carthage/Build/iOS/ChartsRealm.framework
没有去掉
导致:
每次编译还是会去加载ChartsRealm.framework,然后由于之前:
carthage update –platform iOS –no-use-binaries
(竟然)没有重新编译生成ChartsRealm.framework
(只重新编译生成了Charts.framework)
而此处的
Carthage/Build/iOS/ChartsRealm.framework
是之前(9月1号)编译的(之前旧的版本)
所以此处链接才报错。
而此处,通过搜索代码中好像的确没有使用到ChartsRealm这个库,所以可以安全的删除掉。
所以再去:
Targets-》Build Phases-》Run Script-》中的:
/usr/local/bin/carthage copy-frameworks
中,选中
$(SRCROOT)/Carthage/Build/iOS/ChartsRealm.framework
点击减号➖,删除掉,即可。
注意:此处有3个target,记得都要删除了。
然后重新clean后再去build编译,就不会再去找ChartsRealm.framework,就可以正常编译了。
转载请注明:在路上 » 【已解决】Xcode9中编译出错:The following binaries use incompatible versions of Swift ChartsRealm.framework