钠是 E-sites iOS Suite 的一部分。
一个预构建(Swift)脚本来在构建时根据环境和构建配置改变您的 Xcode 项目。
TL;DR
使用钠,您可以将这个
#if ENVIRONMENT_STAGING
let apiHost = "mynice.staging-api.com"
#elseif ENVIRONMENT_DEVELOPMENT
let apiHost = "mynice.dev-api.com"
#else
let apiHost = "mynice.api.com"
#endif
Alamofire.request("https://\(apiHost)/items").responseJSON { response in
// ...
}
变成这个
let apiHost = Natrium.Config.apiHost
Alamofire.request("https://\(apiHost)/items").responseJSON { response in
// ...
}
🧙♂️ 通过预行动脚本的魅力。😱
"${PROJECT_DIR}/Pods/Natrium/Natrium/natrium" Production
迁移
到 v8.x
- 二进制文件的位置从(比如在 Cocoapods 中)
Pods/Natrium/bin/natrium
改为Pods/Natrium/Natrium/natrium
。 - 生成的 Natrium.swift 文件位置改为(比如在 Cocoapods 中):
Pods/Natrium/Natrium/Natrium.swift
。
到 v7.x
安装 natrium
命令已被移除- 可以使用
.natrium-env
和.env
文件来配置环境变量 - 命令行界面不再需要
--project
参数 - 不再支持 Objective-c,如果仍然需要,请使用 v6.4.0 版本。
转到 v6.x 系列
对于 Natrium v6.x 系列,您需要手动将 Natrium.swift
文件导入到项目中,以使其在新版的 Xcode 构建系统下工作。请参阅安装指南。
从 v5.x 系列
Natrium v5.x 已经不再需要构建阶段脚本。
打开您的目标设置中的 构建阶段
并移除 [Natrium] 检查
步骤。
否则,在脚本步骤中构建将失败。
路线图
- 与 Swift 4.2 兼容
- 使用 Swift 而不是 Ruby
- 移除 ImageMagick 依赖
- 单元测试
- 不同的安装选项(除 CocoaPods 之外)
- 更好的错误处理/报告
安装
实现
Swift
只需将来自指定位置(见安装指南)的Natrium.swift
文件添加到项目目标中(不要复制)。
配置
配置文档可在此处找到这里。
使用
如上所示的示例.natrium.yml
将生成以下Config.swift文件
import Foundation
/// Natrium.swift
/// Autogenerated by natrium
///
/// - see: https://github.com/e-sites/Natrium
enum Natrium {
enum Environment: String {
case staging = "Staging"
case production = "Production"
}
enum Configuration: String {
case debug = "Debug"
case release = "Release"
case adhoc = "Adhoc"
}
enum Config {
static let environment: Natrium.Environment = .staging
static let configuration: Natrium.Configuration = .debug
static let testVariableDouble: Double = 1.0
static let testVariableString: String = "debugString"
static let testVariableBoolean: Bool = false
static let testVariableInteger: Int = 125
static let testArray: [String] = [ "StagingFoo", "StagingBar" ]
}
}
可以这样使用
class MainViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("bundle identifier: \(Bundle.main.bundleIdentifier!)")
print("environment: \(Natrium.Config.environment)")
}
}
结果
bundle identifier: com.esites.app.staging
environment: Staging
开发
运行
make xcodeproj
然后打开Natrium.xcodeproj
高级
日志记录
您可以在Pods/Natrium/bin/
文件夹中找到包含前一个构建日志的natrium.log
。这可能会帮助您进行调试。
环境变量
如果将.env
放置在项目的根目录中,Natrium将使用该文件来添加环境变量到您已经存在的环境变量中。该.env
文件应采用以下格式:
KEY=VALUE
例如:
PRODUCTION_SECRET_API_TOKEN=3489uierhjkfbnvcx
STAGING_SECRET_API_TOKEN=iujk9qijs41
这样您可以在.natrium.yml
文件中使用#env(PRODUCTION_SECRET_API_TOKEN)
。
对于CI/CD流水线,您只需将这些环境变量添加到您的构建管道中(例如在travis或buddybuild中)。
但是,如果您想用于本地(调试)构建,此文件可能会很有帮助。
.env
添加到.gitignore
中。