Swift OC 为iOS App设置多环境配置(最快最简单)

工程swift与OC混编改造 因此无论A和B是用什么语言编写的,只要编译器B本身能够识别出对应的语言A的声明,那么就可以在B的编译过程中标记A.function,并产出规定格式的.o文件。编译阶段,B.m将B自身的方法地址全部编入符号表,但是编译的过程会碰到对A.function的调用,这个时候编译器检查A.function是否有声明,明确有(跟着A.h头文件copy过来的),但是并没有相应的实现,因此会将A.function的引用做一个特殊标记,并在重定位表中记录,等待静态链接成功后修改为指向A.function真实所在的地址。 阅读详情

Swift OC 为iOS App设置多环境配置

前言

用Swift编写的iOS工程,现在要区分开发环境和生产环境,用最简单的分Target的方法搞定,看完这篇文章10分钟后搞定。
实现思路如下:
1、在原target上复制一个target,称为target_copy
2、修改target_copy的info.plist的名称和路径,对应target设置不同的Bundle ID,和证书
3、在target_copy的Build Settings里设置宏定义
4、根据不同target的宏定义,用预编译宏来判断不同的环境


一、复制target

选中工程的project -> targets,右键选择Duplicate,如图实例:

在这里插入图片描述

二、修改info.plist的名称和路径

复制target后会生成新的info.plist,修改成你想要的名称
在这里插入图片描述
修改info.plist文件的名称路径

在这里插入图片描述
不同的target设置不同的BundleID和打包证书

在这里插入图片描述

三、设置宏

swift设置方法

  • 选中 target —> Build Settings —> 搜索 Swift Compiler - Custom Flags
  • 展开 Active Compilation Conditions 进行设置,只能这样写:DEV, 不能像OC一样设置DEV=1
  • 展开 Other Swift Flags 同样设置 DEV,需要这样写:-D DEV,填完后是 -D 和 DEV 分成两行的
    在这里插入图片描述

OC设置方法

  • 选中 target —> Build Settings —> 搜索 Preprocessor Macros
  • 在Preprocessor Macros中设置DEV=1
    在这里插入图片描述
swift和OC的设置方法是不一样的,如何项目采用混编,swift和OC都要用预编译宏的话,那以上两种方法都需要进行设置

四、 使用预编译宏

如何使用宏来区分开发环境和正式环境呢,看代码,这样选择不同的target会编译出不同的App,也就有不同的环境。

#if DEV
        
    let environment:environmentType = .development

#else
        
    let environment:environmentType = .production
        
#endif

注意

swift工程和objective-c工程在设置宏的时候会不同,如果是混编,两个地方都要设置上。
有问题欢迎留言评论。

swift5.1学习-13.从OC到Swift 1.注释标记MARK、TODO、FIXME MARK: 类似于OC中的 #pragma mark MARK: - 类似于OC中的 #pragma mark - TODO: 用于标记未完成的任务 FIXME: 用于标记待修复的问题 2.条件编译 // 操作系统:macOS\iOS\tvOS\watchOS\Linux\Android\Windows\FreeBSD #if os(macOS) || os(iOS) // CPU架构:i386\x86_64\arm\arm64 #elseif arch( 阅读详情

相关推荐

iOS OC与Swift混编之桥接文件

在项目导航器中,选择项目文件,然后选择项目的目标。在文件名中输入桥接文件的名称,例如"MyProject-Bridging-Header",然后点击"Create"。创建桥接文件并配置项目设置后,我们可以在Swift中导入OC的头文件,并在Swift代码中使用OC的类和方法。需要注意的是,在桥接文件中只能导入OC的头文件,而不能导入Swift的文件。如果需要在OC中使用Swift的代码,可以使用"生成的接口头文件"(Generated Interface Header)来访问Swift代码。

BitNetO的博客 2551

iOS开发 - 适合工程多环境切换(swift环境),适合经常打很多不同环境包的人

OC环境设置方法:点击前往 这篇博客只做为对oc版本的补充,所以就不一步步来操作了,不知道怎么操作的可以点击上面的链接查看oc版本的配置。 swift项目要想达到同名文章oc版本的效果,有两种设置方法,一种是新增几步操作,另一种是全新的配置方法,更简单,下面,我来详细说明这两种方法的使用和差异: 1.照着链接中oc版本的配置进行配置,配置好后,swift项目无论怎么切换都处于DEBUG模式下...

