相关疑难解决方法(0)

在Swift框架中导入CommonCrypto

如何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>到伞头.

ios commoncrypto swift

181
推荐指数
8
解决办法
10万
查看次数

Swift应用程序:导入静态库的框架时"缺少必需的模块"

这是我的设置:

  1. Objective C代码的静态库叫Stat.
  2. 一个Swift框架,它Stat在自己的类中使用代码(这个框架被调用Dyn).静态库和这个框架在同一个Xcode项目中.
  3. 将上述项目作为子项目并链接到的Mac应用程序/项目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但我不知道为什么,我不知道如何.我该如何解决这个问题?

macos cocoa frameworks swift

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

使用第三方静态框架作为单个框架构建Swift动态框架

试图为我的客户准备一个动态框架.我的框架(A.framework)使用第三方识别静态框架(B.framework).我无法向客户提供单独的A和B框架.理想情况下,应该构建B.framework并将其包含在我的A.framework的二进制文件中,因此客户的应用程序只会嵌入A.framework,而无需任何其他操作来链接该第三方应用程序.

我做了什么:

  1. 为项目添加了B.framework.
  2. 将B.framework添加到相应目标中的"链接框架和库".
  3. 内置A.framework.
  4. 创建了一个演示应用程序,并将A.framework包含在项目中.
  5. 将A.framework添加到"嵌入式二进制文件".
  6. 演示应用程序的构建失败,并显示消息"Missing required module'B'"(尽管它仅在A.framework中使用).

注意:

  • 我既没有为B.framework创建任何模块映射文件,也没有为其他运行脚本创建
  • 使A.framework静态是不可接受的,因为它包含一些资源(故事板,图标和一些其他文件)
  • 试图制作不推荐的"伞"框架,但在演示应用程序中加载B.framework的包
  • 试图通过在A.framework中简单地复制B.framework来制作虚假的"伞形"框架,但是在导出演示应用程序时出现了2个问题 - 大小的A.framework和Mach-O错误(因为动态A之间的Mach-O差异)和静态B框架)

任何想法都将受到高度赞赏!

UPD 1:这不是关于伞框架,因为正确的伞框架实现需要从bundle加载子框架,这是不好的.由于不同的Mach-O值(动态和静态),虚假框架实现(子框架简单地复制到伞)将不适用于发布.假伞框架具有巨大的尺寸,因为子框架被完全复制到伞内.

UPD 2:创建了一个小型测试项目:StaticFrameworkTest,它有3个子项目:

  1. 具有动态框架依赖性的演示应用程序(框架A),并且不应该对框架B有任何了解
  2. 具有静态框架依赖性(框架B)的动态框架,理想情况下应包含在框架的二进制文件中.
  3. 静态框架B.

frameworks dynamic-linking static-linking ios swift

7
推荐指数
1
解决办法
1213
查看次数

将纯Swift自定义框架导入其他Swift项目

让我们,我有一个自定义斯威夫特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.

xcode frameworks ios swift

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

在框架模块内部包含非模块化头文件错误

试图将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)

我还在构建设置中将允许框架模块中的非模块包含设置为,但仍然会出现此错误.

xcode ios parse-platform parse-server

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

将 RealmSwift 添加为子项目:缺少必需的模块:'Realm.Private'、'Realm'

所以我想在我自己的框架中链接到 RealmSwift,这些是我采取的步骤:

  1. 添加RealmSwift为子项目

    在此处输入图片说明

  2. 链接框架:

    在此处输入图片说明

  3. 添加依赖

    在此处输入图片说明

  4. 导入RealmSwiftSwift 文件:

    在此处输入图片说明

我得到了错误:Missing required modules: 'Realm.Private', 'Realm'。我该如何解决这个问题?谢谢!

xcode frameworks realm ios

3
推荐指数
1
解决办法
4165
查看次数