gpt4 book ai didi

ios - 框架只能在模拟器上工作,不能在设备上工作

转载 作者:行者123 更新时间:2023-12-01 18:47:15 24 4
gpt4 key购买 nike

我正在使用 Xcode 版本 7.2 (7C68)。
在将 DTCoreText 项目构建为框架后,我遇到了一个问题。
DTCoreText.framework 在 ios 模拟器上运行良好,但是当我想在设备上测试它时,出现了以下问题:
enter image description here
我检查了最新 DTCoreText-1.6.17 中的build设置项目:
目标: DTCoreText (iOS)
拱门: armv7, arm64
ONLY_ACTIVE_ARCH:
VALID_ARCHS: arm64、armv7、armv7s
我认为这些设置都可以。比我通过按 Shift+CMD+i 来“构建分析”。

  • Build using simulator:

I noticed the current device i just used for building is Simulator(iPhone 6 Plus). And I find the DTCoreText.framework under theRelease-iphonesimulator folder. by doing this, the DTCoreText.framework only works fine when using iphone simulator, butnot on real device.

  • Build using device:

Than I tried to rebuild DTCoreText.framework with the same buildsettings, but using "Generic iOS Device" or "Real Device (eg:iPhone 6s)". I got the DTCoreText.framework underRelease-iphoneos folder. By doing this, the DTCoreText.framework only works fine when using real device, but not on iphone simulator.


我不知道为什么会这样。
如何为模拟器和真实设备构建 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$

正如我们所见:
  • 使用模拟器构建时,xcode 使用 ARCHS " i386, x86_64 "
  • 生成框架
  • 使用设备构建时,xcode 使用 ARCHS " armv7, arm64 "
  • 生成框架

    要将两个框架组合在一起,请使用以下命令,例如:
    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/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com