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

手机游戏开发者 2024-9-27 07:58:46 84 0 来自 中国
一、前言

        有些时间,我们开发的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
作者水平有限,文章仅供参考,有不妥之处欢迎各人在品评区增补交换。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 18:23, Processed in 0.152578 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表