CodingFire的博客 2831

RaiDrive+AList保姆级教程:5分钟搞定OneDrive/百度网盘挂载到本地(附WebDAV配置)

本文提供RaiDrive+AList的保姆级教程,5分钟内实现将OneDrive/百度网盘挂载到本地的详细步骤,包括WebDAV配置。通过AList统一转换云存储协议,RaiDrive虚拟磁盘挂载,显著提升多网盘管理效率,适合需要跨平台操作文件的用户。

weixin_28331555的博客 455

Swift 多个Target环境配置

配置多Target可以让我们方便的实现多个功能相似,但又有所不同的IOS项目,以提高我们的开发效率。这其中又以OC项目和Swift项目有所不同。这里以Swift环境为例子创建多个Target工程. 1.创建一个新的Swift工程,并Duplicate多个Target. (1) ![请添加图片描述](https://img-blog.csdnimg.cn/img_convert/623897dc45caa54807f461d3a6388a74.png) (2) ...

周为的博客 1509

huggingface 镜像站推荐

在做 Ai 应用开发或者学习的时候,我们经常需要下载各种模型,而 huggingface 的模型下载速度很慢或者根本就连不上,这里推荐一个 huggingface 的镜像站,速度很快,可以大大提高我们的效率。

t951984189的博客 1万+

实战STM32G0驱动DRV8870/AT8870:PWM+DMA精准调速与H桥衰减模式详解

本文详细介绍了如何使用STM32G0单片机结合DRV8870/AT8870电机驱动芯片实现直流有刷电机的精准控制。重点讲解了PWM与DMA结合实现高效调速的硬件配置与软件驱动方法,并深入剖析了H桥快衰减与慢衰减模式的工作原理及应用场景,为嵌入式电机控制项目提供了完整的实战解决方案。

c7d8e9的博客 595

iOS之深入解析多环境配置的实现方案

一、多 target 形式配置多环境 如下所示,选择工程 TARGETS,新创建一个 targets: 创建完成后,可要发现产生了一个 plist 文件,这个 plist 就是对应新创建的 target: 修改 target 名为 LoginApp-Dev,target 是一个全新生成的,因此需要修改 bundle ID,设置为 com.ydw.LoginApp-Dev,同时它也有一个自己的 plist 配置文件,也就是上面一起生成的,也修改为 LoginApp-Dev-info.plist,

╰つ栺尖篴夢ゞ 7664

GD32F303实战:用定时器4触发ADC2+DMA,实现10ms精准采样1024点的完整流程

本文详细介绍了在GD32F303微控制器上使用Timer4触发ADC2配合DMA传输,实现10ms精准采样1024点的完整方案。从硬件架构设计、时钟树配置到定时器参数计算,提供了完整的工程实现流程和常见问题排查方法,适用于工业传感器监测等高实时性场景。

weixin_29194693的博客 433

[Swift]判断APP是开发环境还是生产环境

为你的开发环境添加 -D后跟你的自定义宏名称。例如,如果你想要一个名为 DEVELOPMENT 的宏,你会添加 -D DEVELOPMENT。在搜索栏中输入 “Swift Compiler - CustomFlags” 或 “Other Swift Flags”。简而言之,直接用代码运行安装的APP处于开发环境,打包出去安装的APP处于生产环境。实际开发中,比如调试和内购等功能,需要对开发环境和生产环境区分处理。在顶部的导航栏中,选择你的应用的target。打开你的 Xcode 项目。

Gamin 2421

一个三极管和稳压管构成的简易稳压电源

一、对电压精度要求不高的场所可以使用本文中所述的简易稳压电源(电流变化引起 的基极-发射极的压降 变化 对输出电压来说可以容忍)二、根据负载实际需求选择三极管,不同的三极管集电极电流不同,电流放大倍数不同(1、尽量选择负载电流(iC 或 iE)上限时,hFE仍然比较理想的三极管,2、一般三极管对基极电流没有限制,可以适当调整基极电流以获得所需输出电流)

五花带点肉 1万+

高德地图JSAPI中旋转Marker点标签图片时候,且不旋转lable内容方法。

高德地图JSAPI中旋转Marker点标签图片时候,且不旋转lable内容方法

weixin_42960380的博客 2499

Xcode多环境配置

"I walk slowly, but I never walk backward."我走得很慢,但从不后退主要内容:1.区分Project、Target、Scheme2.多Target 配置3.Scheme配置4.xcconfig文件配置一、区分Project、Target、Scheme•Project:是一个项目的整体,相当于一个仓库,包括了所有的代码和资源文件;•Target:相当于一个具体的产品,包含了对于代码,资源文件的具体使用规则和配置;•Scheme: 对指定Target的环境进行配

梧雨北辰的博客 1230

CMOS Sensor的调试经验分享

我这里要介绍的就是CMOS摄像头的一些调试经验。 首先,要认识CMOS摄像头的结构。我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头、感应器和图像信号处理器构成。一般情况下,集成好的模组我们只看到外面的镜头、接口和封装壳,这种一般是固定焦距的。有些厂商只提供芯片,需要自己安装镜头,镜头要选择合适大小的镜头,如果没有夜视要求的话,最好选择带有红外滤光的镜头,因为一般的sensor都...

camerall 3761

15、OC与Swift的混编

在使用Swift进行iOS开发的过程中,经常涉及到Swift与OC混编的情况,有时主工程是OC的需要另外编入Swift代码,而有时主工程是Swift的需要另外编入OC代码。这其中涉及到修改一下XCode的工程配置。 1、在同一个工程中的混编 在Swift 5.1中,两种混编的实现步骤: Swift访问OC:只需要在桥接文件(ProductName-Bridging-Header.h)中导入需要暴露给Swift的OC类,即可在Swift中访问相应OC类及方法。 OC访问Swift:在OC类中导入Pro

重楼的博客 3583

嵌入式视频应用开发者必读:嵌入式Linux+FFmpeg硬件编解码实战指南

在嵌入式Linux上,FFmpeg支持多种硬件加速API,比如VAAPI、VDPAU、CUDA,以及针对特定平台的专用接口(如NVIDIA的NVENC、Intel的QSV、ARM的Mali)。FFmpeg的硬件解码通过-hwaccel参数启用,咱们以常见的H.264和HEVC(H.265)格式为例,展示如何用VAAPI和V4L2实现高效解码。: FFmpeg硬件加速需要额外的库,比如libva(VAAPI)、libv4l2(V4L2)或libnvcodec(CUDA)。

大模型大数据攻城狮的专栏 2201

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Swift与OC混编过程中的配置

级别: ★★☆☆☆ 标签:「iOS」「Swift 」「Swift与OC混编」 作者: dac_1033 审校: QiShare团队 在使用Swift进行iOS开发的过程中,经常涉及到Swift与OC混编的情况,有时主工程是OC的需要另外编入Swift代码,而有时主工程是Swift的需要另外编入OC代码。这其中涉及到修改一下XCode的工程配置,还有一些其他细节,下面我们就来介绍一下。 1. ...

weixin_30595035的博客 345

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

iOS的热更新:OC热更新、Swift热更新、SwiftUI样式的热更新、OC与Swift对比

通过JSExport协议暴露 Swift 方法给 JS:swift// 定义协议(需继承 JSExport)// 暴露给 JS 的方法:显示弹窗// 暴露数据给 JS:当前用户信息// 实现桥接类// 持有视图控制器用于操作UI// 实现弹窗方法alert.addAction(UIAlertAction(title: "确定", style: .default))// 用户信息return ["name": "张三", "age": 25]

idealPC的专栏 1128

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

1、iOS 多环境配置

Project:包含了项目所有的代码,资源文件,所有信息。 Target:对指定代码和资源文件的具体构建方式。 Scheme:对指定Target的环境配置。 当设置多个Target时、比如复制了一份Target工程: 修改了Target名字、需要将对应的Info.plist文件名称改为一致、否则会报错找不到对应文件。 需要修改Bungle ID 、这样才是不同的项目。当分别运行两个Target时、会出现两个App包。 通过这种方式可以实现多环境配置 当前两个Target操..

Holothurian 597

Xcode 新建iOS13以下项目(OC、Swift)

1.新建项目 2.解决ios13以下运行闪退问题 1)删除SceneDelegate.swift 官方文档: In iOS 13 and later, use UISceneDelegate objects to respond to life-cycle events in a scene- based app. 这个场景呢,如果不使用ipad的多窗口就不建议使用 2)删除 Mai...

