我正在开发一个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,但这两种情况都定义了。
我用 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)将在使用我的框架的项目中可用。
如何实现这一点(本地视图和桥接部分(本地))应该在框架中
我的 iOS 应用程序遵循“照片扩展”模板: - 独立的“容器”应用程序 - 照片编辑扩展,通过将其嵌入到上面的应用程序中来部署。
正如 Apple 所建议的,应用程序和扩展程序共享的代码被收集在嵌入应用程序中的“核心” cocoa 框架中,并且应用程序和扩展程序都链接到该框架。
所以我的 Xcode 项目包含三个目标:
到目前为止,一切都很好。
此外,框架、应用程序和扩展依赖于我在 Github 上的两个库MyLibraryA和MyLibraryB(反过来,MyLibraryA又依赖于MyLibraryB)。
我最初使用 Carthage设置对MyLibraryA和MyLibraryB的依赖,一切正常。
然后,我决定将我的库 A 和 B 迁移到 Swift Packages。
我删除了项目和目标、框架搜索路径等中所有与 Carthage 相关的设置,以确保引用我的库的 Swift Package 版本,而不是缓存的 Carthage 版本。我还删除了 Carthage 目录(签出和构建)。
当我构建共享/嵌入式框架目标时,没有任何问题。
但是,当我尝试构建应用程序或应用程序扩展目标时,我收到一条指向共享框架 Swift 标头 (MyFramewor-Swift.h) …
我有兴趣了解什么是UI Framework Instagram正在使用.想知道是否有人可以启发我.
任何建议都将非常感谢!
震
需要哪些框架来检测某人在麦克风中说话的声音...此外,任何人都可以告诉我在文档或谷歌中搜索什么,这样我就可以创建一些代码......当使用什么行代码时通过麦克风检测音量?谢谢!
我正在使用Jenkins每晚构建一个iOS静态框架.我关心的输出是在这个目录中:
IOS /构建/发布-iphoneuniversal/MySpecialProject.framework
我想使用"归档工件"操作来归档"MySpecialProject.framework",但是当我这样做时,它会创建一个包含整个前导目录结构的整个归档.文档说要看看Ant是如何做到这一点的.我对Ant不熟悉,所以我在这里不知所措.
其主要目的是使"MySpecialProject.framework"可用作使用Jenkins构建的其他项目的工件.所以,以为我可以使用"复制工件"插件来做到这一点.但我真的无法通过这里创建一个完整的目录结构.我只是想将"MySpecialProject.framework"作为顶级工件.
提前致谢.
我创建了一个简单的 iOS 框架 Swift 项目,并添加了一个Logger带有单个存根方法的Swift 类log(_:)
class Logger: NSObject {
func log(_ message:String) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
类Logger和log方法是框架内部的,通常构建不会将它们暴露给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)
有人可以解释一下为什么吗?提前致谢!
尝试从命令行构建我的 iOS 框架时,我得到“MyFramework.framework.xcarchive”而不是“MyFramework.framework”。
在 Xcode 中构建时,我得到了正确的结果,而不是从命令行。
我的构建命令非常简单:
xcodebuild -project myFramework.xcodeproj -scheme myScheme -archivePath "/dev/builds" archive
Run Code Online (Sandbox Code Playgroud)
我的“.framework”文件在哪里?
我的 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_frameworks和simulator_frameworks文件夹中有两个单独的框架。
ios-frameworks ×10
ios ×6
xcode ×4
cocoapods ×1
frameworks ×1
iphone ×1
jenkins ×1
lipo ×1
microphone ×1
objective-c ×1
react-native ×1
swift ×1
swift4 ×1
volume ×1
xcode9.1 ×1
xcodebuild ×1