美文网首页iOS configurations
如何使用Xcode Configuration 搭建多环境支持

如何使用Xcode Configuration 搭建多环境支持

作者: Mr_wick | 来源:发表于2021-04-30 11:15 被阅读0次

    在APP的开发过程中,我们经常会遇到需要多环境支持
    开发环境:开发者日常开发的环境,完成功能模块
    测试环境:用于测试,功能验证
    生产环境:只包含通过了测试并验证过的功能模块,它是最终提交到 App Store 供终端用户使用的版本。

    或是同时支持构建免费版 -- 收费版。

    如何管理多个构建多环境支持?

    1、创建不同的targets,每个target使用不同的Info.plist,每选择一个target,就会使用不同的Info.plist,因此可以此设置变量,如token或是不同环境的URL。

    也可以使用Bundle Identifiers来实现,定义不同的preprocessor macros控制各个代码块的编译条件。
    可查阅How to Use Xcode Targets to Manage Development and Production Builds

    2、构建配置放到.xcconfig文件中,并且在project的info的configurations内引用它。然后可以通过简单更改scheme来构建不同版本的APP,这也是本文的重点。

    建立Build Configuration

    首先,Xcode创建一个项目。或者是你想要从现有的项目开始也可以,应该会看到Xcode已经自动提供了两个不同的配置:Debug和Release,你可能之前没有注意到,你可以通过不同的配置,分別创建一个用于debug,一个用于release的版本。

    image.png
    现在我们要创建一个新的Configuration,命名Staging。点击配置列表下面的“+”,选择Duplicate Debug configuration,因为从Debug配置中删除我们不需要的东西,比在Release配置放回所需的东西容易。
    image.png
    在刚创建的第一个单元格中,填写Staging,完成后现在有三个级别的配置。 image.png

    使用Xcode配置文件(.xcconfig)

    创建一个.xcconfig文件,在弹出的窗口中选择Configurations Settings File。 在next中,將其命名為“Staging”,并确保targets复选框全部都是未选取状态,因为我们不希望将其包含在APP的bundle中。

    image.png
    现在切换到project --> info的tab中,在Configurations展开列表,并且从下拉框中选择“Staging”。可以Debug、Release重复该流程。
    image.png
    image.png

    更改构建配置(Changing the Build Information)

    Xcode的配置文件设置,就可以非常直接的改变配置內容。假设你想要改变构建信息,如App Name、version,bundle identifier以及每个版本的bundle version,可以像这样配置每个.xcconfig文件:(xcconfig 概念及其作用xcconfig的key-value参考
    Debug.xcconfig:

    IS_APP_NAME = Donate Debug
    IS_APP_VERSION = 0.3
    IS_APP_BUNDLE_ID = com.intensifystudio.DonateDebug
    

    Staging.xcconfig:

    IS_APP_NAME = Donate Staging
    IS_APP_VERSION = 0.2
    IS_APP_BUNDLE_ID = com.intensifystudio.DonateStaging
    

    Release.xcconfig:

    IS_APP_NAME = Donate
    IS_APP_VERSION = 0.1
    IS_APP_BUNDLE_ID = com.intensifystudio.DonateRelease
    

    你可以在project settings、info.plist、entitlement files中使用你的配置变量(configuration variables)。在本文中,我们将在info.plist中使用它改变app名字、app版本和bundle identifier,如下所示:

    image.png
    IS作为前缀,可修改成自己喜欢的前缀。

    更改App Icon

    使用Xcode配置文件,可以轻松配置不同版本的app icon。 参考下列做法编辑每个.xcconfig文件:

    Debug.xcconfig:

    IS_APP_ICON = AppIconDebug
    

    Staging.xcconfig:

    IS_APP_ICON = AppIconStaging
    

    Release.xcconfig:

    IS_APP_ICON = AppIconRelease
    

    切换到Build Settings,将AppIcon替换为${IS_APP_ICON}

    image.png
    然后在“Assets.xcassets”中创建几套iOS App Icon,并重命名为上面代码中配置的名字。
    xcode-new-app-icon.gif
    接着将icon拖进去,就大功告成了!

    如何在代码中存取配置变量

    Xcode配置文件非常强大,它可以用于其他设置。例如,如果不同版本的API密钥和服务端API不同,则可在每个.xcconfig文件中指定:
    Debug.xcconfig:

    SERVER_URL = http:\/\/api.intensifystudio.com/development
    CONSUMER_KEY = ck_a57e4fa2e14c12ae3f400371cf2951ec3dea5_dev
    CONSUMER_SECRET = cs_c847caa35ce1041e9c69d239141f13f63bb22b_dev
    

    Staging.xcconfig:

    BACKEND_URL = http:\/\/api.intensifystudio.com/staging
    CONSUMER_KEY = ck_a57e4fa2e14c12f400371cf2951ec3dea5_staging
    CONSUMER_SECRET = cs_c847caa35ce1041e9c69d239141f13f63bb22b_staging
    

    Release.xcconfig:

    BACKEND_URL = http:\/\/api.intensifystudio.com/
    CONSUMER_KEY = ck_a57e4fa2e14c12f400371cf2951ec3dea5
    CONSUMER_SECRET = cs_c847caa35ce1041e9c69d239141f1f63bb22b
    

    接下來,通创建新的栏位,将这些变量添加到Info.plist

    image.png
    你就可以使用下面的代码在运行时从plist文件读取所需的值:
    func infoForKey(_ key: String) -> String? {
            return (Bundle.main.infoDictionary?[key] as? String)?
                .replacingOccurrences(of: "\\", with: "")
     }
    

    在不同的构建配置之间切换

    点击顶部的scheme即可更改scheme,选择设置好的build configuration。


    switching-between-flavors.gif

    总结

    Xcode的Configuration file是配置不同build configuration的实际运用,开发者可以轻松管理构建变量。推荐在项目中大胆使用。

    相关文章

      网友评论

        本文标题:如何使用Xcode Configuration 搭建多环境支持

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