开发SDK 基础知识储备!!!!
静态库 和 动态库
静态库:以.a 和 .framework为文件后缀名。
动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。
(但是苹果不让使用自己的动态库,否则审核就无法通过)
Swift不支持静态库只支持动态库
决定使用动态库
//www.greatytc.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应该是正常的),项目无法运行
//www.greatytc.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如何让用户操作?