使用 Xcode 8 创建通用框架?

2023-11-27

我公司的 iOS 框架旨在在真正的 iOS 设备上运行。所述框架当前作为 Xcode 项目中的附加目标生成,该项目也生成应用程序。 (这使得调试框架相对容易。)

我们最近收到了要求让它在模拟器中也能运行的请求。我现在可以让它这样做,下一步是创建一个可以在真实设备和模拟器上运行的编译版本。遗憾的是,我无法找到任何材料表明有人使用 Xcode 8 完成了此操作。有一些材料解释了如何使用旧版本的 Xcode,但在一个版本的 Xcode 中有效的内容可能无法在更高版本中工作或建议使用版本。 (我们已经有了一种创建通用框架中断的方法。)我尝试使用一些 Xcode 8 之前的脚本,但它们都不起作用。

有人设法使用 Xcode 8 生成 iOS 通用框架吗?如果可以的话,该怎么办呢?

预先感谢任何人可以提供的任何帮助。

亚伦·阿德尔曼


这是可能的,因为我目前正在 Xcode 8 上的 iOS、watchOS 和 tvOS 上开发通用框架。

我这样做的方法是创建一个聚合目标(跨平台)并在其构建阶段添加一个运行脚本。该脚本基本上编译了 iphonesimulator 和 iphoneos 的 iOS 目标

之后,它创建一个新的二进制文件合并它们(lipo -create -output)

您介意发布您当前的构建脚本来生成通用框架,以便我可以指导您解决您做错的事情吗?

请考虑到脚本可能不是您的问题,您的问题可能是设置您的有效架构、您的架构,甚至是您如何签署目标。我现在建议不要选中目标的常规设置中的自动管理签名选项,并手动设置配置文件和证书。

运行脚本:

    #!/bin/sh

UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}/iOS"

# Step 1. Build Device and Simulator versions on iOS
xcodebuild -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${PROJECT_NAME}"  -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' clean build
xcodebuild -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${PROJECT_NAME}" -sdk iphoneos clean build

# Step 2. Copy the framework structure (from iphoneos build) to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/iOS"

# Step 3. Create universal binary file using lipo and place the combined executable in the copied framework directory
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"

# Step 4. Convenience step to copy the framework to the project's directory
mkdir -p "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"

cp -R "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework" "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"


# Step 6. Create .tar.gz file for posting on the binary repository
cd "${TMPDIR}"

# We nest the framework inside a Frameworks folder so that it unarchives correctly
tar -zcf "${PROJECT_NAME}.framework.tar.gz" "${PROJECT_NAME}/Frameworks/"
mv "${PROJECT_NAME}.framework.tar.gz" "${PROJECT_DIR}/"

# Step 7. Convenience step to open the project's directory in Finder
#open "${PROJECT_DIR}"

考虑到我在构建设置中将“仅构建活动架构”设置为“否”,并且有效架构也设置为arm64、x86_64、i386、armv7、armv7s。架构是 ${ARCHS_STANDARD} armv7。

