Xcode设置cocoapods库的最低兼容版本

目录

前言

1.使用cocoapods遇到的问题

2.解决办法

1.用法解释

1. config.build_settings:

2.IPHONEOS_DEPLOYMENT_TARGET

2.使用实例

3.注意事项

1.一致性

2.pod版本


前言

        这篇文章主要是介绍如何设置cocoapods三方库如何设置最低兼容的版本。

1.使用cocoapods遇到的问题

        iOS开发过程中,我们通常会使用cocoapods管理三方库,通常情况下,我们的podfile文件如下面的样子。

platform :ios, '12.0'target 'YourAppTarget' do# 其他pod配置pod 'SomePod'
end

        这个时候我们有时候会遇到cocoapods三方库版本号和当前版本号不兼容的问题。例如我们的工程需要兼容的最低的iOS的版本号为iOS12,我们通过cocoapods的方式使用了MJRefresh和Masonry两个三方库,MJRefresh最低兼容的版本为iOS12,Masonry兼容的最低版本号为iOS8,如下图所示:

        这种情况下我们需要手动修改iOS兼容的最低版本才能运行我们的项目,例如在上面的例子中,我们需要把Masonry的最低兼容的iOS版本号改成iOS12。这样的话就出现了一个问题,我们每次运行pod install命令的时候,都要手动修改三方库的iOS版本号,当我们使用的库比较多的时候,修改就变得十分繁琐,能不能通过配置自动修改兼容的最低版本呢?

        答案是可以的。就是通过修改cofing.build_setting来实现。

2.解决办法

        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0' 是用来设置Xcode项目的部署目标的。这段代码通常用于在`Podfile`中配置CocoaPods的设置,以确保你的Pods可以与指定的iOS版本兼容。

1.用法解释

        confing的一些用法解释如下:

1. config.build_settings:

        这是一个哈希,包含了许多构建设置。你可以通过这个哈希来设置各种编译选项。

2.IPHONEOS_DEPLOYMENT_TARGET

        这是一个构建设置,指定了iOS的最低部署目标版本。它告诉Xcode和CocoaPods这个项目的目标是哪个最低版本的iOS。
            设置为`12.0`意味着这个项目将支持运行在iOS 12.0及以上的设备上。

2.使用实例

         还以上面的代码为例,我们看看如何设置构建选项:

platform :ios, '12.0'target 'YourAppTarget' do# 其他pod配置pod 'SomePod'post_install do |installer|installer.pods_project.targets.each do |target|target.build_configurations.each do |config|config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'endendend
end

每一项设置和含义解释如下:

1. platform :ios, '12.0':
   - 这行代码设置了整个项目的最低iOS版本为12.0。

2. post_install钩子:

        post_install是一个CocoaPods的钩子,在所有Pod安装完成后执行。它用于对生成的Xcode项目进行一些额外的配置。

3.遍历每个target

        installer.pods_project.targets.each do |target|遍历所有的Pod target。

4.遍历每个构建配置
        target.build_configurations.each do |config|遍历每个构建配置(例如Debug和Release)。

5.设置构建设置
           config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'` 为每个target的每个构建配置设置`IPHONEOS_DEPLOYMENT_TARGET`为12.0。

3.注意事项

