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

这篇具有很好参考价值的文章主要介绍了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


作者水平有限,文章仅供参考,有不当之处欢迎大家在评论区补充交流。文章来源地址https://www.toymoban.com/news/detail-655246.html

到了这里,关于iOS开发集成framework、Bundle文件获取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter:Android/iOS集成Flutter模块

    一、Android工程集成Flutter模块工程: 1.使用命令创建Flutter模块工程lib_flutter(与Android工程属于同级目录): 2.更新Android工程配置: (1)将Android工程Support V4/V7包替换为AndroidX包,右键点击工程,在弹出菜单中选择 Refactor   Migrate to AndroidX...,然后在左下角弹出的框中,点击Do Refac

    2024年02月06日
    浏览(44)
  • Android Framework最难模块WMS实战作业-手机车机系统开发必备

    0-整体介绍 1-window-container.mp4 窗口层级树实战启动篇 2-displayarea-feature.mp4 窗口层级树源码分析相关 3-displayarea-draw-feature.mp4 窗口层级树绘制实战1 4-displayarea-draw-leaf.mp4 窗口层级树绘制实战2 5-displayarea-draw-leaf-2.mp4 窗口层级树绘制实战3 6-displayarea-surfacelayer.mp4 窗口层级树相关sur

    2024年02月12日
    浏览(50)
  • .Net6与Framework不同方式获取文件哈希值的性能对比

    算法:MD5、SHA1、SHA256、SHA384、SHA512 文件数:200 平台对比:.NET 6 vs .NET Framework 4.7.2 .NET 6 的性能确实远比.NET Framework要高; SHA1 性能最高,MD5次之,另外几种算法性能远低前两者;

    2024年02月07日
    浏览(37)
  • 【IOS】import导入模块或头文件错误

    xcode运行ios项目时编译报错@import的导入模块或头文件的时候报错not found 所有出现import失败的地方所引入的头文件或模块都是在项目中存在的,not found的共同特点是 引入的都是重定向形式 的。 例如: 原本的framework里的headers本应该是一个头文件的集合文件夹,但是实际上fra

    2024年02月20日
    浏览(41)
  • iOS 设置下载部分文件,如何获取完整文件的大小

    在视频的需求中,遇到这样一个需求,播放一视频的时候,要预下载 后面10条视频,但是只下载后面十条视频的前面1M 实现方法 1 创建请求时设置cacheLength 二 创建请求时,设置 请求头的Range 三 如何获取完整文件的大小 在 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDa

    2024年02月10日
    浏览(36)
  • iOS:解决Could not find a storyboard named ‘LaunchScreen.storyboard‘ in bundle NSBundle

    打开项目的:HBuilder-uniPlugin-Info.plist 删除Launch screen interface file base name 然后看图,清空掉之前的LaunchScreen.storyboard东西  再运行就可以了,我也是改自定基座出的问题略

    2024年02月12日
    浏览(35)
  • 【机器人系统集成备赛记录】IRB-120 ABB机器人扩展IO模块配置(d652和Devicenet Generic Device)

    因明年参加机器人系统集成比赛,所以记录一下。本人水平有限,敬请批评指正。 打开示教器控制面板→配置→Devicenet Device(扩展设备)→点击“添加”进入IO板参数配置。 点击模板↓,选中模板d652。 Address(地址)修改为10 vendor ID(供应商标识)修改为75 product code(产品

    2024年04月22日
    浏览(94)
  • python os模块获取文件路径

    1、 # 获取当前工作目录的上一级目录 dir_path = os.path.dirname(os.path.abspath(\\\'.\\\')) 2、获取当前路径: 3、获取当前路径的文件名: file_name = os.path.basename(os.getcwd()) 获取当前路径下所有文件名: file_names = os.listdir(os.getcwd()) 4、字符串正则化 字符串正则化(string normalization)是指将不同

    2024年02月14日
    浏览(38)
  • uniapp Android 调用5+plus 的IO模块 操作文件管理

    由于最近uniapp项目需要调5+puls,来操作手机文件增删改查,于是入坑了native.jsandroidIO,官网文档先献上 5+puls官网文档 首先介绍一下,我们存储空间有2种模式那就是 沙盒模式 和系统公共目录 我们这里用到的是沙盒模式,app的应用根目录以内存储空间(不需要授权也能访问,默

    2023年04月20日
    浏览(35)
  • springboot异步文件上传获取输入流提示找不到文件java.io.FileNotFoundException

    springboot上传文件,使用异步操作处理上传的文件数据,出现异常如下: 这个是在异步之后使用传过来的MultipartFile对象尝试调用getInputStream方法发生的异常。 java.io.FileNotFoundException: C:UsersAdministratorAppDataLocalTemptomcat.8082.9218483334936865663workTomcatlocalhostsdBusinessOnlineSchoolupl

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包