uniapp开发app框架在提升开发效率中的独特优势与应用探索
809
2022-11-27
iOS制作.a类型的静态库
iOS制作.a类型的静态库 库(Library)其实就是一段编译好的二进制代码,加上头文件就可以供别人使用,一般会有两种情况要用到库: 1.某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库的形式进行封装,只暴露出头文件。 2.对于某些不会进行大的改动的代码,比方说很多大公司常用且很少变动的模块都会编译成库,这样做的好处一是可以节省编译时间,二来对于代码的管理也非常方便。 因为库是已经编译好的二进制文件了,编译的时候只需要link一下,既然提到了link那就有不同的形式了,静态和动态,与之相对应的就是静态库和动态库。 当然你代码含有大量图片资源,代码量不大并且需要精确适配不需要保密,一般就不使用库,直接使用私有组件。若代码量比较大,没有图片等资源需要精确适配,不希望别人看到源码,想减少编译时间可以使用静态库和动态库。简单的说是不希望别人看到源码就要使用库,反之可以使用普通私有组件。 基本知识:
为何支持的最低版本是8.0?并不是iOS8.0使用的有很多,实际上iOS8.0有很多配置和处理和iOS12差异很大,主要是因为苹果从iOS8.0开始支持动态库的。有的库需要同时生成动态库和静态库,为了兼容两种库的最低版本,那么只有从iOS8.0开始支持了,当然你也可以设置更高版本,游戏类的app对iOS最新版本一般要求比较高。
2.2设置适配所有模拟器架构重要
project -> buildSeting -> Build Active Architecture Only 设为NO
设置为默认的YES,那么只能支持指定版本的手机和模拟器了,所以这个一定要设置为NO。
3.设置为静态库
Mach-O Type一定要设置为Static Library,若你设置为其它的就悲剧了。这个属性是动态库和静态库的本质区别。
4. 新建公开的文件
4.1新建一个名为“TestTool 文件” 公开一个方法“TestLog”。像iOS使用动态库一样增加SDKDemoViewController页面控制器和MBProgressHUD类,SDKDemoBundle.bundle资源具体看demo中的代码。
TestTool.h
#import
TestTool.m
#import "TestTool.h"@implementation TestTool+(void)testLog{ NSLog(@"test static lib");}@end
4.2添加公开文件
在这里插入图片描述
4.2.2 添加文件到 project
4.2.3 拖拽.h到 public
5. 生成.a文件
此处注意需要生成4个
5.1修改环境
这里可以选择 Debug 和 Release 环境
4.2选择模拟器+Debug 环境+“cmd+R”生成.a;选择Generic iOS Device+Debug 环境+“cmd+R”生成.a;选择模拟器+Release 环境+“cmd+R”生成.a;选择Generic iOS Device+Release 环境+“cmd+R”生成.a。
当Products目录下的libSDKStaticDemo.a文件由红变黑说明生成一种类型的包。
此处注意需要生成4个
如此类推打出四种.a
真机-Debug版本
真机-Release版本
模拟器-Debug版本
模拟器-Release版本
最终生成结果
若没有按照4.2.4步骤操作那么你在SDKStaticDemo不能同时看到这四个公开文件。
5.3其中4个包下的include文件夹的文件都相同,所以只需要合并.a文件就可以。合并 debug 两个包和 release 两个包
注意:这里的合并指的是 1.debug 下真机+模拟器合并 2.release 下真机+模拟器合并
5.3.1将4个.a文件拷贝到单独文件夹
5.3.2 合并
打开终端 ,切换到4个.a文件所在的目录执行合并命令:
lipo -create libSDKStaticDemo-Debug-iphoneos.a libSDKStaticDemo-Debug-iphonesimulator.a -output libSDKStaticDemo-Debug.a
lipo -create libSDKStaticDemo-Release-iphoneos.a libSDKStaticDemo-Release-iphonesimulator.a -output libSDKStaticDemo-Release.a
执行如下命令效果如下:
w1:~ jiaguoshang$ cd /Users/jiaguoshang/Desktop/libSDKStaticDemo; clear; pwd/Users/jiaguoshang/Desktop/libSDKStaticDemow1:libSDKStaticDemo jiaguoshang$ lipo -create libSDKStaticDemo-Debug-iphoneos.a libSDKStaticDemo-Debug-iphonesimulator.a -output libSDKStaticDemo-Debug.aw1:libSDKStaticDemo jiaguoshang$ lipo -create libSDKStaticDemo-Release-iphoneos.a libSDKStaticDemo-Release-iphonesimulator.a -output libSDKStaticDemo-Release.aw1:libSDKStaticDemo jiaguoshang$
合并后的文件如下:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~