美文网首页很常
多环境配置的三种方式

多环境配置的三种方式

作者: Bepawbikvy | 来源:发表于2021-02-20 15:19 被阅读0次

    多环境配置

    Project:包含了项目所有的代码,资源文件,所有信息
    Target:对指定代码和资源文件的具体构建方式
    Scheme:对指定Target的环境

    方式一

    TARGETS选中APP右击Duplicate复制一份APP,并重命名如LoginAPP-Dev开发版APP。修改LoginAPP-Dev下的Bundle Identifier,后面加个-Dev进行区分,产生新的plist文件名修改同理。

    image.png
    这里可以看出我只是复制了一种构建模式,并没有产生新的代码。
    增加区分也可以通过图标进行区分
    image.png

    预先定义宏

    image.png
    Debug模式下自定义宏DEV=1Release模式下自定义宏DEV=0 并可以生效。
    OC环境下.png

    swift环境下,找到Other Swift Flags配置-DEV变量

    swift环境下.png
    在swift代码里进行判断
    image.png

    在操作的过程中,发现要在LoginAppLoginApp-Dev来回配置,甚至还要修改info.plist,让其生效,配置过程繁琐难免忽略出现差错。

    info路径修改.png
    缺点
    • 生成多个info.plist文件
    • 配置繁琐易混乱
    方式二

    这里需要选中PROJECT-Info-Configurations创建自己想要的编译环境如Beta

    image.png
    其实是与Edit Scheme是相通的,打开Scheme发现多了Beta
    Schema.png
    一般开发中,存在内网外网,甚至多个,像debug对应一个host url,bate对应一个host url,通过这种方式我们来创建一个。首先选中Build Settings跳到最下面,点击+Add User-Defined Setting
    image.png
    定义自己的scheme
    image.png
    这个时间发现HOST_URL下也是对应的BetaDebugRelease这三个。
    然后根据你的需求在每个下面配置你的host url
    image.png
    要想在项目使用,还需把HOST_URL创建到info.plist文件中,通过变量的形式配置,并暴露出来。
    info.plist文件配置.png
    AppDelegate.m文件里读取info.plist文件,调试。
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        // 读取info.plist文件
        NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
        NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
        NSLog(@"HOST_URL ------ > %@", infoDic[@"HOST_URL"]);
        
        return YES;
    }
    

    如我在Beta Scheme下编译,是不是打印出来的就是对应的BetaHOST_URL,从而达到一个多环境的配置。

    bate环境下编译.png

    Scheme配置相比方式一配置,不需要我们过多的在多个TargetBuild Settings去配置,只需在一个TargetBuild Settings里配置

    方式三

    平常我们通过cocoapods引用三方库的时候,对应的TargetsBuild SettingsOther Links Flags
    Search Paths里面都有一些参数,还是需要我们不停的在Build Settings去配置

    image.png
    当我们用cocoapods导入文件的时候,会给我们生成两个文件Pods-LoginApp.debug.xcconfigPods-LoginApp.release.xcconfig,文件里有很多对应的是key-value形式的变量。使用可以查看PROJECTInfo文件如下图所示。
    image.png

    首先新建一个Config文件,在改文件下Command+N,创建xcconfig文件命名一般是“目录+App+环境”

    image.png
    PROJECT-Info-Configuration里面选择相应的模式
    image.png
    在对应的xcconfig文件里设置如host url
    Config-LogingApp.Debug.xcconfig.png
    Config-LoginApp.Release.xcconfig.png
    写进info.plist文件
    image.png
    比如在Debug模式下运行,HOST_URL是不是就是我在Debug.xcconfig设置的URL
    image.png
    这种方式设置相比较之前的显得更加清晰,所以的配置都是在这个文件下进行配置,不需要跑到Build Settings里进行配置。
    xcconfig文件还有一点便洁的,它可以控制Build Settings里的选项,比如我们在配置动态库或者静态库的时候,一般需要去Other Linker Flags配置,但我们有xcconfig文件,可以在文件里写。
    image.png

    这个样子写完后,并没有在Build Settings里生效

    image.png

    进行编译(注意因为我们是在Debug.xcconfig文件里写的,所以我们切换到Debug模式下)

    image.png
    是不是生效了~

    OTHER_LDFLAGS其实是缩写,这里可以参考xcodebuildsettings网址
    比如我们想在xcconfig文件里添加Header Search Paths,去该网址搜索,MTL-去掉

    image.png
    HEADER_SEARCH_PATHS = /user/info/inclue/Bepa
    
    image.png
    通过xcconfig文件实现了多个环境配置,并且把Build Settings也剥离开了,配合Scheme根据你项目的需求就可以进行多环境开发。
    总结
    • 通过scheme+xcconfig进行多环境配置
    • xcconfig配置相比其他两种方式美观且易操作
    • 多环境配置可以更好的处理相关环境出现的问题

    解决xcconfig冲突

    相关文章

      网友评论

        本文标题:多环境配置的三种方式

        本文链接:https://www.haomeiwen.com/subject/fcstfltx.html