SDK开发

开发SDK 基础知识储备!!!!

静态库 和 动态库

静态库:以.a 和 .framework为文件后缀名。
动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。
(但是苹果不让使用自己的动态库,否则审核就无法通过)

Swift不支持静态库只支持动态库

决定使用动态库
http://www.jianshu.com/p/f3b51ec4d8d4

问题!:Swift App工程引入了混合OC+Swift的Swift Framework,并使用了其中的Swift类,但在编译App工程时,却报错:
'XXXX' is unavailable: cannot find Swift declaration for this class
奇怪了,Swift代码调用Swift Framework中的Swift类,居然找不到申明。
分析了下自己的Framework,有个过程是自己写的脚本自动生成Framework的,并用lipo命令合并了模拟器和真机的Framework。
然后,不用合并的Framework而改用单独的Framework,结果,Swift App工程就编译通过了。

有一点和oc的framework不同,这里需要在target ->General ->Embedded
Binaries 中添加这个framework,添加成功后会自动在Linked Framework and Libraries中自动添加这个framework,如果只在Linked Framework and Libraries中添加这个framework会导致库无法载入(OC创建的framework应该是正常的),项目无法运行

http://www.jianshu.com/p/13ee670f21ac

http://www.cnblogs.com/xinluqi/p/5941288.html

https://www.gitbook.com/book/leon_lizi/-framework-/details 不支持动态库

http://www.cnblogs.com/rayshen/p/5330512.html Swift开发动态库遇到问题

好吧 只能开发静态库了 决定回去写OC
1.点击工程 -> BuildSetting -> 搜索mach -> 改成Static Library

1.1在 build Phases - Headers 设置公开的.h文件
1.2 other link 使用 -all_load

1.3
编译前检查一下是debug模式还是release模式,选择release模式:
Release-iphoneos 文件夹里面的东西是用在真机上的
Release-iphonesimulator 文件夹里面的东西是用在模拟器上的
如果 Scheme 是 Debug 模式,生成的文件夹就以 Debug 开头

2.合并库
lipo -create /Users/Travis/Desktop/libIMIUI.d.a /Users/Travis/Desktop/libIMIUI.s.a

-output

3.使用
genneral
Embedded Binaries
Linked 引入

4.#import <test3/MathTools.h> 会有警告
将动态库倒入项目并应用的时候,后时候回提示missing submodule xxx警告,到网上查了些资料,说是要在制作工程时

原因是: header的头文件没有全部导入到公共头文件里面
http://blog.csdn.net/id314846818/article/details/50752379

5.切记内部controller命名 一定要用自己的 避免重复!!

发现还挺简单的
调研结束
暂时不解释了

加入 libc++.tbd
libz.tbd
systemConfiguration.framework
PassKit.framework
CFNetwork.framework

//本地plist中加入
//LSApplicationQueriesSchemes
//uppaywallet uppaysdk

other link 加入 -ObjC

终于到了这一步:
来吧合并sdk

Bulid之后,在工程目录下Produces文件夹下可以看到生成的.a文件引用,右键,show in finder可以看到.a文件。
要注意Build时的选项:
<1>iOS Device编译出来的是在Debug-iphoneos目录下,真机使用,终端,在该目录下使用lipo -info **.a 可以查看你到文件类型为armv7等ARM架构。
<2>Simulator时编译出来的是在Debug-iphonesimulator目录下,模拟器使用,终端查看类型显示为i386架构。
可以使用lipo命令生成一个通用二进制lib.a lipo -create /.a /.a -output /.a 生成一个兼容两种类型的.a文件。方法虽好,但是包大小会增加。

1.打包分清楚是debug与Release的。
选择debug与Release在Xcode工具栏的Product选项现则Scheme->Edit Scheme.然后为各个运行模式选择选项。

Debug-iphoneos:应用于真机的静态库文件。Debug-iphonesimulator:应用于模拟器调试的静态库文件。

Release-iphoneos 或Debug-iphoneos :里面的是基于arm6 arm7编译出来的库文件。
Release-iphonesimulator:里面是基于i386编译出来的文件。

Debug版本与release版本区别在于调试版本与发布版本,深度区别在于其动态库的使用。其都是有相应的模拟器与真机模式的静态库文件。

最近工作的项目在测试时以debug版本测试没这问题,结果上线发布时用的release版,从市场下载下来就出现了一个严重问题,最后开发查找原因说是debug模式部分地方没有像release版那样完全释放内存,我理解的意思是release释放了,debug表面释放但是实际并没有释放,所以造成我们release版出现问题而debug没有该问题。
以下是从网上摘取的Debug和Release的区别:
Debug和Release仅仅是编译选项的不同,那么为什么要区分Debug和Release版本呢?
Debug和Release,主要是针对其面向的目标不同的而进行区分的。
Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力。
而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。
下面仅就默认的Debug和Release版本的选项进行比较,详细的编译选项可以看MSDN的说明。
我们将默认的Debug和Release的选项设置进行比较,过滤掉相同设置,主要的不同如下:

问题:
1..如果用银联插件支付 无法回调 进入webView如何让用户操作?

UPPayWinner://uppayresult?code=success&data=%7B++%22sign%22+%3A+%22kiHRqGdROa8cH4hfDCSmZdN4mLHjcfwjrGgWx3WwlMqnIOQRMrK6G8jSQ7HyGHpv4gmKzBZPhsU6kN3AOHWfnlXd%2BHKFJOq%2BR%2FZd2UhfOrBUO7YOtk8WlupPBPd3hJWoqWOUxialob1RlOy%2Blk1O2S09hig%2Fv1BF7qDNZ6C2mHWiNuQPTP2zBvf5eum%2BsVHdymJiy8zaFPoxOp%2Fm5VW7ukIydvymP7dSsqTcIkXOi91FWJHcqJh72w9ctHoZMnVzGpezTmjH5VRIC0172cCVI9yX1yJ6uqmOp8AhX%2FgVA6%2F9swMfXCluqfxZJ%2FnH6aCgw8cwukZMNzfGh1OwikgqOw%3D%3D%22%2C++%22data%22+%3A+%22pay_result%3Dsuccess%26tn%3D436582143246243806207%26cert_id%3D69597475696%22%7D

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容

  • (原文:How to Create a Framework for iOS 作者:Sam Davies 译者:Mr...
    王宪岭阅读 4,853评论 2 23
  • 本文目标:掌握封装及开发SDK的全部技巧 文章比较长,建议分模块阅读 内容提要:不同场景下如何封装及开发SDK ....
    Yochi阅读 17,791评论 12 88
  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 11,841评论 3 42
  • 任凭风信卜芳辰,浪计韶光几度春。 聚会氤氲花酿雨,离愁和梦月依人。 颖滨曾见荷钱晓,岸畔才逢柳色新。 未了生涯真意...
    诗梦斋主阅读 385评论 0 0
  • 勇气,不只是存在于战场上杀敌。生活中,任何一次转折点的选择都是对勇气的考验,看不到未来的隐患是智力不足,而看到了,...
    兀升山阅读 248评论 0 2