SDK 开发 .a .framework .bundle (xcode引用) 依赖sdk工程
一. 静态库.a
1.创建静态库工程 Cocoa Touch Static Libray ,然后可以创建一个测试视图 TestView
2.暴露头文件 -> Build Phases--> 点左上角+ 加号-> New Header Phase ,此时下面多了一个行 Headers 文件 ,将需要暴露的头文件拖到 public 中
3. 编译 command+B 后, .a 文件由红色变黑色, 说明编译成功, show in Finder 在文件夹中找到 .a 及头文件
二.静态库. framework (= .a + .h + 资源文件)
更改参数: Build Setting
a. 搜 Linking-->(1)Dead Code Stripping 改为 NO (2)Mach-O Type 改为 Static Library
b. 在Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO。
c. 公开头文件Headers
1.使用Aggregate方式, 支持多平台
http://blog.csdn.net/tianshats/article/details/52045974
2.使用终端, 合并 模拟器 和 真机 为一个版本
http://www.jianshu.com/p/87dbf57cfe4a (包含了两种方法)
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't move temporary file: /Users/maxueshan/Desktop/frame to file: /Users/maxueshan/Desktop/frame.lipo (Is a directory)
这里我们合并的时候会遇到一个error,这是啥原因还真不知道,但是会在和我们-output的文件夹路径并列的地方生成一个 .lipo文件
我们的操作是按照人家说的把合成后的文件名字改成MyFrameworkTest替换原来的(.framework中的白色文件)。而且,把后缀.lipo去掉!
三. 包文件Bundle (资源文件包)
http://blog.csdn.net/tianshats/article/details/52045974
1. 创建包工程: macOS -> Bundle ->将资源拖入工程中, common+B 编译即可--> show in Finder
2. 资源包只需要编译,不需要安装: target-> Build Setting -> 搜索 install ->(1) skip install 改为Yes (2)installation Directory 删除安装路径
3.如何使用包文件
(1) 图片: 拼接路径
imageV.image = [UIImage imageNamed:@"XSBundle.bundle/Contents/Resources/2.png"];
(2)图片: 拼接包路径
NSString *bundlePath = [[NSBundle mainBundle]pathForResource:@"XSBundle" ofType:@"bundle"];
NSString *imagePath = [bundlePath stringByAppendingPathComponent:@"Contents/Resources/2.png"];
imageV.image = [UIImage imageWithContentsOfFile:imagePath];
//封装成方法
#pragma mark : - 资源相关
-(UIImage *)getImage:(NSString *)name{
NSBundle *currentBundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:[TGRefreshOC class]] pathForResource:@"TGRefreshOC" ofType:@"bundle"]];
UIImage *img = [UIImage imageWithContentsOfFile:[currentBundle pathForResource:name ofType:@"png"]];
return img;
}
(3)xib
NSString * bundlePath = [[ NSBundle mainBundle] pathForResource: @ "MyBundle" ofType :@ "bundle"];
NSBundle *resourceBundle = [NSBundle bundleWithPath:bundlePath];
UIViewController *vc = [[UIViewController alloc] initWithNibName:@"vc_name" bundle:resourceBundle];
参考链接整理:
1. xcode 项目引入另一个xcode工程
http://blog.csdn.net/liufangbaishi2014/article/details/50057485
步骤:
a.将你的SDK**工程文件夹拷贝到textSDK 的工程根目录下, 将. xcodeproj蓝色文件 add file...到当前工程目录中
b. Build Phase --> Target Dependencies --> 点击+ 添加库文件
c.Build Phase --> Link binary with Libraries--> 点击+ 添加库文件
d.Build Setting -->Search Paths->Header Search Paths中添加上SDK**对应的目录$(SRCROOT)/SDK/SDK就不报错了 最后面设置成 recursive
2.sdk 开发(.a 创建 .framework .bundle 以及脚本运行支持多平台)
http://www.jianshu.com/p/c131baae4307
3.引用. framework 时候遇到的错误
错误一:
dyld: Library not loaded: @rpath/GOPayFramework.framework/GOPayFramework
Referenced from: /var/containers/Bundle/Application/3E41EEDC-2800-4687-A863-04BB9352508A/TestFramework.app/TestFramework
Reason: image not found
解决办法: Build phase-> copy file -> 改成 framework ,并添加需要的.framework
http://blog.csdn.net/zzzzzdddddxxxxx/article/details/50495659
4.查看.framework 所支持的平台
为了检查一下我们的多平台编译真的成功了,启动终端,导航到桌面上的framework,像下面一样:
$ cd ~/Desktop/MySDK.framework
$ xcrun lipo -info MySDK
SDK 开发 .a .framework .bundle (xcode引用) 依赖sdk工程的更多相关文章
- iOS SDK开发汇总
以前也做过静态库的开发,不过都是一些简单的调用,最近在做项目的时候,发现其中还有很多问题,所以建个小项目简单记录遇到的问题以及正确的解决办法. 在项目中遇到的问题如下:xib文件获取不到, story ...
- 转载-iOS SDK开发
最近帮兄弟公司的做支付业务sdk,积累了 sdk 封装的经验!下面我会从零开始把我的 sdk 封装和调试经历分享给大家,希望能给看到这篇文章的人有所帮助! 本文我会从以下几个方面来讲述: Framew ...
- Sentry 开发者贡献指南 - SDK 开发(事件负载)
内容整理自官方开发文档 系列 Docker Compose 部署与故障排除详解 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentr ...
- Xamarin.ios引用第三方SDK
引言 诚然,Xamarin是个优秀的跨平台解决方案,但毕竟还是不能将Native中所有的方法都直接实现.诸如各种第三方库,也都只有java/oc原生版本的SDK,无法直接拿过来直接使用.但,不能直接拿 ...
- Kinect for Windows SDK开发入门(一):开发环境配置
[译]Kinect for Windows SDK开发入门(一):开发环境配置 前几天无意中看到微软发布了Kinect for windows sensor,进去看了一下Kinect应用的例子,发现K ...
- XMPPFrameWork IOS 开发(二)- xcode配置
原始地址:XMPPFrameWork IOS 开发(二) 译文地址: Getting started using XMPPFramework on iOS 介绍 ios上的XMPPFramewor ...
- Android SDK 开发——发布使用踩坑之路
前言 在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的. 为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的. 背景 刚好最近自己遇到了类似需 ...
- Android 主Module引用依赖Module,却无法使用里面的依赖库
如果模块化开发中遇到 多模块的AndroidManifest.xml没有合并or多模块的资源文件没有合并or模块A include了模块B,而无法使用模块B内依赖的其他aar包中的类的时候or提示Su ...
- Android SDK 开发指南
Android SDK 开发指南 视频详解 以下视频是对融云 Android SDK 开发使用的详细讲解,您可以在阅读文档时配合学习. 更多视频教程如下: CSDN 融云 Android SDK ...
随机推荐
- Ceph基本情况介绍
Ceph基本情况的介绍 Ceph是一个分布式存储软件. 它支持用3种方式存储数据,分别是:对象存储.块设备存储.分布式文件系统存储. Ceph最初的目标是做一个分布式文件系统,直到现在这个目标也不能算 ...
- Neo4j的集群架构
Neo4j的集群架构 参考资料: 1.http://lib.csdn.net/article/mysql/5742,其中有集群的集中模式master-slave.sharding.多主模式.cassa ...
- 170318 11:44:26 [ERROR] Can't start server: can't create PID file: No space left on device
数据库挂了.打开远程,进了系统,service mysqld stop 失败.service mysqld start等了好大一会,提示Timeout error occurred trying to ...
- 283. Move Zeroes把零放在最后面
[抄题]: Given an array nums, write a function to move all 0's to the end of it while maintaining the r ...
- 基于Nginx实现集群原理
1)安装Nginx 2)配置多个Tomcat,并修改端口号(两个端口号不一样即可) 3)在Nginx的Nginx.conf添加如下配置:
- 【转】request的cache-control和response cache-control不同点
原文地址:http://www.cnblogs.com/lwhkdash/archive/2012/11/04/2748291.html HTTP协议中,关于一些头域的解释很模糊,网上的解释有些甚至是 ...
- c语言实践:RS信号报告
题目: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength) 信号强度即大小. 其中R位于报告第一位,共分5级,用1—5数字 ...
- Part7-时钟初始化_lesson1
1.概念解析 1.1时钟脉冲信号 1.2时钟脉冲频率 1.3时钟源(提供时钟脉冲信号) a.晶振 b.锁相环PLL 2.时钟体系 2440: 晶振的频率.时钟体系有多少个PLL.这些PLL分别产生了哪 ...
- git之创建版本库
好吧,你知道了git既然有这么多好处,那么我们接下来就可以使用git命令来创建我们的仓库.这一节我们来学习一下如何在windows下面建立自己的仓库.首先我们先在本地创建一个主目录,比如文件名字叫le ...
- MySQL性能调优与架构设计——第6章 MySQL Server 性能的相关因素
第6章 MySQL Server 性能的相关因素 前言 大部分人都一致认为一个数据库应用系统(这里的数据库应用系统概指所有使用数据库的系统)的性能瓶颈最容易出现在数据的操作方面,而数据库应用系统的大部 ...