如何CommonCrypto在iOS的Swift框架中导入?
我理解如何CommonCrypto在Swift应用程序中使用:您添加#import <CommonCrypto/CommonCrypto.h>到桥接标头.但是,Swift框架不支持桥接头.该文件说:
您可以导入具有纯Objective-C代码库,纯Swift代码库或混合语言代码库的外部框架.无论框架是用单一语言编写还是包含来自两种语言的文件,导入外部框架的过程都是相同的.导入外部框架时,请确保将要导入的框架的"定义模块"构建设置设置为"是".
您可以使用以下语法将框架导入到不同目标中的任何Swift文件中:
import FrameworkName
Run Code Online (Sandbox Code Playgroud)
不幸的是,导入CommonCrypto不起作用.也没有添加#import <CommonCrypto/CommonCrypto.h>到伞头.
这是我的设置:
Stat.Stat在自己的类中使用代码(这个框架被调用Dyn).静态库和这个框架在同一个Xcode项目中.Dyn.在我的应用程序中,我有以下代码:
import Cocoa
import Dyn
...
SomeDynClass().doSomething()
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试编译时,我得到一个错误import Dyn.错误是
error: missing required module ‘Stat'
Run Code Online (Sandbox Code Playgroud)
看来我的应用程序可以很好地找到我的框架,但它也需要为我的静态库找到一个模块呢?
Stat 有一个非常基本的模块文件:
module Stat {
header "Stat.h"
export *
}
Run Code Online (Sandbox Code Playgroud)
我想我需要指出我的Mac应用程序的框架搜索路径,Stat但我不知道为什么,我不知道如何.我该如何解决这个问题?
试图为我的客户准备一个动态框架.我的框架(A.framework)使用第三方识别静态框架(B.framework).我无法向客户提供单独的A和B框架.理想情况下,应该构建B.framework并将其包含在我的A.framework的二进制文件中,因此客户的应用程序只会嵌入A.framework,而无需任何其他操作来链接该第三方应用程序.
我做了什么:
注意:
任何想法都将受到高度赞赏!
UPD 1:这不是关于伞框架,因为正确的伞框架实现需要从bundle加载子框架,这是不好的.由于不同的Mach-O值(动态和静态),虚假框架实现(子框架简单地复制到伞)将不适用于发布.假伞框架具有巨大的尺寸,因为子框架被完全复制到伞内.
UPD 2:创建了一个小型测试项目:StaticFrameworkTest,它有3个子项目:
让我们,我有一个自定义斯威夫特Cocoa Touch framework,MyLog,其中有一个叫简单的功能printLog().我有另一个以HelloWorld不同工作空间/位置命名的Swift项目.现在我需要将自定义框架MyLog导入到项目中HelloWorld,以便我可以调用MyLog.printLog().
Project -> Targets -> Build Phases -> Link Binary With Libraries
Run Code Online (Sandbox Code Playgroud)
不会在列表中显示我的自定义库.此外,我不只是想链接我的自定义库,而是我想作为独立的库单独导入,以便运行中的更改MyLog不会反映出来HelloWorld.
注意:我在Android中做的类似的事情是添加
custom_library.jarlib.
试图将ParseLiveQuery cocoapod 集成到我的项目中,但在构建时我不断收到错误:
在框架模块内部包含非模块化标头错误'Bolt.BFCancellation'
我通过cocoapods 安装了ParseLiveQuery(以及Parse).这是我的podfile:
use_frameworks!
pod 'ParseLiveQuery'
pod 'Parse'
post_install do |installer|
installer.pods_project.build_configuration_list.build_configurations.each do |configuration|
configuration.build_settings['CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES'] = 'YES'
end
end
Run Code Online (Sandbox Code Playgroud)
我还在构建设置中将允许框架模块中的非模块包含设置为是,但仍然会出现此错误.
所以我想在我自己的框架中链接到 RealmSwift,这些是我采取的步骤:
添加RealmSwift为子项目

链接框架:

添加依赖

导入RealmSwiftSwift 文件:

我得到了错误:Missing required modules: 'Realm.Private', 'Realm'。我该如何解决这个问题?谢谢!
ios ×5
frameworks ×4
swift ×4
xcode ×3
cocoa ×1
commoncrypto ×1
macos ×1
parse-server ×1
realm ×1