gpt4 book ai didi

ios - 管理具有不同设置和名称的开发、测试和生产构建的最佳方式

转载 作者:技术小花猫 更新时间:2023-10-29 10:48:41 25 4
gpt4 key购买 nike

我有三个具有不同 API key 和一些不同设置的 API

  • 用于开发或内部测试构建 - iOS App Store 之外的开发分发

    • 主机 - devapi.project-name.com
    • API Key - development_key
    • FLEX[ 1 ] - 启用
  • 用于客户端测试构建 - iOS App Store 之外的企业分发

    • 主机 - stgapi.project-name.com
    • API Key - enterprise_key
    • FLEX - 启用
  • 用于生产构建 - 在 iOS App Store 中分发

    • 主机 - API.project-name.com
    • API key - app_store_key
    • FLEX - 禁用

我可以使用 DEBUG 管理两个设置

#if DEBUG
#define API_BASE_URL @"http://devapi.project-name.com/api/v1"
#define API_KEY @"development_key"
#else
#define API_BASE_URL @"http://stgapi.project-name.com/api/v1"
#define API_KEY @"enterprise_key"
#endif

// In AppDelegate.m
#if DEBUG
[[FLEXManager sharedManager] showExplorer];
#endif

But first problem is Enterprise distribution (for client testing) and iOS App Store distribution (production) build, for Enterprise and App Store distribution every time need to change code

  • 用于企业分发

    #if DEBUG
    //debug setting
    #else
    //enterprise setting
    #define API_BASE_URL @"http://stgapi.project-name.com/api/v1"
    #define API_KEY @"enterprise_key"
    #endif
  • 用于 App Store 分发

    #if DEBUG
    //debug setting
    #else
    //app store setting
    #define API_BASE_URL @"http://api.project-name.com/api/v1"
    #define API_KEY @"app_store_key"
    #endif

我正在寻找这样的方法

#ifdef DEVELOPMENT
#define API_BASE_URL @"http://devapi.project-name.com/api/v1"
#define API_KEY @"development_key"
#elif ENTERPRISE
#define API_BASE_URL @"http://stgapi.project-name.com/api/v1"
#define API_KEY @"enterprise_key"
#elif APP_STORE
#define API_BASE_URL @"http://api.project-name.com/api/v1"
#define API_KEY @"app_store_key"
#endif

还是其他的?


Second Problem

有没有办法在不创建不同目标的情况下创建三个具有不同名称的构建?

  • ProductName - 适用于 App Store
  • ProductName-Dev - 用于内部开发构建
  • ProductName-Stg - 用于客户端测试(企业)构建

我刚刚根据 iamnichols 提供的解决方案创建了演示项目和完整的可视化指南

最佳答案

调试版本和发布版本之间的区别在于,一个版本被存档并导出,而另一个版本通过调试器中的 Xcode 在本地运行。您可能会发现有时您也想在调试器中运行生产或暂存构建,但是通过 #ifdef DEBUG 拆分内容,您可能会遇到问题。

这是我所做的简化版本:

创建个人配置

在项目(非目标)设置中,创建(从原始文件复制)以下配置:

  • 调试开发
  • Debug_Staging
  • 调试产品
  • Release_Dev
  • Release_Staging
  • Release_Prod

请注意,如果您使用 Cocoapods,那么您需要将配置设置回无,删除项目中 Pods 文件夹的内容(不是 Pods 项目)并重新运行 pod 安装

为每个环境创建一个方案

不只是有一个 MyApp 方案,而是创建以下内容(复制原始方案):

  • MyApp_Dev
  • MyApp_Staging
  • MyApp_Prod

在每个方案中,在适当的地方使用关联的 Debug_* 和 Release_* 配置。

添加预处理器宏以识别环境

添加一个额外的预处理器宏来识别您正在构建的环境。

在项目build设置中,单击 + 并添加用户定义的build设置并将其命名为 MYAPP_ENVIRONMENT。然后,对于每组不同的环境,为每个环境添加一个不同的预处理器宏。即 ENV_DEV=1ENV_STAGING=1ENV_PROD=1

然后,在 c 预处理器宏中(同样在项目级别而不是目标级别)使用 $(MYAPP_ENVIRONMENT) 添加这个新的 MYAPP_ENVIRONMENT 设置。

这样,您就可以像这样确定要构建的环境:

#ifdef ENV_DEV
NSString * const MyAppAPIBaseURL = @"https://api-dev.myapp.com/";
#elif ENV_SAGING
NSString * const MyAppAPIBaseURL = @"https://api-staging.myapp.com/";
#elif ENV_PROD
NSString * const MyAppAPIBaseURL = @"https://api.myapp.com/";
#endif

可能需要接受的内容很多,但让我知道您的进展情况。


然后您还可以创建不同的用户定义的build设置来执行不同的操作,例如更改应用的显示名称。

您可以通过创建一个名为 MYAPP_DISPLAY_NAME 的新设置来做到这一点,例如,为每个配置设置正确的名称,然后在您的 info.plist 中设置将显示名称捆绑到 $(MYAPP_DISPLAY_NAME)

关于ios - 管理具有不同设置和名称的开发、测试和生产构建的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35571454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com