问题标签 [ios-universal-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5046 浏览

ios - iOS 通用框架不构建 i386?

我正在使用出色的iOS 通用框架脚本来构建我自己的框架,并且它在一段时间内运行良好。我不确定确切的时间,但它似乎已经停止构建 i386。使用生成的框架的应用程序不再适用于模拟器。

我已经VALID_ARCHS = arm64 armv7 armv7s i386 x86_64安排好了。和ONLY_ACTIVE_ARCH = NO。构建脚本不会抛出任何错误或日志。然而,我最终得到了一个没有 i386 或 x86_64 的瘦框架,因此任何依赖此框架的项目在为模拟器构建时都会出现链接器错误。

额外信息:

  • 使用来自主仓库的 Mk8 脚本最新版本。
  • 归档,而不是像某些错误所暗示的那样构建。

有任何想法吗?

0 投票
10 回答
54074 浏览

cocoa - Xcode 6 iOS 创建 Cocoa Touch 框架 - 架构问题

我正在尝试为 iOS 应用程序制作一个动态框架。感谢新版本的 Xcode (6),我们可以在创建新项目时选择 Cocoa Touch Framework,不再需要添加聚合目标、运行脚本等来制作。构建框架时我没有问题。但是当我尝试在 iOS 应用程序中使用它时,我遇到了一些架构问题。

好吧,我尝试更改框架项目和目标的设置(架构和仅构建有效架构和有效架构)。我为 iOS 应用程序项目做了同样的事情,但没有任何效果。我觉得有些东西我不明白。

例如,当我使用命令行“xcrun lipo -info MyFramework”为仅 i386(iOS 模拟器)检查构建框架时,我遇到的问题是

ld:警告:忽略文件/Library/Frameworks/MyFramework.framework/MyFramework,文件是为x86_64构建的,它不是被链接的架构(i386)......

如果有人可以帮助我获得适用于所有 iOS 架构(包括模拟器)的框架。

0 投票
4 回答
13781 浏览

ios - 在客户端获取 iOS 通用框架的版本号

这可能不仅限于iOS 通用框架,而是所有 xxx.framework 文件。但是,我似乎找不到有关如何在客户端应用程序中获取当前版本和构建框架的文档。在一个应用程序中,你会使用类似的东西:

这将为您提供存储在应用程序的 Info.plist 中的当前信息。但是我们如何找到框架的信息。就我而言,特别是嵌入式框架。

0 投票
0 回答
86 浏览

ios - 有没有办法在 cloudbees 产生的 Jenkins slave 上安装 ios-universal-framework?

使用本地的 Master Jenkins 和 cloudbees 插件,我能够启动 iOS 构建到云蜜蜂实例。它很甜。

我的 IOS 开发人员需要克隆 ios-universal-framework 存储库,然后运行该存储库中包含的 install.sh 脚本。一切正常,直到脚本发出“sudo”命令将文件复制到目录中

“/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications”

cp 命令需要 sudo 权限。我认为这是不可能的,但由于我在免费试用计划中,所以我可以在这里找到支持。感谢大家阅读。

托尼

0 投票
1 回答
622 浏览

xcode - Xcode 创建通用框架作为通用框架的依赖项

目前,当我分发我的通用框架时,我必须分发包含在构建阶段中的通用框架 - 将二进制文件与库链接。我想将所有东西捆绑到一个整洁的通用框架中,这样我的用户就可以轻松地链接到我的通用框架,而无需打扰其他人。

我正在尝试将另外两个通用框架“嵌入”到我的通用框架中。我在这里学习本教程: 将框架开发为依赖项目

这是我的项目结构的图片。注意Frameworks下的两个项目:

项目结构

我已将项目目标添加到目标依赖项,并将.a 文件链接到 Link Binary With Libraries 中。我能够毫无错误地构建依赖项目。

在此处输入图像描述

  1. 当我尝试构建我的主要通用框架时,我遇到的第一个问题是它找不到我添加到构建阶段 - 复制文件部分的头文件。但是,我确实将它们添加到 Aggregate 目标而不是 Project 目标,这是配置其他依赖项目的方式,并且 Headers 似乎没有问题。

在此处输入图像描述 在此处输入图像描述

如果我解决了这个问题,主通用框架可能会产生正确的输出。目前,它没有生产预期的产品(Debug-iphoneos、Debug-iphonesimulator 和 Debug-iphoneuniversal)。请参阅下面的更多评论。

在此处输入图像描述

您可以看到 Products 仅包含 Debug-iphoneos 并且 .frameworks 未在此处列出,但 .a 库文件在其中。


编辑:新方向

我在这里被撕裂了。在上面的代码中,说明向您展示了如何将依赖的框架添加到项目的框架文件夹中。但在进一步阅读后,我看到有些人在哪里创建了一个工作区,并将依赖项目添加到与主项目相同的级别,如下所示:

工作区示例

我已经设法构建了所有三个项目,但是配置太脆弱了。如这些说明中所述,我尝试进行更改以指向头文件的公共文件夹,但构建开始失败。我已经取消了该更改,并且构建再次运行。

我将继续为此而奋斗,但我很想听听已经这样做并让它发挥作用的人的来信。

0 投票
0 回答
342 浏览

xcode - Xcode - 如何将自定义通用框架放入另一个自定义通用框架中

我已经看到了其他问题,例如这个问题,我在这里也有一个问题,但遗憾的是没有答案。我一直在研究如何做到这一点,并找到了三个选项。

  1. 嵌入式自定义框架。
  2. 将自定义框架项目添加到框架项目文件夹并链接。 在此处输入图像描述
  3. 将所有自定义框架添加到工作区。 在此处输入图像描述

到目前为止,我无法使用方法 2 和 3 正确构建。有没有人做过这个?最好的方法是什么?

目标是为我的通用框架的最终用户提供“一个框架”解决方案。我不希望他们必须配置多个通用框架……只有一个。

0 投票
2 回答
730 浏览

objective-c - 有没有人升级现有的 iOS 8 和 Xcode 6 通用框架

自从 Apple 在其最新版本中支持通用框架的更新以来,似乎有很多人遇到了问题。我们使用通用框架已经有一段时间了。当然,更新破坏了我们的通用框架,我一直在试图弄清楚如何让它们再次工作。我看了几个问题,发现这个问题特别有帮助。关于是否仍然需要脚本似乎有些混乱。我在这里找到了一些说明,说新脚本是 python 脚本而不是 shell 脚本。但即使有了我在那里找到的信息,我仍然感到困惑。

谁能给我明确的步骤,将现有的通用框架转换为在 Xcode 6 中编译和构建的通用框架?

0 投票
2 回答
3104 浏览

ios - 如何在 xcode6 中创建通用框架

我知道如何在 Xcode 5 中创建框架。但是在 Xcode 6 中,如何结合模拟器框架和设备框架?当我尝试合并时,出现代码签名错误。当我使用lipo结合这两个框架时,我也得到一个错误。

错误: Command /bin/sh failed with exit code 65

0 投票
2 回答
600 浏览

cocoa - 对在 Xcode 6 中创建胖静态库的不同过程感到困惑

我对如何使用最新的 Xcode 6 和 iOS 8 环境创建通用框架的信息感到有些困惑。例如,此答案包括以下内容:

我的一位同事按照这些说明构建了一个可执行文件。好吧,我不认为那是我要找的。它包含一个如下所示的结构:

在此处输入图像描述

稍后,这里的另一个答案谈到了使用构建阶段运行脚本创建聚合目标,这是我在以前版本的 Xcode 中所熟悉的。当我使用该过程时,我会收到我所期望的。文件夹结构如下:

在此处输入图像描述

有人可以帮我们解决这个困惑吗?

两者有什么区别?

我的意思是,第一个过程是创建一个可以在模拟器和设备上运行的应用程序,而第二个过程是创建一个胖静态

0 投票
0 回答
199 浏览

ios - Xcode 6, iOS 8, Cocoa Touch Framework Bi directional frameworks / cyclic dependency error

My first time to post in here. Can't find any answer anywhere on my question. Please anyone:

I used earlier the iOS-Universal-Framework / fake framework to build two big frameworks, that depends of each other. So f.x. just to clarify:

Framework 1 (F1) has class A, B, C, ...
Framework 2 (F2) has class D, E, F, ...

So, what I normally did was to:
1) compile F1 with a global macro 'ENABLE_F2_METHODS_AND_TYPES' = 0
2) then moved to F2 and compiled F2 similarly with a macro 'ENABLE_F1_METHODS_AND_TYPES' = 0
Now both framework exists with class, types, etc.
3) compile F1 with macro = 1
4) compile F2 with macro = 1

That was all.

Now, the iOS-Universal-Framework is deprecated, and I have decided to move the frameworks into Cocoa Touch frameworks. So, at this moment, I have two Touch frameworks, but if I try to do similar approach, I successfully compile the two first steps, but not the third step.

I try to do some different attempts but didn't succeed.

I get the error:

Cannot find interface declaration for 'B' superclass of 'D';

so, what I tried is to add the #import "<F1/B.h>", but then get the error

Cyclic dependency in module 'F2': F2 -> F1 -> F2

How to solve this? Any other ideas?


IF succeeded, how to avoid that the frameworks is not going to be integrated into each other (Umbrella framework), but standalone frameworks. What I mean, in the

'Project' -> General -> 'Linked Frameworks and Libraries' -> I can choose "Required/Optional'.... Will that help or?

Thanks in advance.