美文网首页
iOS 静态库和动态库

iOS 静态库和动态库

作者: iOS乐乐 | 来源:发表于2020-05-09 09:01 被阅读0次

一 . iOS原生插件导入uni-app 图片资源包的处理,否则Xcode中图片显示,HBuilderX中的图片资源会出现图片加载失败的情况

+ (UIImage *)getImageResourceForNameFromCLShanYanSDKBundle:(NSString *)name {
    return [UIImage imageNamed:name inBundle:[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"sdk_oauth" ofType:@"bundle"]] compatibleWithTraitCollection:nil];
}

最近是写uni-app原生插件开发的时候使用到了环信的SDK, 剔除模拟器框架后的大小为180MB, uni-app打包基座限制大小是40MB,超过大小后按照次数进行额外的收费, 因为这个原因需要研究一下静态库和动态库寻找解决办法
静态库: .a和.framework
动态库: .dylib和.framework
静态库: 链接时,静态库会被完整的复制到可执行文件中,被多次使用就有多分冗余拷贝
动态库: 链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序公用,节省内存
注意:项目中使用了动态库会被苹果拒绝

静态库文件的版本共4种
·真机Debug版本
·真机Release版本
·模拟器Debug版本
·模拟器Release版本

静态库的制作


截屏2020-05-09上午9.29.31.png

①debug运行一下command+B
②release运行一下
这样回得到真机和模拟器的两个框架
调试的时候需要将两个进行合并
上线的话, 为了减少包的大小可以提出模拟器的框架

静态库外部暴露.h的步骤如何所示:


WechatIMG954.jpeg 9561588989115_.pic_hd.jpg 9551588988817_.pic.jpg

测试的时候只需要合并debug下的真机和debug下的模拟器就可以了, 上线的时候可以移除debug下的模拟器框架

终端输入
合并.a
lipo -create xxxx.a xxxx.a -output /Users/lelemeng/Desktop/xxxx.a


9571588989602_.pic.jpg 9591588990015_.pic_hd.jpg

对合并的框架移除模拟器框架示例如下

【首先进入Hyphenate.framework所在目录】
// 移除支持x86_64,i386的二进制文件
lipo Hyphenate.framework/Hyphenate -remove x86_64 -remove i386 -output Hyphenate
//替换framwork内部二进制文件
mv Hyphenate Hyphenate.framework/Hyphenate
//查看剥离后的二进制文件支持的CPU架构,如果显示armv7 arm64,就完成剥离,可上传AppStore
lipo -info Hyphenate.framework/Hyphenate

制作framework注意事项
Build Active Architecture Only 选项中将debug改成NO,会变异真机的2个架构和模拟器的两个架构, 否则分别只有1个
可以理解成编译的是当前机器的架构, 会少一个

截屏2020-05-09上午10.28.42.png

在TARGETS->Build Settings中,将 Mach-O Type 设置为 Static Library 如下图所示(将framework制作成静态库默认是动态库)

相关文章

  • iOS静态库及动态库

    2018-06-19 浅析静态库链接原理编译原理以及什么是静态库和动态库 转之: iOS 静态库和动态库(库详解)...

  • iOS静态库的开发及项目中调试

    简介   iOS中,库有两种:静态库和动态库,静态库分为.a和.framework,动态库分为.dylib和.fr...

  • iOS静态库与动态库的区别与打包

    iOS静态库与动态库的区别与打包iOS静态库与动态库的区别与打包

  • 静态库与动态库

    在iOS中,库分为静态库和动态库,它是程序代码共享的方式。 iOS静态库的形式:.a和.framework iOS...

  • iOS 封装.framework 以及使用

    .framework是什么? “静态库”和“动态库”有什么区别? iOS里静态和动态库形式 .a与.framewo...

  • iOS开发集锦之 2017.04.17

    1. iOS 静态库,动态库与 Framework 浅析 作者:Jenaral描述: 静态库与动态库的区别;iOS...

  • Framework 动态库 & 静态库

    关于 动态库 & 静态库 ,参考下面文章:iOS开发关于"框架"的那些事iOS 静态库,动态库与 Framewor...

  • iOS创建.framework文件

    iOS的库分为 .a 纯静态库只能包含代码 .dylib 动态库 .framework 包含动态库和静态库,可...

  • iOS 静态库和动态库的制作

    静态库和动态库 一、静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和...

  • 创建静态库

    iOS深入学习(创建静态库static library) 库包含静态库和动态链接库,他们之间区别是:静态库可以编译...

网友评论

      本文标题:iOS 静态库和动态库

      本文链接:https://www.haomeiwen.com/subject/zidhnhtx.html