1.一致性

        确保你在`Podfile`中设置的`platform设置的版本号应该与config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] 一致,以避免混淆和潜在的问题。

2.pod版本

        一些Pods可能不支持非常旧的iOS版本,所以在选择iOS部署目标时要考虑到所有Pods的最低要求。​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/20441.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

回溯法(复习笔记一)

目录 前言 回溯法引入: 一、回溯法 二、实例分析 数字组合问题 三、基本步骤 回溯法的基本步骤: 剪枝的正确性: ※重点提醒 四、深度剖析 递归算法: 非递归算法: 总结 前言 回溯法引入: 搜索…

qt学习笔记

qt的对象树 在 Qt中创建对象的时候会提供一个 Parent 对象指针,Q0bject是以对象树的形式组织起来的。 当你创建一个 Q0biect 对象时,会看到 Q0biect 的构造函数接收一个Q0b.ject指针作为参数,这个参数就是 parent,也就是父对象指…

Typescript高级: 深入理解infer关键字

概述 在 TS 中,infer 是一个高级类型操作,特别是条件类型和映射类型中非常有用的关键字它在泛型中使用也会是一个强大工具,增强了类型推断的能力,让开发者更灵活地处理和操作类型它允许在泛型类型推导过程中捕获一个具体的类型&a…

三次样条插值的实现(Matlab)

一、问题描述 三次样条插值的实现。 二、实验目的 掌握三次样条插值方法的原理,能够编写代码获得自然、抛物线端点以及非纽结三次样条。 三、实验内容及要求 找出并画出三次样条S,满足S(0) 1, S(1) 3, S(2) 3, S(3) 4, S(4) 2,其中…

Spring Boot 开发 -- 过滤器与拦截器详解

引言 在Web开发中,经常需要对请求进行预处理或在响应后进行后处理,Spring Boot提供了过滤器和拦截器两种机制来实现这一需求。虽然它们都可以用来处理HTTP请求和响应,但在使用场景、执行顺序和配置方式上存在明显的差异。本文将详细讲解Spri…

LeetCode 2928.给小朋友们分糖果 I:Java提交的运行时间超过了61%的用户

【LetMeFly】2928.给小朋友们分糖果 I:Java提交的运行时间超过了61%的用户 力扣题目链接:https://leetcode.cn/problems/distribute-candies-among-children-i/ 给你两个正整数 n 和 limit 。 请你将 n 颗糖果分给 3 位小朋友,确保没有任何…

【面试宝藏】Go基础面试题其一

探索Go语言:特性、用法与最佳实践 Go语言(Golang)自发布以来迅速成为开发者社区中的热门选择。本文将探讨Go语言的优势、数据类型、包管理、类型转换、并发处理、同步机制、通道特性及其使用中的注意事项等内容,并回答一些常见的…

微信小程序的事件绑定方式

微信小程序的事件绑定方式主要包括以下几种,每种方式都有其特定的用法和特性: 基础绑定方式: bind:这是最基础的绑定方式,用于绑定事件处理函数。例如,bindtap用于绑定点击事件。当组件触发事件时&#xf…

易语言贪吃蛇游戏(附带源码)

易语言贪吃蛇游戏 效果图源码说明源码领取下期更新预报 效果图 源码说明 本源码用易语言来编写,供大家研究,保留版权,谢谢! 源码领取 易语言贪吃蛇游戏源码领取地址:https://www.123pan.com/s/ji8kjv-TKPU3.html提取…

Oracle中rman的增量备份使用分享

继上次使用RMAN的全量备份和异机还原以后,开始研究一下增量备份和还原的方法。相比于全量RMAN的备份还原,增量的备份还原就相对简单。本实践教程直接上操作,还是回归到一个问题,就是关于两个数据库创建时候,必须保持or…

泄漏libc基地址

拿libc基地址 方法一:格式化字符串 格式化字符串,首先确定输入的 AAAA 在栈上的位置(x)。使用 elf.got[fun] 获得got地址。利用格式化字符串,构造payload泄漏got地址处的值,recv接受到的字符串中&#xf…

linux部署运维1——centos7.9离线安装部署web或java项目所需的依赖环境,包括mysql8.0,nginx1.20,redis5.0等工具

在实际项目部署运维过程中,如果是云服务器,基本安装项目所需的依赖环境都是通过yum联网拉取网络资源实现自动化安装的;但是对于一些特殊场合,在没有外部网络的情况下,就无法使用yum命令联网操作,只能通过编…

网络报文协议头学习

vxlan:就是通过Vxlan_header头在原始报文前面套了一层UDPIP(4/6)Eth_hdr 需求背景:VXLAN:简述VXLAN的概念,网络模型及报文格式_vxlan报文格式-CSDN博客 如果服务器作为VTEP,那从服务器发送到接…

jmeter之MD5加密请求秒杀接口教程

前言: 有时候在项目中,需要使用MD5加密的方法才可以登录,或者在某一个接口中遇到 登录获取token后才可以进行关联,下面介绍下遇到的常见使用 一、第一种方法:使用jmeter自带的函数助手digest 选择工具,选…

并查集拓展(扩展域并查集)

事实证明,扩展域并查集应该在带权并查集前面讲的,因为比较好理解,而且回过头看带权并查集可能也会更轻松一些。 https://www.luogu.com.cn/problem/P1892https://www.luogu.com.cn/problem/P1892 题目描述 现在有 𝑛 个人&…

矩阵转置(函数)

题目描述 写一个函数,使给定的一个二维数组(33)转置,即行列互换。 输入 一个3x3的矩阵 输出 转置后的矩阵 // 输入示例: 1 2 3 4 5 6 7 8 9 输出示例: 1 4 7 2 5 8 3 6 9…

算法解析——单身狗问题

欢迎来到博主的专栏:算法解析 博主ID代码小豪 文章目录 什么是单身狗问题leetcode_136——只出现一次的数字I使用位运算解决单身狗问题。 leetcode_137——只出现一次的数字II统计二进制数解决单身狗问题leetcode_260 只出现一次数字III分区域按位异或解决问题。 总…

C语言:如何写文档注释、内嵌注释、行块注释?

技术答疑流程 扫描二维码,添加个人微信;支付一半费用,获取答案;如果满意,则支付另一半费用; 知识点费用:10元 项目费用:如果有项目任务外包需求,可以微信私聊

微信小程序怎么注册账号

要注册微信小程序账号,你需要遵循以下步骤: 访问微信公众平台: 首先,你需要访问微信公众平台的官方网站(https://mp.weixin.qq.com/)。 注册或登录: 如果你已经有一个微信公众平台账号&#xf…

【scikit-learn009】异常检测系列:单类支持向量机(OC-SVM)实战总结(看这篇就够了,已更新)

1.一直以来想写下机器学习训练AI算法的系列文章,作为较火的机器学习框架,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架OCSVM模型相关知识体系。 3.欢迎批评指正,欢迎互三,跪谢一键三连! 4.欢迎…