小狼的博客 3389

ios使用swift和oc混编framework_swift逆向iOS工程

swift相比OC来说,难度要大一些,其方法调用类似于C++,反汇编出来都是sub_xxx之类的调用,但是swift工程的底层还是Cocoa,而iOS系统的Cocoa层目前还是OC开发的,并且大部分swift App也都是混编的工程,虽然难度比起OC工程来说,会稍微大一点,并且资料也不多,但是只要牢牢掌握swift对象的内存模型,以及方法调用的参数传递,就不会是什么难事。1.砸壳,并创建...

weixin_36035585的博客 1206

iOS Swift URL Scheme APP跳转safari以及跳到另一个APP

本人亲测有效!更多交流可以家魏鑫:lixiaowu1129,公重好:iOS过审汇总,一起探讨iOS技术! OC版本语言 首先在plist文件里面设置。 URL identifier 一般为反域名+项目名称 (尽可能保证少重复) URL Schemes是一个数组。一个APP可以添加多个。该参数为跳转时使用的标识。 1:跳转safari比较简单 NSString *iTunesLink = @"http://www.xxxx.com";[[UIApplication s

Lee坚武的博客 1523

OC项目转Swift总结

运行环境:Xcode 11.1 Swift5.0 最近项目需要从Objective-C(以下简称OC)转到Swift,期间遇到一些问题,记录下来方便以后查阅。 OC转Swift有一个大前提就是你要对Swift有一定的了解,熟悉Swift语法,最好是完整看过一遍官方的Language Guide。 转换的过程分自动化和手动转译,鉴于自动化工具的识别率不能让人满意,大部分情况都是需要手动转换的。 自动化工具 有一个比较好的自动化工具Swiftify,可以将OC文件甚至OC工程整个转成Swift,号称准

阿福的专栏 1243

Flutter iOS OC 混编 Swift 遭遇动态库和静态库问题填坑

Flutter 在 iOS 上的编译问题相信大家多多少少遇到过,不知道大家在搜索这方便的问题时,得到的答案是不是让你 clean 或者 install 多几次,很多时候就算解决完问题,也是处于薛定谔的状态,所以本篇也简单记录下 Flutter 开发中,OC 混编 Swift 遭遇动态库和静态库的问题,希望对“蒙圈”中的你有点帮助。 首先,当我在一个 OC 项目里接入一个 Swift 插件,可能会遇到什么问题? 如下图所示,如果你是一个比较老的 Flutter 项目,那可能会出现 swift 插件出现 no

恋猫de小郭的博客 4057

【iOS】OC Swift混编

OC Swift混编 iOS程序的入口 在AppDelegate上面默认有个 @main 标记,这表示 编译器自动生成入口代码(main函数代码), 自动设置AppDelegate为APP的代理 也可以删掉 @main,自定义入口代码:新建一个main.swift文件 import Foundation import UIKit class AYApplication: UIApplication {} UIApplicationMain(CommandLine.argc,

BestpayTech的博客 506

swift app编译linux,iOS App 编译过程

这篇文章是对于自己学习 App编译过程的一个总结学习的相关文章本文的大纲大纲.png为何要了解自己的兴趣,解开一些疑惑;有利于解决一些编译过程中出现的问题;对于优化App有很大的帮助。什么是编译为什么要编译我们通常所使用的编程语言编写的代码,计算机的CPU(只能执行二进制代码)无法执行,所以要编译。为什么要编译什么是编译利用编译程序将高级语言所编写的代码变为CPU可执行的代码的过程就叫编译。编译_...

weixin_39867212的博客 202
上一篇: 苹果审核Guideline 1.4.1 - Safety - Physical Harm
下一篇: macOS系统如何读写NTFS格式的硬盘
CoderDCLiu
博客等级 码龄10年 10粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值