swe*_*py_ 3 ios ios-frameworks swift
我使用Xcode 6和Swift构建了一个框架,我的框架使用SwiftyJSON作为依赖 - 通过Carthage添加.我存档了我的框架,并为使用的模拟器和iOS设备创建了一个版本lipo,当我尝试将我的框架用于一个空的应用程序时,我在运行时遇到了崩溃:
dyld: Library not loaded: @rpath/SwiftyJSON.framework/SwiftyJSON
Referenced from: /Users/hd/Library/Developer/CoreSimulator/Devices/324FD1CD-4A06-459B-AE6D-318197B5697E/data/Containers/Bundle/Application/555871BB-7AA1-4AED-90CE-EE0A628A794F/CollaborativeTodo.app/Frameworks/XXXXX.framework/XXXXX
Reason: no suitable image found. Did find:
/Users/hd/Library/Developer/CoreSimulator/Devices/324FD1CD-4A06-459B-AE6D-318197B5697E/data/Containers/Bundle/Application/555871BB-7AA1-4AED-90CE-EE0A628A794F/CollaborativeTodo.app/Frameworks/SwiftyJSON.framework/SwiftyJSON: no matching architecture in universal wrapper
Run Code Online (Sandbox Code Playgroud)
这是我的树状看起来像 - 我的框架名称是故意模糊的:

常规选项卡:

构建阶段:

如果我在我的项目中使用Carthage包含SwiftyJSON,它可以工作,但我不希望用户被强制包含第三方库.如何将SwiftyJSON嵌入我的框架并告诉Xcode在运行时使用嵌入式版本,而不是试图在项目中找到框架?
您不能避免让应用程序直接包含SwiftlyJSON.还好说,你应该不避免的应用包括SwiftlyJSON.如果应用程序由于某些其他原因已经拥有SwiftlyJSON,那么由于重复的符号,您将导致巨大的痛苦.根据他们如何做事,他们可能不会得到错误,只是未定义的行为,这更糟糕.自动包含是一种非常好的功能,直到它完全爆炸,没有人能弄清楚如何解决它.如果您在StackOverflow上搜索"ios duplicated symbols",我估计其中大约一半是由于框架试图自动包含子框架(通常SBJSON).
记录您所依赖的内容并将其作为嵌套依赖项包含在Cartfile中.迦太基将为他们建造它(他们仍然需要将它拖入他们的项目).
| 归档时间: |
|
| 查看次数: |
1345 次 |
| 最近记录: |