我还设置了用户定义的构建设置 BITCODE_GENERATION_MODE 位码。通过此构建设置,我确保生成启用了位码的二进制文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Xcode 8 创建通用框架? 的相关文章

  • 所有 RestKit 项目在归档时都无法构建

    这个问题涉及RESTKIT 0 9 x 如果您是 Restkit 新手 请考虑使用较新的版本0 10 x https github com RestKit RestKit tree v0 10 1 branch 我最近继承了一个项目 使用r
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • Phonegap Build 与 Xcode4 上的 Phonegap 对比?配置.xml?

    有一个使用phonegap构建的应用程序 我已经使用它编译和测试了http build phonegap com http build phonegap com服务 我发现它使用 XCode 的构建方式与在 Phonegap 网站上的构建方
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • 将通配符包标识符转换为单个 ID

    我在应用程序商店中有一个使用通配符包标识符的应用程序 我想实现应用内购买 这需要非通配符ID 如何将现有应用的通配符 ID 转换为静态 ID 以进行应用内购买和推送通知 应用程序的捆绑标识符在更新之间必须始终保持相同 但 AppID 实际上
  • 具有图形样式的 DatePicker 打破了 iOS 16.0 上的布局限制

    以下代码在 iOS 16 0 的 Xcode 14 0 0 Beta 5 上运行时打破了布局约束 struct ContentView View State var date Date var body some View DatePick
  • 存档期间的位码编译永远不会完成

    我正在准备一个通过 Test Flight 进行临时分发的应用程序 我已经 成功 完成了这篇 Ray Wenderlich 文章中的所有准备步骤 https www raywenderlich com 48750 testflight sd
  • 如何呈现半屏模态视图?

    我有一个 UIViewController 当按下按钮时 我想要一个半屏视图向上滑动 其中有一个 UIPicker 我在 IB 中使用 UIPicker 和带有 完成 取消 按钮的 UIToolBar 制作了一个 UIView 我怎样才能做
  • WKWebView不加载https URL?

    我有一个 WKWebView 应该加载以下网址 https buchung salonmeister de place offer details page id 907599 venueId 301655 她是我使用的代码 import
  • 如何在 IOS 中以编程方式滚动 UICollectionViewCell?

    我有一个垂直的UICollectionView每个细胞占据整个self view frame我可以轻松地向上滑动以翻页到下一个单元格 但我想通过按按钮来执行相同的操作 我尝试过使用 void setContentOffset CGPoint
  • iPhone - 如何通过基于度数的位置获取方向

    首先 我在班级中实现了位置管理器功能 并且运行良好 并为我提供了当前位置 从那个位置我得到了如何获得位置度here http www switchonthecode com tutorials getting your location i
  • 更改 UIImageView 的位置

    我怎样才能为 UIImageView 做一个简单的位置改变 假设当前坐标是 x 20 和 y 30 我想将其移至 x 100 和 y 100 可以制作运动动画吗 你需要改变它的CGFrameUIImageView就像这样 imageView
  • 自定义相机视图 Swift iOS 8 iPhone Xcode 6.1

    我想在 iPhone 的 View 中使用相机 我不想使用典型的全屏相机视图 而是我自己的 例如 我想在屏幕中间有一个 200x200 的正方形 并且有一个相机预览 在这个方块下面我想要一个拍照按钮 怎么做 我是新手 速度很快 你会想要使用
  • 按钮操作在 iPhone 中不起作用?

    我有一个 iPhone 应用程序 我在其中添加一个自定义视图 尽管有一个导航栏视图 在正常情况下 我隐藏该自定义视图 并在需要时取消隐藏它 现在 我正在向该自定义视图添加一个具有操作的按钮 但是当我点击它时 没有任何操作起作用 任何人都可以
  • Android:iOS UIActionSheet 等效项

    我正在转换一个 iOS 应用程序 并且需要实现从 iOS 到 Android 的 UIActionSheet 的等效项 什么 UI 元素最能模仿这一点 我的目标是 Android 2 2 及更高版本 您将使用 AlertDialog 或 D
  • Phonegap - navigator.app.backHistory() 不适用于 HTML 后退按钮

    在我的应用程序中 我使用phonegap 2 6 对于后退按钮 我使用以下函数 document addEventListener backbutton onBackKeyDown false function onBackKeyDown
  • 反应本机套接字 io 没有从客户端发出事件

    尝试将socket io client与react native 现在是ios 一起使用 到目前为止 连接 从客户端接收服务器端事件似乎工作正常 但是我似乎无法从客户端发出任何事件 Client var socket io http loc
  • 如何停用 Xcode git 功能? (删除 git 集成)

    我的 Xcode 项目位于 git 上 但我不喜欢 Xcode git 集成 有时 我有来自 Xcode 的错误 https stackoverflow com questions 7388560 error fatal not a git
  • NSData 不接受有效的 base64 编码字符串

    我正在 iOS 7 客户端实现 JSON Web Token 身份验证 效果很好 我的应用程序接收令牌 并可以使用它们对我的服务器进行经过身份验证的调用 现在 我希望我的客户端代码检查令牌的过期日期 以便它知道何时重新进行身份验证 检查 J
  • 如何检查 iOS 分发配置文件是否启用了推送通知?

    我有一个应用程序应该启用推送通知 但由于某种原因没有启用它们 我见过其他人下载并安装了该应用程序 但它甚至没有提示他们授予发送推送通知的权限 正如预期的那样 此应用程序不会出现在其 设置 gt 通知 中 但是 在我的 iPad 上 我能够从

