移动 前端 Python Android Java

轻松玩转自定义ios

2016-11-21  本文已影响0人  夏天不冷

1.库的介绍。

2.制作库:

下面有请我们的攻城利器闪亮登场!!!


Snip20161120_13.png

你没有看错在开发ios库时,Xcode为我们提供了两个开发工具,左边工具是生成后缀为.Framework的库的,默认生成的是动态库,开发语言是可选的(Swift或者OC),;右边工具只能生成后缀为.a的静态库,开发语言不可选(只能是OC)
说了辣么多,到底我们该选哪个呢?
其实上文我已经给出答案:"项目中如果使用了自制的动态库,不能被上传到AppStore",所以实际开发中我们常用的是右边的工具(Cocoa Touch Static Library)来自定义静态库,当然了这也并不绝对下文我会告诉你如何使用Cocoa Touch Framework 制作静态库顺利上传AppStore。

2.1如何自定义.a静态库

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

注意:
观察编译前后:


Paste_Image.png Paste_Image.png

让我们进入里面一探究竟!

Paste_Image.png Paste_Image.png

从里面内容我们也可以发现我们编译是在调试(Debug)模式下,并且是区分设备的,此时显示时的是Phone模拟器 => 验证了我们之前的说法,编译创建的库是分设备(架构)的。

之前我们考虑好了各个环境下都应该是一次编译处处运行,是时候该考虑模拟器和真机通用的时候了,模仿模拟器的编译过程我们当然首先也要编译生成一个真机架构下的库

Paste_Image.png

再次进入库


Paste_Image.png

两个库!!不可能一次拖两个库吧!!让我们来合并一下他们好了。
终端命令补充:

为了验证我们合并是否成功,我们先分别查看他们所支持的架构:
先看真机的:

Paste_Image.png

再看模拟器:

Paste_Image.png

接下来进入最激动人心的时刻:合并

Paste_Image.png

合并成不成功,验证一下就可以了

Paste_Image.png
恭喜你,还差最后一步😓
生成了一个指定的合并库,总不能就直接拖它进入你的项目吧(库是看不到源码的,你知道怎么使用??这下你该知道头文件暴露的好处了吧,暴露了你就应该把它和你新生成的库存放在同一个文件夹下呀!!!)具体操作如下 Paste_Image.png

最后试试你的库到底好不好使(测试下自己会不会用😝)


Paste_Image.png

2.2如何自定义.Framewor静态库
声明:默认情况下利用Cocoa Touch Framework 制作的库为动态库,动态库虽然能在模拟器下正常使用,但是不能上传AppStore,故我在这里不做深入介绍。其制作过程几乎与制作.a静态库一样。

一.编译.framework静态库

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

3实际开发中如何自定义库
1.直接新建一个库,写代码 -> 编译 -> 合并 -> 好了??文件一多,你能确保百分百正确?故这种方式不可取!!
2.将两个程序,一个测试,一个写库。。。可以,只要你不嫌麻烦!!
3主流:边开发边调试静态库
操作如下:

Paste_Image.png

接下来操作与常规开发一致,当确保库无误之后,切换编译Target,转为库,再分别编译 => 合并

注意:
1.如果制作的是动态库的话,一定要embeded binaries中将库导入一下,
2.如果编译的静态库中有分类的话必须在 Build Settings --> Other Linker Flags 中加 -Objc 如果还崩溃,还得加上 -all_load

3.关于在静态库中添加资源,一般使用的是bundle文件夹,如何创建呢?很简单先创建一个文件夹,然后将所需资源扔进去,最后将文件夹名称加上后缀bundle就ok了。***注意,默认的静态库编辑是不会将bundle一起编译进去的,所以这个文件夹需要我们手动添加到使用静态库的工程中去。
4.如果在swift中使用OC动态库,可不用建立桥接文件
5.用swift建立动态库:记得类和方法需要public 或open 具体看需求

4.关于库的那些坑!
1添加自定义动态库位置得手动添加!!!


Paste_Image.png

修改如下:

Paste_Image.png

2.合并库后的取名注意不要随便取,尽量与原库名一致,否则一致报错

Paste_Image.png

(对了,如果你想提升用户体验,那么你真正用到项目中的编译好的静态库其实只要支持真机的架构就行,那样app的占用空间会相对很小)

上一篇下一篇

猜你喜欢

热点阅读