生成.a文件以及生成时的问题、使用.a文件以及使用时的问题

来源:互联网 发布:java开发实战经典pdf 编辑:程序博客网 时间:2024/06/07 03:02

制作.a文件供他人使用,以及集成.a文件时的坑,从个人实际项目出发,列举项目中的出现的问题,供大家参考

我的开发环境xcode9.0

-1.1 xcode新建项目 选择Framework&Library->Static Library
这里写图片描述

-1.2 添加自己的文件。我这里是在别的地方用demo开发完成之后,将需要的部分制作成.a,我的文件是直接贴过来的,最后的结构目录如下图,目录中上面的几个是一些第三方的框架,PaySDK是要提供给别人使用的。
这里写图片描述
这里写图片描述

-这里文件结构中含二级文件夹,所以要设置下连接路径
这里写图片描述

-1.3 暴露的.h文件(供他人使用),这里只要留出别人要用的.h文件就行了,如我的项目,只要留出PaySDK.h 和 PaySDK.h中引用到的.h文件就可以了,第三方的文件没必要放进来
这里写图片描述

-1.4 要编译的.m文件,这个地方我是将所有的.m文件全部加入(第三方框架的和PaySDK的)
这里写图片描述

-1.5 编译生成.a文件 直接编译就行(command+B),列举下自己项目出现的问题
1.5.1 文件含二级目录 或者 含.pch文件 记得改下链接路径和Prefix Header的路径

1.5.2 mrc 和 arc 混编,一般情况下现在的编译都是默认arc的,但是一些老的代码是用mrc写的。在arc下使用这些老的代码就会出问题,在mrc的文件后添加-fno-objc-arc就ok
这里写图片描述
在mrc环境下使用arc文件 ,添加-fobjc-arc

1.5.3 Target->Build Settings->Build Active Architecture only 设置成NO
这里写图片描述

1.5.4 如果项目中用到分类(category)在Other Linker Flags 中添加-ObjC
这里写图片描述

1.5.5 确保各种机型能用 (一般是为了兼容老手机)
这里写图片描述

1.5.6 图片 等资源最好使用bundle文件

1.5.7 我的项目中使用到了JSONKit第三方框架,这个框架已经没人维护了,建议尽量不要使用。在xcode7之后,JSONKit可能会导致崩溃,将方法JSONString 重命名(一般是添加前缀,这个就是开发第三框架时的注意事项,不然可能会和系统的或者别的第三方冲突)

我发现的可能产生问题的地方,就是上面几点,有些我也不大清楚这样设置的原因,但是从我上网看到的资料和实践证明,这样是没错的。

1.6 合并各种.a, .a分成真机和模拟器版本,每种又有debug 和 release两种。
编译的时候真机选Generic iOS Device 不要真的选自己的手机
模拟器随便选一个就好了
这里写图片描述

debug和release
这里写图片描述
这里写图片描述

编译完之后 看目录结构下的Products 下面的.a文件原本是红色字体(可以看上面的图片),正常生成了.a之后变黑色
这里写图片描述

合并文件,到控制台使用命令行(路径自己搞定)
格式如 lipo -create 第一个.a的路径 第二个.a的路径 … -output 合并后的.a路径
例子:lipo -create /Users/apple/Desktop/Release-iphoneos/libpay2.a /Users/apple/Desktop/Release-iphonesimulator/libpay2.a -output /Users/apple/Desktop/Release_libpay.a

使用.a文件

接下来集成刚刚生成的.a文件

2.1 添加文件 ,添加.a文件,暴露的.h文件,资源文件
这里写图片描述

阅读全文
0 0