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

[Swift]同一个工程管理多个Target

1.准备

先创建一个测试工程“ADemo”,右键其Target选择Duplicate,再复制一个Target为“ADemo2”。
在这里插入图片描述
再选择TARGETS下方的“+”,添加一个APP到项目中,这个命名为“BDemo”。
在这里插入图片描述

2、管理多个Target

可以对三个target分别导入不同的框架

target 'ADemo' douse_frameworks!pod 'SnapKit'
endtarget 'ADemo2' douse_frameworks!pod 'IQKeyboardManagerSwift'
endtarget 'BDemo' douse_frameworks!pod "Kingfisher"
end

在代码中使用框架时需要区分开,可以通过在Build Settings -> Preprocessor Macros定义宏来区分。

//  ViewController.swift
//  ADemo
//
//  Created by Gamin on 2023/10/10.
//import UIKit
#if ISADEMO
import SnapKit
#endif
#if ISADEMO2
import IQKeyboardManagerSwift
#endifclass ViewController: UIViewController {override func viewDidLoad() {super.viewDidLoad()let iv = UIImageView()iv.backgroundColor = .redself.view.addSubview(iv)
#if ISADEMOiv.snp.makeConstraints { make inmake.leading.equalTo(15)make.top.equalTo(100)make.width.equalTo(100)make.height.equalTo(44)}// 这里调用IQKeyboardManagerSwift会报错
#endif#if ISADEMO2IQKeyboardManager.shared.enable = true// 这里调用SnapKit会报错
#endif}}

另外,还可以对不同的target设置不同的Info.plist、启动图和icon,比较简单就不赘述了。

3.应用

常见的例子,比如你开发了一款校园APP,需要提供给不同的学校,但要对icon和APP名称以及部分功能做差异化管理,这时候肯定首选像本文一样管理多个Target了。

再谈一个其它应用场景,比如我现在要开发一个SDK,创建了一个SDK工程,然后完成了开发,我要如何来调试和测试SDK呢?
根据经验,就本文ASDKDemo+BTestDemo这种方式会比较简单。在BTestDemo中先pod导入SDK的依赖库和一些测试框架(比如:Reveal-SDK),再导入开发的framework, 并对接口进行调用。开发中,我们只需要选择BTestDemo进行Run就可以了,可以断点调试,还可以打个包让测试去测。

http://www.lryc.cn/news/192564.html

相关文章:

  • DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档
  • 1967作为子字符串出现在单词中的字符串数目
  • CocosCreator 面试题(二)JavaScript中的prototype的理解
  • python:从Excel或者CSV中读取因变量与多个自变量,用于训练机器学习回归模型,并输出预测结果
  • pycharm连接gitlab
  • 【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!
  • PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五)
  • uniapp打包配置
  • 人大金仓分析型数据库最大量限制
  • centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口
  • 【算法|双指针系列No.7】leetcodeLCR 007. 三数之和
  • ubuntu修改IP地址
  • java springboot 通过ConfigurationProperties给第三方bean注入属性
  • windows系统安装openssl并且转换证书格式
  • 【GO】基础速成
  • 五子棋(C语言实现)
  • thymeleaf,bootstrap-fileinput 多文件上传
  • 爬虫 | 基础模块了解
  • CSS复习笔记
  • 编译linux的设备树
  • ⛳ MyBatis 中 Mapper 接口工作原理实例解析
  • Android 音频可视化
  • 刷机与救砖避坑指南
  • 软件建模知识点
  • WSL 配置 Linux
  • VS Code:CMake配置
  • Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)
  • 设计模式——20. 解释器模式
  • 多输入多输出 | MATLAB实现CNN-BiLSTM-Attention卷积神经网络-双向长短期记忆网络结合SE注意力机制的多输入多输出预测
  • 一文让你玩转Linux多进程开发