草庐IT

ios - Cocoa Touch Framework 无法在嵌入项目的模拟器上进行调试

coder 2023-07-26 原文

我有一个 Cocoa Touch 框架,它是用 XCode 6 构建的,目标是 iOS >= iOS8。 这个框架的目标架构设置是默认的,这意味着我没有改变任何东西。 架构设置为标准(不包括 x86_64,稍后会详细介绍)。 该框架本身包含 Swift 和 Objective-C 代码,因此使用 Ray Wenderlich 的静态库解决方法构建它是行不通的。

现在,如果我创建一个新项目并将框架项目添加到其中,该项目会同时为设备和模拟器构建,这很好。

但是,如果我采用 .framework 文件并将其添加到不同的项目,就像您添加任何其他框架一样,该项目将不会为模拟器构建。好吧,它确实构建了,但是因为找不到相关的类而崩溃了。它在设备上运行良好,归档工作也如预期的那样。

框架项目本身已经给我一个警告; “Apple Mach-O 链接器警告 - 找不到选项的目录....(Debug-ophoneos)”。

非常感谢任何帮助!

最佳答案

我终于找到了解决这个问题的方法。 事实证明,XCode 不再创建开箱即用的胖二进制文件。不知道 Apple 背后的原因是什么,我也是,有时负责 XCode 的人似乎喜欢取笑使用他们产品的开发人员......

无论如何,您可以找到有关如何为模拟器和所有 iOS 设备创建胖二进制文件的权威指南(是的,您甚至必须对不同的架构进行 lipo 以获得适用于新旧设备的框架): https://kodmunki.wordpress.com/2015/03/04/cocoa-touch-frameworks-for-ios8-remix/

简而言之;

  • 创建 Cocoa Touch 框架
  • 将架构设置为 arm64、armv7 和 armv7s
  • 将“构建事件架构”设置为“否”
  • 将“有效架构”设置为 arm64、armv1 和 armv7s
  • 将以下脚本作为存档后操作添加到框架的构建方案中;

    设置-e

    DEVICE_BIN="${OBJROOT}/UninstalledProducts/${TARGET_NAME}.framework" SIMULATOR_BIN="${SYMROOT}/../../../../Products/Debug-iphonesimulator/${TARGET_NAME}.framework"

    ARCHIVE_PATH="${SRCROOT}/_Archive" rm -rf "${ARCHIVE_PATH}" mkdir "${ARCHIVE_PATH}"

    if [ "${CONFIGURATION}"= "发布"];然后

    如果 [ -d "${DEVICE_BIN}"];然后 DEVICE_PATH="${ARCHIVE_PATH}/Release" mkdir "${DEVICE_PATH}" cp -r "${DEVICE_BIN}""${DEVICE_PATH}" 菲 如果 [ -d "${SIMULATOR_BIN}"];然后 SIMULATOR_PATH="${ARCHIVE_PATH}/调试" mkdir "${SIMULATOR_PATH}" cp -r "${DEVICE_BIN}""${SIMULATOR_PATH}" lipo -create "${DEVICE_BIN}/${TARGET_NAME}""${SIMULATOR_BIN}/${TARGET_NAME}"-output "${SIMULATOR_PATH}/${TARGET_NAME}.framework/${TARGET_NAME}"

    退出 0;

这将在您的项目目录中创建一个 _Archive 目录,您可以在其中找到用于调试和发布的框架。

重要提示:从今天(2015 年 5 月 22 日)开始,您必须先使用模拟器构建项目,然后使用设备存档。否则您将无法获得通用二进制文件!

这篇文章是为了避免死链接错误而创建的,关于打包过程的更新,请始终尝试我在上面链接的 kodmunki 网站上发布的步骤,因为这篇文章中的步骤可能已经过时了!

关于ios - Cocoa Touch Framework 无法在嵌入项目的模拟器上进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30254460/

有关ios - Cocoa Touch Framework 无法在嵌入项目的模拟器上进行调试的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  4. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  5. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou

  6. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  7. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  8. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  9. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  10. ruby - 无法覆盖 irb 中的 to_s - 2

    我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)

随机推荐