0


iOS开发集成framework、Bundle文件获取

一、前言

有些时候,我们开发的SDK并不需要对外隐藏,那么就可以将源码都打包给对方,也可以集成cocopods仓库,供外部使用。但有些时候,出于版权等原因,我们提供的代码只希望对方能够正常使用,却不希望对方看到内部的实现细节,就像苹果官方一样,给我们开发者提供的API只能看到.h文件以及相关的文档,这就是我们今天要实现的,也是苹果官方提供给我们的.framework。如果对SDK开发比较少的同学,可能对framework的了解相对少一点,这里给同学们推荐几篇framework的文章供大家参考学习。1、iOS自制framework详细图文流程介绍 2、包含 Bundle 资源的 framework 的正确打包方式。这篇文章并不介绍framework的制作以及怎样集成到项目中,有需要的同学可以参考前面推荐的文章进行学习,这篇文章主要介绍framework四种集成方式的注意点以及相应的bundle文件资源的获取方式(因为我在开发中遇到了不少这样的问题)。

二、framework集成的相关注意点

1、本地集成静态framework

解释:直接将静态.framework文件直接拖到项目根目录中使用的形式

这里bundle资源是包含在framework中的,所以需要两个步骤

1)在TARGETS -> General -> Frameworks, Libraries, and Embedded Content 中找到并添加framework,修改Embed嵌入方式为Do Not Embed

2)为了保证项目的mainBundle能够获取到framework里面的bundle资源,在TARGETS -> Build Phases -> Copy Bundle Resources 中找到并添加framework里面的bundle

在framework的获取图片资源方法:

NSString *bundlePath =[[NSBundle mainBundle] pathForResource:@"bundleName" ofType:@"bundle"];
NSBundle *bundle =[NSBundle bundleWithPath:bundlePath];
NSString *imagePath =[bundle pathForResource:@"ImageName" ofType:@"png"];
UIImage *image =[UIImage imageWithContentsOfFile:imagePath];

2、本地集成动态framework

解释:直接将动态.framework文件直接拖到项目根目录中使用的形式

这里bundle资源是包含在framework中的,由于是动态framework,可以采用动态加载bundle方法

1)在TARGETS -> General -> Frameworks, Libraries, and Embedded Content 中找到并添加framework,修改Embed嵌入方式为Embed & Sign

在framework的获取图片资源方法:

NSURL *url =[bundle URLForResource:@"bundleName" withExtension:@"bundle"];
NSBundle *imageBundle =[NSBundle bundleWithURL:url];
NSString *imagePath =[bundle pathForResource:@"ImageName" ofType:@"png"];
UIImage *image =[UIImage imageWithContentsOfFile:imagePath];

3、cocopods集成静态framework

解释: pod仓库中的是静态.framework文件

1)创建pod仓库,直接将做好的静态.framework文件拖到class文件夹下面,在podspec文件中配置 如:

s.vendored_frameworks =  'PodFrameWork/Classes/FrameWorks/CustomFrameWork.framework'

2)bundle这次交给cocopods去自动实现,并自动拷贝到mainBundle下,我们只需要在podspec文件中配置 如:

s.resource_bundles ={'CustomBundle'=>['PodFrameWork/Assets/*']}

3)bundle获取方法同1、本地集成静态framework

4、cocopods集成动态framework

解释: pod仓库中的是动态.framework文件

1)创建pod仓库,直接将做好的静态.framework文件拖到class文件夹下面,在podspec文件中配置 如:s.vendored_frameworks = ‘PodFrameWork/Classes/FrameWorks/CustomFrameWork.framework’

2)这次不需要cocopods帮我们实现bundle文件,bundle文件是我们制作好放入到.framework文件中

3)bundle获取方法同2、本地集成动态framework


作者水平有限,文章仅供参考,有不当之处欢迎大家在评论区补充交流。

标签: ios objective-c xcode

本文转载自: https://blog.csdn.net/weixin_44758107/article/details/127639308
版权归原作者 依然范特茜 所有, 如有侵权,请联系我们删除。

“iOS开发集成framework、Bundle文件获取”的评论:

还没有评论