这次崩溃是一个阻塞问题,基本上我使用以下步骤来重现问题:
应用程序在启动时立即崩溃,这是控制台日志:
dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我试图在iOS 7.1和8.0设备上构建,它们都有相同的崩溃.但是我可以构建应用程序并在模拟器上运行良好.另外我知道我可以在Link Binary With Libraries中将框架从Required更改为Optional,但它没有完全解决问题,当我创建Dog实例时应用程序崩溃了.在设备和模拟器上的行为是不同的,我怀疑我们不能使用测试版的Xcode分发设备框架.任何人都可以阐明这一点吗?
在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或读过以下内容,但我对这个问题的了解不足以保证它的真实性.
1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计.
2)(1)如果使用使用配置文件数据优化程序热路径的配置文件编译器,则不成立,因为使用静态链接,编译器可以优化代码和库代码.通过动态链接,您的代码可以进行优化.如果大部分时间都花在运行库代码上,那么这可能会产生很大的不同.否则,(1)仍然适用.
我有一个现有的iOS应用程序,并希望添加一大块代码,我一直在开发另一个项目,以方便测试.新的块基本上处理将图像保存到各种共享服务等.因为共享代码需要大量的测试和未来的更新,我想知道将代码块合并到我现有的应用程序中的最佳方法是什么.
我不知道它应该是静态库,动态库还是框架,老实说,我不确定区别是什么,或者我应该如何去做它并在Xcode中设置它.
我所知道的是,我需要/想要为共享代码保留单独的测试和更新应用程序,并让主应用程序使用它.
如果你还不能说,我不是一个git wiz.我只是一个简单的单人开发人员.
任何帮助或方向将不胜感激.谢谢!
关于这两个选项之间的区别是一个很好的问题,如Link Binary与库VS Embed Frameworks中描述的那样.
似乎我们可以选择使用它们,只是想知道哪种情况我们应该更好地使用嵌入式二进制文件,或者不是链接框架?
解决这个问题的任何可靠实例都更清晰 谢谢
在Xcode 6.0.1中使用嵌入式框架(dyld)时,部署目标小于iOS 8,我得到:
错误:
dyld: Library not loaded: @rpath/ObjectiveLyricsTouch2.framework/ObjectiveLyricsTouch2
Referenced from: /private/var/mobile/Containers/Bundle/Application/DC65ACA9-98E5-46CD-95F8-829D3416F6C0/musiXmatch.app/musiXmatch
Reason: image not found
(lldb)
Run Code Online (Sandbox Code Playgroud) 将框架放入"链接二进制文件库"或"嵌入框架"之间的构建阶段有何不同?
这可能听起来像一个愚蠢的问题,但如果你有一个thirdParty.framework文件,你能告诉它是静态的还是动态的?我的意思是,如果你看里面,他们看起来不一样吗?
我已经构建了一个Swift框架,现在我正在尝试构建一个将使用该框架的Swift iOS应用程序.我收到这个错误:
dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
Referenced from: /Users/tdean/Library/Developer/Xcode/DerivedData/NFLApplication-ejmafvjrlqgjaabggwvadjarjjlg/Build/Products/Debug-iphonesimulator/NFLStatsModel.framework/NFLStatsModel
Reason: image not found
Run Code Online (Sandbox Code Playgroud)
我搜索了SO并找到了类似的报告并尝试了其中列出的修复程序,包括:
Always Embed Swift Standard Libraries = YES在我的框架和我的应用程序的构建设置中设置Enable Bitcode=NO在我的框架和我的应用程序的构建设置中设置Runpath Search Paths被设置为@executable_path/Frameworks,无论是在我的框架和我的应用程序的构建设置在每种情况下,当我尝试运行我的应用程序时,我都会遇到相同的错误.
好吧,我很好奇Xcode的构建过程.设置多个目标,如何自动化版本控制和一般理解系统,以便我可以操纵它来做我想要的.
有没有人有任何书籍或可以指向我某处的某些文件,以便我能解决所有这些问题?
万分感谢.
另一件事,如果有人真的看到这个,因为改变它.
但任何人都知道的任何书籍都会关注Xcode 4吗?有Xcode 3 Unleashed,但如果有任何书籍专注于Xcode 4,我真的很好奇.
在厌倦了众多Match-O链接器错误后,我想知道这件事意味着什么.我想知道这些事情背后的概念,而不是试错法.具体来说我想知道之间的区别:
这些是我单击链接部分上的Mach-O类型设置时显示的选项.一些小的定义或一些指向适当内容的链接也可以.
Xcode11 Beta的“框架,库和嵌入式内容”部分中有3个新选项可用于添加库。Xcode库部分屏幕截图
谁能解释他们的工作?
我遇到过多个站点,描述框架可以同时包含静态和动态库。但是我如何确定框架实际包含的是动态库还是静态库。我想首先使用扩展名(.a 表示静态库,.dylib 表示动态库),但我在我正在试验的框架内看到的只是没有为内部打包的二进制文件提供扩展名。有什么办法可以找到它是静态库还是动态库。
我还阅读了 Landon Fuller 关于静态库的帖子http://landonf.bikemonkey.org/code/ios/Radar_15800975_iOS_Frameworks.20140112.html ,其中他提到框架为库提供了两级命名空间,但它是否涵盖了正常的调试符号而不是只是依赖项,即使对于打包在框架内的静态库,它也能工作。
例如,如果我在框架内以及它所链接到的项目代码库中有相同的调试符号会发生什么。在这种情况下,两级命名空间会起作用吗?
同样根据作者http://ddeville.me/2014/04/dynamic-linking/ 框架是一个包含动态库、头文件和资源的包或包。
根据以下帖子库?静止的?动态的?还是框架?在另一个项目中的项目 它说框架可以包含静态和动态库。
我对此很困惑。有人可以解释 iOS 中的框架,它们包含什么以及它们如何在两级命名空间方面工作。
ios ×8
xcode ×6
frameworks ×4
objective-c ×3
swift ×2
automation ×1
build ×1
c ×1
c++ ×1
crash ×1
dyld ×1
dylib ×1
ios8 ×1
linker ×1
llvm ×1
performance ×1
target ×1
xcode11 ×1
xcode6 ×1