我正在使用Xcode版本7.2(7C68)。
在将DTCoreText项目构建为框架之后,我遇到了一个问题。
DTCoreText.framework在ios模拟器上工作正常,但是当我想在设备上对其进行测试时,出现以下问题:
我在最新的DTCoreText-1.6.17项目中检查了构建设置:
目标: DTCoreText(iOS)
ARCHS: armv7,arm64
ONLY_ACTIVE_ARCH:否
VALID_ARCHS: arm64,armv7,armv7s
我认为这些设置还可以。比我通过按Shift + CMD + i来“构建分析”。
我注意到我刚刚用来构建的当前设备是 Simulator
(iPhone 6 Plus)。我在DTCoreText.framework下找到了
发行-iphonesimulator的文件夹。这样,DTCoreText.framework仅在使用iphone模拟器时可以正常工作,但是
不在真实设备上。
比我尝试用相同的版本重建DTCoreText.framework
设置,但使用“通用iOS设备” 或“真实设备(例如:
iPhone 6s)” 。我在DTCoreText.framework下
释放-iphoneos的文件夹。这样,DTCoreText.framework仅在使用真实设备时才能正常工作,而在iphone模拟器上则无法正常工作。
我不知道为什么会这样。
如何为模拟器和真实设备构建DTCoreText.framework?
最佳答案
问题已解决!!!
我需要为“i386 x86_64 armv7 arm64”制作一个“FAT”框架!
How to export "fat" Cocoa Touch Framework (for Simulator and Device)?
这篇文章对我有很大帮助!
只需使用“ lipo -info ”命令来检查ARCHS,例如:
admins-MacBook-Pro:~ admin$
admins-MacBook-Pro:~ admin$ lipo -info /Users/admin/Desktop/DT/device/DTCoreText.framework/DTCoreText
Architectures in the fat file: /Users/admin/Desktop/DT/device/DTCoreText.framework/DTCoreText are: armv7 arm64
admins-MacBook-Pro:~ admin$
admins-MacBook-Pro:~ admin$ lipo -info /Users/admin/Desktop/DT/simulator/DTCoreText.framework/DTCoreText
Architectures in the fat file: /Users/admin/Desktop/DT/simulator/DTCoreText.framework/DTCoreText are: i386 x86_64
admins-MacBook-Pro:~ admin$
如我们所见:
要将两个框架组合在一起,请使用以下命令,例如:
admins-MacBook-Pro:~ admin$ lipo -create /Users/admin/Desktop/DT/device/DTCoreText.framework/DTCoreText /Users/admin/Desktop/DT/simulator/DTCoreText.framework/DTCoreText -output /Users/admin/Desktop/DTCoreText
现在,您可以在桌面上找到“DTCoreText”二进制文件。使用lipo cmd再次检查它:
admins-MacBook-Pro:~ admin$ lipo -info /Users/admin/Desktop/DTCoreText
Architectures in the fat file: /Users/admin/Desktop/DTCoreText are: i386 x86_64 armv7 arm64
是! ARCHS为“i386 x86_64 armv7 arm64”
将“DTCoreText”二进制文件放入DTCoreText.framework并替换旧文件!
做完了!
现在,我们应该能够将框架同时用于设备和模拟器!
但
这仅是为了方便测试,如果您想将应用程序提交到应用程序商店。苹果会因为"iOS frameworks containing simulator slices can't be submitted to the App Store"而拒绝它。
请阅读这篇文章:
Creating iOS/OSX Frameworks: is it necessary to codesign them before distributing to other developers?
关于ios - 框架只能在模拟器上运行,而不能在设备上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34615853/