标签: ios-frameworks

如何检测use_frameworks!在编译时

我正在开发一个cocoapod。使用我的 pod 的人可以选择是否将此行包含在他们的Podfile

use_frameworks!

如果他们包含它,我的代码将被编译到一个.framework文件中。如果没有,就会被编译成.a文件。

我想使用预处理器宏根据是否use_frameworks!存在在我的可可豆荚中包含不同的代码。

例如,这样的事情:

#if PODFILE_CONTAINS_USE_FRAMEWORKS
@import My_Library;
#else
#import <My-Library/MyLibrary.h>
#end
Run Code Online (Sandbox Code Playgroud)

当您的 Pod 名称不合规时,就会出现这种情况c99extidentifier

我已经尝试检查#if defined COCOAPODS,但这两种情况都定义了。

ios-frameworks cocoapods

5
推荐指数
1
解决办法
259
查看次数

如何为 React Native 组件编写 iOS 框架

我用 Objective-C 和 Swift 编写的组件很少。当我想在任何 React Native 项目中使用它时,我将手动复制这些本机组件并创建一个桥。

现在我想在多个项目中使用相同的组件,因此我正在考虑将所有这些本机组件以及桥接部分放入一个框架中。

首先,我开发了一个带有简单本机视图的简单框架......如下所示

在此输入图像描述

当我尝试运行 ComponentTest 项目时,框架无法构建,并出现错误,提示未找到 RCTViewManager.h。我确信这种依赖关系将在使用我的框架的所有项目中可用。

ComponentTest/node_modules/tmobcomponents/ios/TMobileNativeComponents/TMobileNativeComponents/components/SimpleView/SimpleViewManager.h:12:9:在框架模块“TMobileNativeComponents.SimpleViewManager”内包含非模块化标头:“/Users/someone/Library/Developer/Xcode” /DerivedData/ComponentTest-auqzutioszphtnhfizcfhndibnnl/Build/Products/Debug-iphonesimulator/include/React/RCTViewManager.h'

是否可以在不添加 ReactNative 依赖项的情况下构建框架,因为 React Native 依赖项(RCTViewManager)将在使用我的框架的项目中可用。

如何实现这一点(本地视图和桥接部分(本地))应该在框架中

xcode ios ios-frameworks react-native

5
推荐指数
0
解决办法
614
查看次数

依赖于 Swift 包的 Swift 嵌入式框架

我的 iOS 应用程序遵循“照片扩展”模板: - 独立的“容器”应用程序 - 照片编辑扩展,通过将其嵌入到上面的应用程序中来部署。

正如 Apple 所建议的,应用程序和扩展程序共享的代码被收集在嵌入应用程序中的“核心” cocoa 框架中,并且应用程序和扩展程序都链接到该框架。

所以我的 Xcode 项目包含三个目标

  • 框架目标
  • 照片编辑扩展目标,链接到框架但不嵌入它,以及
  • App目标,嵌入扩展二进制文件和框架二进制文件,并链接到两者。

到目前为止,一切都很好。


此外,框架、应用程序和扩展依赖于我在 Github 上的两个库MyLibraryAMyLibraryB(反过来,MyLibraryA又依赖于MyLibraryB)。

我最初使用 Carthage设置对MyLibraryAMyLibraryB的依赖,一切正常


然后,我决定将我的库 A 和 B 迁移到 Swift Packages。

我删除了项目和目标、框架搜索路径等中所有与 Carthage 相关的设置,以确保引用我的库的 Swift Package 版本,而不是缓存的 Carthage 版本。我还删除了 Carthage 目录(签出构建)。

问题

当我构建共享/嵌入式框架目标时,没有任何问题。

但是,当我尝试构建应用程序应用程序扩展目标时,我收到一条指向共享框架 Swift 标头 (MyFramewor-Swift.h) …

ios-frameworks ios-app-extension swift-package-manager

5
推荐指数
1
解决办法
2549
查看次数

Instagram使用什么UI框架?

我有兴趣了解什么是UI Framework Instagram正在使用.想知道是否有人可以启发我.

任何建议都将非常感谢!

iphone frameworks ios-frameworks

4
推荐指数
1
解决办法
5514
查看次数

iOS xcode麦克风音量检测?

