>

在测试或开发环境中,标准的开发实践是针对不

- 编辑:澳门博发娱乐官网 -

在测试或开发环境中,标准的开发实践是针对不

使用这种方法,生产版和开发版的应用都会使用同一套基础代码,但是可以有不同的图标、bundle ID 以及不同的数据库。分发和提交应用的过程也会十分简单。更重要地,应用的测试人员和管理人员可以在同一个设备上同时安装应用的两个版本,这样他们就可以更加清楚地了解他们现在试用的是哪一个版本。

//setweb service URLtoproduction

enum environmentType { case development, production} let environment:environmentType = .production switch environment { case .development: // set web service URL to development // set API keys to development print("It's for development") case .production: // set web service URL to production // set API keys to production print("It's for production") }

首先,你们中的一些人可能想知道为什么在开发应用时,要使用两个单独的数据库和环境。原因是,随着你持续不断的构建新的功能或开发应用,你想确保开发版本和现有的生产版本相互区分。标准软件开发过程旨在针对软件(在我们的案例中,即为iPhone应用)的不同版本,使用不同的环境。开发版本的应用通常使用一个不同于生产版本的数据库(或其他系统,比如分析)。这就是为什么我们应该在不同的环境中使用不同的服务器和数据库。开发人员通常在测试期间使用虚拟图像或数据。在测试或开发环境中,通常会使用一些测试数据,比如“test comment”,“argharghargh”和“one more test comment”。很明显,你可不希望真实用户看到这样的消息。如果你的应用使用了分析系统,你可能在测试阶段发送成千上万的事件。同样,你不想在同一个数据库中混合测试数据和生产数据。这就是为什么总是推荐使用相互独立的开发和生产环境。

下面开始我们的教程!

当使用不同的环境开发时,应用需要知道它当前使用的环境。一种通用的做法是在程序的 AppDelegate 中定义一个可以将应用初始化为开发或者生产模式的全局变量。

Objective-C:

#ifDEVELOPMENT

#defineSERVER_URL @""

#defineAPI_TOKEN @"DI2023409jf90ew"

#else

#defineSERVER_URL @""

#defineAPI_TOKEN @"71a629j0f090232"

#endif

在 Objective-C 当中,我们可以使用#if来对DEVELOPMENT的状态进行检测,并且为 URL/API 设置对应的值。

这种方法要求我们在切换环境的时候改变全局变量的值。虽然这种方法很方便也很快捷,但是它存在很大的局限性。首先,因为在开发与生产环境中都使用了同一个 bundle ID,我们就不能在同一个设备上同时安装应用的不同版本。再者,这种方法有可能导致我们不小心把开发版本的应用提交到 App Store 上。如果忘记切换全局变量的值,我们就会提交错误版本的应用。我曾经就有一次在提交应用之前忘记改变全局变量的值,结果用户就使用到了我的开发版本。这实在是太糟糕了。
在本篇文章中我将会展示一种更好的方法来区分开发和生产的构建版本。更确切地来说,我们将会在 Xcode 中创建一个开发版的 target。这个方法同时适用于新建的或现存的大型项目,所以你可以使用一个现有的项目来跟着这个教程进行实践。
使用这种方法,生产版和开发版的应用都会使用同一套基础代码,但是可以有不同的图标、bundle ID 以及不同的数据库。分发和提交应用的过程也会十分简单。更重要地,应用的测试人员和管理人员可以在同一个设备上同时安装应用的两个版本,这样他们就可以更加清楚地了解他们现在试用的是哪一个版本。

下面开始我们的教程!

在使用两个独立的环境时,你的应用需要一种方法来找出它应该连接的环境。一个常用的方法是在主app delegate中定义一个全局变量,将应用初始化为开发或生产模式。

  1. 在 Project Navigator 面板上选择项目,进入设置。在 Targets 小节下面,右击现有的 target 并且选择 Duplicate 来对一个现在的 target 进行复制。

    图片 1Duplicate-target

  2. Xcode 会询问你这个 target 是不是针对于 iPad 开发的。对于本教程来说,我们只需要选择 "Duplicate Only" 就可以了。

    图片 2Duplicate-only

    提示:如果你的项目支持通用设置,则 Xcode 不会提示上面的消息。

  3. 现在我们有了一个名为 todo copy 的新 target 和构建 scheme 。让我们来重命名一下以便于区分。

    • TARGETS 列表中选择新创建的 target。按下回车键来对它的名称进行编辑,并且给它起一个合适的名称。我倾向于使用 "todo Dev"。当然你可以使用你喜欢的任何名字。

    • 接下来,来到 "Manage Schemes…",选择在第 1 步中新建的 scheme,并按下回车键。把新 scheme 命名为跟新 target 一样的名字(�即我们上一小步中使用的名字)

      图片 3Target and scheme

  4. 这一步是可选的,不过我强烈建议进行这一步。如果想让开发版跟生产版的应用更加容易区分,我们应该提供不同的应用图标和启动界面。这可以使测试更加清楚他们现在使用的版本,并且可以防止我们提交开发版本的应用到商店中。

    本文由胜博发-编程发布,转载请注明来源:在测试或开发环境中,标准的开发实践是针对不