生成.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文件,资源文件
- 生成.a文件以及生成时的问题、使用.a文件以及使用时的问题
- Linux动态库.a与动态库.so的生成与区别、以及.so库文件的封装与使用
- 使用tinyxml生成文件时,出现不同的文件格式问题
- gcc下.a库文件的编译生成和使用
- 关于使用javah生成头文件时无法访问class文件的问题
- 运行protoc 把.proto文件生成.pb.go文件,遇到的问题以及解决方案
- 如何使用A*插件实现移动以及网格的动态生成
- 使用开发工具生成映射文件出现的问题
- 如何引用第三方提供的.so库文件以及如何使用javah生成.h文件
- 使用Mybatis生成工具自动生成实体类和对应的mapper映射文件以及接口文件
- Android studio 使用Cmake完成C/C++ 的使用以及生成so文件
- Android studio 使用Cmake完成C/C++ 的使用以及生成so文件
- Android开发中遇到的R文件无法生成以及adb无法启动问题的解决
- WebRTC源码下载以及工程文件生成过程中小白的我遇到的问题-20140303
- javaDoc和java文件的注释以及javadoc生成出现的问题【dos option选项】
- 使用designer-qt3设计界面,生成对应.h和.cpp文件时遇到的问题
- Python 中使用 ogr 生成 shape 文件时的中文乱码问题
- 尝试使用Androidfby反编译APK生成文件时遇到的问题
- iPhone8十连爆,却是iphoneX营销手段?牺牲太大
- configure: error: C++ preprocessor "/lib/cpp" fails sanity check
- 面试记录第二十四节——(多线程)
- http接口
- Hibernate映射—— 一对一单向关联映射
- 生成.a文件以及生成时的问题、使用.a文件以及使用时的问题
- linux 下 `dirname $0`
- C++中的多态特性总结
- C语言 不使用strcpy 函数实现字符串复制功能
- RecyClerView 的一个点击事件
- Java编程零基础快速入门教程索引
- CentOS系统更换软件安装源 为阿里云
- Spring常用注解汇总
- 实验4 Linux系统管理