需要哪些框架来检测某人在麦克风中说话的声音...此外,任何人都可以告诉我在文档或谷歌中搜索什么,这样我就可以创建一些代码......当使用什么行代码时通过麦克风检测音量?谢谢!

xcode microphone volume ios ios-frameworks

4
推荐指数
1
解决办法
2万
查看次数

Jenkins,我如何归档一个子目录(没有上面的整个树结构)?

我正在使用Jenkins每晚构建一个iOS静态框架.我关心的输出是在这个目录中:

IOS /构建/发布-iphoneuniversal/MySpecialProject.framework

我想使用"归档工件"操作来归档"MySpecialProject.framework",但是当我这样做时,它会创建一个包含整个前导目录结构的整个归档.文档说要看看Ant是如何做到这一点的.我对Ant不熟悉,所以我在这里不知所措.

其主要目的是使"MySpecialProject.framework"可用作使用Jenkins构建的其他项目的工件.所以,以为我可以使用"复制工件"插件来做到这一点.但我真的无法通过这里创建一个完整的目录结构.我只是想将"MySpecialProject.framework"作为顶级工件.

提前致谢.

ios jenkins ios-frameworks

4
推荐指数
1
解决办法
5999
查看次数

在 iOS 框架项目中选中“仅允许应用程序扩展 API”会向消费者公开内部类和方法

我创建了一个简单的 iOS 框架 Swift 项目,并添加了一个Logger带有单个存根方法的Swift 类log(_:)

class Logger: NSObject {

    func log(_ message:String) {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Loggerlog方法是框架内部的,通常构建不会将它们暴露给ObjC. 但是,如果我在框架目标的常规设置中选中“仅允许应用程序扩展 API”,则生成的内容MyFramework-Swift.h现在包含类和方法声明,这意味着两者对框架的使用者都是可见的,就像它们被声明为公共一样:

SWIFT_CLASS("_TtC9Framework6Logger")
@interface Logger : NSObject
- (void)log:(NSString * _Nonnull)message;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么吗?提前致谢!

objective-c ios ios-frameworks swift ios-extensions

4
推荐指数
1
解决办法
3932
查看次数

如何使用 xcodebuild 构建 iOS 框架?

尝试从命令行构建我的 iOS 框架时,我得到“MyFramework.framework.xcarchive”而不是“MyFramework.framework”。

在 Xcode 中构建时,我得到了正确的结果,而不是从命令行。

我的构建命令非常简单:

xcodebuild -project myFramework.xcodeproj -scheme myScheme -archivePath "/dev/builds" archive
Run Code Online (Sandbox Code Playgroud)

我的“.framework”文件在哪里?

xcode xcodebuild ios-frameworks

4
推荐指数
1
解决办法
6121
查看次数

创建Universal Fat Framework lipo:无法创建临时输出文件

在创建从聚合目标脂肪框架,我下面从这个构建阶段脚本要点链路上细微的变化我的脚本的链接

在目标版本上,Xcode显示胎儿错误:lipo:无法创建临时输出文件:/${PROJECT_NAME}.framework/${PROJECT_NAME}.lipo(无此类文件或目录)

请参阅下图以供参考

建立错误

更新了最终的工作脚本

ios ios-frameworks lipo swift4 xcode9.1

4
推荐指数
1
解决办法
1817
查看次数

如何嵌入取决于架构的框架

我的 iOS 项目依赖于一些CustomLib.framework. 该框架有两个单独的文件:一个用于模拟器,另一个用于真实设备。

我将这些文件放入文件夹中

@(PROJECT_DIR)/device_frameworks/CustomLib.framework

@(PROJECT_DIR)/simulator_frameworks/CustomLib.framework

我编辑过

Build Settings->Search paths->Framework search paths:

Any iOS Simulator SDK     $(PROJECT_DIR)/simulator_frameworks
Any iOS SDK               $(PROJECT_DIR)/device_frameworks
Run Code Online (Sandbox Code Playgroud)

我不明白的是如何添加CustomLib.framework到Xcode项目,以及如何将其添加为嵌入式框架(Build phases->Embed frameworks)。因为在这些步骤中我必须指定一个具体的框架,但我在device_frameworkssimulator_frameworks文件夹中有两个单独的框架。

xcode ios ios-frameworks

4
推荐指数
1
解决办法
1265
查看次数