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

1.准备

先创建一个测试工程"ADemo",右键其Target选择Duplicate,再复制一个Target为"ADemo2"。

再选择TARGETS下方的"+",添加一个APP到项目中,这个命名为"BDemo"。

2、管理多个Target

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

swift 复制代码
target 'ADemo' do
  use_frameworks!
  pod 'SnapKit'
end

target 'ADemo2' do
  use_frameworks!
  pod 'IQKeyboardManagerSwift'
end

target 'BDemo' do
  use_frameworks!
  pod "Kingfisher"
end

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

swift 复制代码
//  ViewController.swift
//  ADemo
//
//  Created by Gamin on 2023/10/10.
//

import UIKit
#if ISADEMO
import SnapKit
#endif
#if ISADEMO2
import IQKeyboardManagerSwift
#endif

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        let iv = UIImageView()
        iv.backgroundColor = .red
        self.view.addSubview(iv)
#if ISADEMO
        iv.snp.makeConstraints { make in
            make.leading.equalTo(15)
            make.top.equalTo(100)
            make.width.equalTo(100)
            make.height.equalTo(44)
        }
        // 这里调用IQKeyboardManagerSwift会报错
#endif

#if ISADEMO2
        IQKeyboardManager.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就可以了,可以断点调试,还可以打个包让测试去测。

相关推荐
茶底世界之下15 小时前
同一片泳池,清透还是奶油胶片?用 Awaking 做两版成片
ios
xbzb16 小时前
Swift 对象存储建环实验 + Ceilometer 计量:两个收尾服务
swift·ring·实验·ceilometer·象存储·建环
2501_9160088918 小时前
iOS App 图标、启动屏和多语言搭配 方法,上架前使用KXBuild一次做好 App 图标
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
2501_9159184118 小时前
iOS 推送通知怎么实现,从 APNs p8 密钥到 iOS 真机收到第一条推送
vscode·ios·objective-c·个人开发·swift·敏捷流程
东坡肘子18 小时前
快速消失的硬盘容量 -- 肘子的 Swift 周报 #160
人工智能·swiftui·swift
茶底世界之下2 天前
雨夜街角裁成方图,人物与冷暖光还能共存吗?
ios
youdexiang2 天前
IOS录音APP拍照记录能和音频同步吗
ios·音视频
2501_915909062 天前
Windows 打开 Xcode 工程,编译调试 Xcode 项目并和 Mac 同事协作
ide·windows·vscode·macos·ios·个人开发·xcode
互联网江湖2 天前
iPhone Duo跌倒,国产折叠屏手机吃饱?
ios·智能手机·iphone
zwd20052 天前
词频是什么?生词滑块 zipf 3.0 到 5.0 怎么调:同一屏从 0 个生词到 11 个
ios·iphone·效率工具·英语学习·词频·屏幕翻译