当前位置: 首页 > article >正文

使用Swift Package Manager怎样区分debug和release打包环境

SPM自身并不支持根据打包环境自适应是否依赖某些库。
为了解决这个问题可引入一个私有库,打包前修改该私有库即可实现release下不引用某些库的目的。

import PackageDescription
// 标记是否为测试环境,isDebug为false则不依赖FLEX和LookinServer两个库,为true则依赖这两个库
// 将该私有库放入工程目录下,build前通过脚本修改`isDebug`的值即可自适应依赖
let isDebug = false

var debugDependencies: [Package.Dependency] = []
var debugTargetDep: [PackageDescription.Target.Dependency] = []
if isDebug {
     debugDependencies = [
        .package(url: "https://github.com/FLEXTool/FLEX.git", from: "5.22.10"),
        .package(url: "https://github.com/QMUI/LookinServer.git", from: "1.2.8"),
    ]
    debugTargetDep = [
        .product(name: "FLEX", package: "FLEX"),
        .product(name: "LookinServer", package: "LookinServer"),
    ]
}


let package = Package(
    name: "MyLibrary",
    platforms: [
        .iOS(.v15)
    ],
    products: [
        // Products define the executables and libraries a package produces, making them visible to other packages.
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]),
    ],
    dependencies: [] + debugDependencies,
    targets: [
        // Targets are the basic building blocks of a package, defining a module or a test suite.
        // Targets can depend on other targets in this package and products from dependencies.
        .target(
            name: "MyLibrary",
            dependencies: [] + debugTargetDep
        )
    ]
)


http://www.kler.cn/a/517266.html

相关文章:

  • 【线性代数】基础版本的高斯消元法
  • 数据标注开源框架 Label Studio
  • 20250122-正则表达式
  • 期权帮|在股指期货中超过持仓限额怎么办?
  • vim在命令模式下的查找功能
  • Harmony Next 支持创建分身
  • 从C语言看数据结构和算法:复杂度决定性能
  • Vue-Day1
  • <论文>用于大语言模型去偏的因果奖励机制
  • mybatis在mysql库中创建表实现案例
  • 【PHP】数组转换成json
  • ComfyUI实现老照片修复——AI修复老照片(ComfyUI-ReActor / ReSwapper)解决天坑问题及加速pip下载
  • LangChain + llamaFactory + Qwen2-7b-VL 构建本地RAG问答系统
  • 利用Python爬虫与1688 API接口:高效获取商品搜索数据
  • Docker 实现MySQL 主从复制
  • 搭建CANN开发+运行环境实验报告
  • SpringBoot篇 单元测试 理论篇
  • DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(下)
  • Vue3 30天精进之旅:Day01 - 初识Vue.js的奇妙世界
  • 豆瓣API-我在IDE上标记想看的电影(低配版API文档)
  • 第6章 数据结构—列表与列表项讲解--总结
  • Android Studio安装配置
  • pyserial和pymodbus
  • HBase基础shell命令
  • 【深度学习】常见模型-卷积神经网络(Convolutional Neural Networks, CNN)
  • 最新! 在 Linux上搭建Jenkins环境!