随机推荐

  • Java 和 Mojave 的强化运行时

    我目前分发一个 Java 应用程序 打包并签名 using pkgbuild在 macOS 上 最近 苹果警告开发者 在即将发布的 macOS 版本中 Gatekeeper 将要求开发人员 ID 签名的软件经过公证的由苹果公司 阅读公证文件
  • 使用 numpy 滚动最大值

    这计算了 滚动最大值 A 类似于滚动平均值 在长度的滑动窗口上K import numpy as np A np random rand 100000 K 10 rollingmax np array max A j j K for j i
  • 在 C++ 中返回一个数组

    假设我有一个数组 int arr arr function arr 我的功能是 int function int arr rest of the code return arr 我在这里犯了什么错误 int function int arr
  • C++,使用#if TRUE 条件指令

    当使用像这样的语句时 if TRUE 我应该期待发生什么 如有解释 将不胜感激 我明白如何 if 1有效 但它给出了完全地我的代码中的结果与使用不同 if TRUE 我明白 if是一个条件指令 以及它意味着什么 这只是TRUE or FAL
  • Pipenv 无法识别 Pyenv 版本?

    我安装了 Python 3 7 0 但对于特定的 Django 项目 我想使用 Python 3 6 5 使用pyenv为此 我在 Macbook Pro 上运行了brew install pyenv 其次是pyenv install 3
  • 从父级导航嵌入的 Google Apps 脚本 iFrame

    我有一个多页网络应用程序 我希望登录后 用户可以看到他的队友列表并标记他们的出勤状态 我的问题是我无法在 iFrame 中显示这一点 而不是在 google 脚本原始框架中显示这一点 例如 我想将其 iFrame 到我自己的网页上 这两天我
  • 使用 ASP.NET MVC 2 上传文件的最佳方式是什么?

    上传可变大小的文件 对于 ASP NET MVC 2 应用程序文件系统来说非常大或非常小 的最佳方法是什么 到目前为止我的理解是这样的 人们似乎有两种处理这个问题的方法 假设文件可能非常大或非常小 1 在控制器操作中处理上传Request
  • jQuery:同一事件有多个处理程序

    如果我将两个事件处理程序绑定到同一元素的同一事件 会发生什么情况 例如 var elem elem click elem click 最后一个处理程序 获胜 还是两个处理程序都会运行 两个处理程序都将运行 jQuery 事件模型允许在一个元
  • Angular 4:日期管道,UTC 时间到本地时间:如何告诉 Angular 当前时区?

    我们将 Angular 4 与用 net core 编写的 MVC 应用程序一起使用 使用 SignalR 服务接收数据 集线器是用 C 编写的 数据库提供 Datetime2 7 字段 T SQL 收到的内容如下所示 对于日期字段 due
  • SQL FileStream + Entity Framework 存储大文件

    当我想将文件存储在文件流列中时 我总是需要将整个二进制文件读入内存 using MemoryStream memoryStream new MemoryStream sourceStream CopyTo memoryStream bina
  • 在 PHP 中解析 javascript 数组

    我似乎不知道如何将 JS 数组放入 PHP 中 我必须处理的事情看起来像这样 var arrLow e 495864 rank 8678591 rankmove p img src up php uStyle 144 UP 495864 e
  • “Create VIEW”必须是批处理中的唯一语句

    我有以下 SQL ALTER PROCEDURE dbo usp gettasks ID varchar 50 AS declare PDate Date WHILE DATEPART DW PDate 1 OR DATEPART DW P
  • 有没有办法从 C# 调用 RDTSC 汇编指令?

    我想要为我的 C 应用程序提供一个非常高分辨率的计时器 我想访问 RDTSC 汇编指令 有没有办法做到这一点 编辑 我正在移植一些 C 代码并尝试保留与原始代码相同的功能 我可能会切换到更 NET 的东西 但想要评估 RDTSC 指令 以便
  • 下一个js图像组件错误“url”参数有效但上游响应无效

    我正在从 tmdb api 获取数据 但是图像未加载 所以我在新选项卡中打开图像 然后它显示 url 参数有效 但上游响应无效那么如何解决这个问题 您是否已将图像的域添加到下一个配置中 下面是一个例子 next config js modu
  • 使用 AngularJS 和 Asp.Net MVC 通过 FormData 上传多个文件

    我想使用 Angular js 上传多个文件 为此我使用 FormData 这是我的表单字段
  • 是否可以更改虚拟内存页面大小?

    是否可以更改虚拟内存页面大小 我问这个是因为在维基百科上 MMU 文章的 X86 64 部分 它讨论了不同的页面大小 如果页面大小确实可以改变 那么如何改变呢 在 x86 64 上 您可以在以下命令的帮助下显式请求 2 MiB 页面 而不是
  • 如何在 App Engine Nodejs Standard 上访问内存缓存

    如何从node js标准环境访问memcached 该文档显然没有提到 App Engine 内存缓存可用于 Node JS 标准环境 至少目前没有 没有Node JS语言选项卡中内存缓存概述 page s 没有Caching Applic
  • NumPy 读取文件并动态过滤行

    我在 CSV 文件中写入了大量数字 只需加载该数组的一部分 从概念上讲我想打电话np genfromtxt 然后对结果数组进行行切片 但是 该文件太大 RAM 可能无法容纳 相关行的数量可能很小 因此不需要解析每一行 MATLAB有函数te
  • EXTENDS 挑战:预处理器函数宏和类类 oop

    背景 我一直在使用 C 预处理器来管理和 编译 具有多个文件和构建目标的半大型 JavaScript 项目 这提供了对 C 预处理器指令的完全访问 例如 include define ifdef等来自 javascript 的内容 这是一个
  • 使用 Xcode 8 创建通用框架?

    我公司的 iOS 框架旨在在真正的 iOS 设备上运行 所述框架当前作为 Xcode 项目中的附加目标生成 该项目也生成应用程序 这使得调试框架相对容易 我们最近收到了要求让它在模拟器中也能运行的请求 我现在可以让它这样做 下一步是创建一个