我不得不承认,随着iOS 8的发布,我对iOS中的动态和静态框架感到有些困惑.
我正在寻找一种方法来分发我创建的库,我需要支持iOS 7及更高版本.(注意:这将是一个专有框架.我不能使用可可豆荚,我也不能分发来源).这是我已经知道的:
以下是关于此信息的问题:
frameworks static-libraries static-linking ios ios-frameworks
在包含Objective-C和Swift代码的自定义框架中,Swift编译器抛出以下错误:
[build_path]/unextended-module.modulemap:2:19: error: umbrella header 'bugtest.h' not found
umbrella header "bugtest.h"
^
<unknown>:0: error: could not build Objective-C module 'bugtest'
Run Code Online (Sandbox Code Playgroud) 我正在学习如何创建iOS和OSX框架.我们以iOS为例,到目前为止,以下步骤对我有用:
lipo -info
产生预期的:胖文件中的体系结构:Foo.framework/Foo是:i386 x86_64 armv7 arm64
问题是:
我读到我的框架可以由使用它的开发人员重新签名:"代码登录复制"但我不明白它的先决条件是什么,即我应该添加代码签名步骤以使用我的签名身份对该通用二进制进行编码将它分发给其他开发者?
如果以前是肯定的 - 我应该使用我的"iPhone Distribution:..."身份或"iPhone Developer:..."就足够了(这样我的框架成为某个iOS项目的一部分就会通过各种验证,特别是App Store验证)?
我的回答的背景是"CodeSign错误:SDK'iOS 8.3'中的产品类型'Framework'需要代码签名",我在许多第三方框架和Carthage#235或"代码对象未签名"中看到过在所有"(一个例子:我在Realm#1998报道的问题.
所以我想确保我的框架用户在使用它们时不会遇到任何代码签名问题.
PS当不是应用于单个开发人员而是应用于作为框架供应商的组织时,这个问题变得更加有趣.
我知道有几次这样问过.我按照这些说明进行操作:
在Xcode 5中添加框架到项目并添加了*relative*路径
Xcode仍然给出了这个错误:
这是我目前的配置:
螺栓框架是我可以使用Parse SDK.我从这里下载了空白项目:https://parse.com/apps/quickstart#parse_data/mobile/ios/native/new
它正在发挥作用.我试图复制每个配置选项,但它仍然无法正常工作.
注意:这是一个更抽象和简化的问题子集.
随着Touch Frameworks的加入,Extensions和Apple Watch Xcode 6项目和工作区变得越来越复杂.
如果你将CocoaPods添加到这个组合中,事情开始变得几乎无法管理.
如何构建具有以下目标和依赖性的Xcode项目/工作区?(假设:我正在为所有组件使用Git,我使用CocoaPods用于所有第三方代码,我正在使用Xcode 6).
如您所见,这是一个复杂的结构,包括几个CocoaPods实例.有关如何解决任何或所有这些问题的任何建议都会有所帮助.
(我的计划是写下我自己的一些想法,然后综合其他人的答案,这无疑将是一份活文件).
更新到CocoaPods 0.36.x后,我无法将导入添加到我的Bridging-Header.h文件中.我得到"找不到DBSphereView.h文件".
该文件确实存在于:
"Pods/DBSphereTagCloud/DBSphereView.h"
"Headers/public/DBSphereTagCloud/DBSphereView.h"
"Headers/private/DBSphereTagCloud/DBSphereView.h"
Run Code Online (Sandbox Code Playgroud)
我的桥文件:
#ifndef Loan_Bridging_Header_h
#define Loan_Bridging_Header_h
#import "DBSphereView.h"
#endif
Run Code Online (Sandbox Code Playgroud)
我可以使用框架.我参考了一个众所周知的框架(Alamofire),它很棒!
我的podfile:
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
pod 'DBSphereTagCloud', '~> 1.0'
pod 'Alamofire', '~> 1.1'
Run Code Online (Sandbox Code Playgroud)
在更新之前,我没有导入头文件的问题.
在将CocoaPods更新为0.36.x后,如何在Bridging-Header.h中引用头文件?
谢谢!
编辑:
我还尝试根据cocoapods.org的"Get Started"示例创建一个单独的项目,但没有成功.使用框架后,我似乎无法在我的桥接头文件中引用头文件.我一定错过了一些细节?
我收到这个警告:
Class X is implemented in both <framework> and <application> one of the two will be used, which one is undefined
Run Code Online (Sandbox Code Playgroud)
这个警告在网络上有很多内容,但我没有发现任何可以解决我遇到的具体问题的内容.
脚本
我已经构建了MyFramework和MyApplication(作为MyFramework的测试/演示应用程序).
MyFramework使用CocoaPod(我将其称为CoolPod),我也想在MyApplication中使用它(并且假设MyFramework的消费者也是合理的).
我需要能够将MyFramework分发为.framework(用于封闭源代码).但是,这意味着MyFramework将CoolPod嵌入其编译库中.
现在当我将MyFramework和CoolPod导入MyApplication时,我得到了这个冲突(输出上面显示的警告),因为CoolPod的类已经包含在MyFramework的库中(因为嵌入了CoolPod).
所以我们有这个结构:
CoolPod -> MyFramework \
MyApplication
CoolPod /
Run Code Online (Sandbox Code Playgroud)
题
我该如何避免这种冲突?
我曾考虑在MyApplication中包含CoolPod的头文件(但不包括它的lib),但这对于一个简单的案例来说似乎过于复杂.
非常感谢任何帮助,这实在是在阻止我.
谢谢,
靛青
我的应用程序在Xcode中的iPhone 6.0模拟器上正常运行,但是当我尝试在我的6.0设备上运行它时,我收到以下致命错误:
dyld:未加载库:/System/Library/Frameworks/AdSupport.framework/AdSupport引自:/var/mobile/Applications/26329A7C-04B0-415A-B8EB-3C59CC1EC0B1/hammerhead.app/hammerhead原因:未找到图像
我确信我的手机版本6.0并且是最新的.我的部署目标在我的项目文件和info.plist文件中设置为6.0.我该怎么办?
问题似乎与AdSupport框架有关,我将其放入我的应用程序中,因此新的Facebook SDK(3.1)可以在iOS 6中运行.
我试图从bitbucket存储库克隆一个项目,并Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)
在尝试在工作区中运行Xcode项目时收到错误.这些是我遵循的步骤,如果有人能让我知道我做错了什么,那就太好了!
git clone (link to bitbucket)
none
为调试和发布pod install
Id: framework not found Pods clang: error: linker command failed with exit code 1 (use -v to see invocation)
编辑这是podfile:
# Uncomment this line to define a global platform for your project
platform :ios, '8.0'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'
target 'Oncarb' do
pod 'Alamofire'
pod …
Run Code Online (Sandbox Code Playgroud) 我有一个在iOS应用程序和扩展程序之间共享的动态框架.该框架中有一些代码引用UIApplication
,当然,这些代码在扩展中不可用.这些电话是完全孤立的,所以我并不担心它们会导致我的分机出现问题.
由于警告消息中没有指定标志,可能无法执行此操作,但在构建项目时如何抑制 warning: linking against dylib not safe for use in application extensions
?
ios-frameworks ×10
ios ×8
cocoapods ×4
xcode ×3
swift ×2
xcode6 ×2
cocoa-touch ×1
code-signing ×1
dyld ×1
frameworks ×1
git ×1
ios6 ×1