BuildEnvironment 0.1.7

BuildEnvironment 0.1.7

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Jan SabbeJorge Vallejos维护。



BuildEnvironment是一个项目,它包含了一些我经常在新iOS项目中使用的构建脚本和一小部分代码。它们允许您

  • 自动将构建上传到HockeyApp(相同的脚本可以在本地和Xcode服务器上运行)
  • 轻松访问依赖于当前构建配置(调试/发布/任何自定义配置...)的属性
  • 在CFBundleVersion中放置时间戳
  • 检查您的所有Pod依赖项是否具有宽容的开源许可证
  • 检查是否有任何Pod依赖项过时

我还提供了一个Xcode模板,其中包含这些设置的绝大部分。

使用Xcode模板使用

要快速开始一个已集成BuildEnvironment的新Xcode项目,您可以使用自定义Xcode模板。要安装,请在您的终端中执行以下操作:

curl -L https://github.com/cegeka/BuildEnvironment/raw/master/Template/install_template.sh |sh

在Xcode中,您将在“Cegeka”组中得到一个名为“Basic Application”的新项目模板。当您通过向导时,它将要求您提供Hockey App IDHockey API Token。您也可以在转到您的Target底下的“用户定义设置”中的“构建设置”进行修改。

该项目包含一个Podfile,但您仍需要运行pod install

  1. 关闭Xcode,然后在终端转到您的项目目录
  2. 运行pod install
  3. 打开.xcworkspace文件

模板将设置一切,除了自动部署到HockeyApp。要设置此功能

  1. 转到编辑方案,然后点击复制方案按钮。
  2. 如果您使用Xcode Server,请确保您分享此方案
  3. 在构建步骤的预操作中添加一个运行脚本操作。输入"${PODS_ROOT}/BuildEnvironment/update_version.sh"并从“提供构建设置”下拉菜单中选择您的目标。
  4. 在归档步骤的后续操作中添加一个运行脚本操作。输入"${PODS_ROOT}/BuildEnvironment/upload_to_hockeyapp.sh"并从“提供构建设置”下拉菜单中选择您的目标。
  5. 请确保您的代码签名和配置文件设置正确在目标构建设置中。也要确保相同的配置文件和签名证书可在您的Xcode服务器上可用。
  6. 当您在本地运行归档时,它将自动上传构建到HockeyApp。您也可以在Xcode Server上运行此方案,以自动将构建分发给您的测试人员。

注意

项目无法构建,直到您手动创建本地化脚本所需的项目结构。要获取更多关于所需结构的详细信息,或要移除本地化支持,请转到本地化部分

手动安装

如果您已有项目,仍可以使用构建脚本。

不同的构建环境

在您的应用程序中,可能需要根据应用程序的构建来使用不同的值。想象一下,您正在创建您的应用程序的测试、接受和生产构建。您可能希望为每个构建与不同的后端进行通信。

您可以按照以下方式设置

  1. 创建一个BEConfiguration.plist。添加一个DebugRelease属性,类型为字典
  2. 将特定于环境的属性添加到这个Debug/Release字典中。环境无关的属性可以添加到根目录
  3. 在您的代码中,您可以通过以下方式访问它:BEConfig.configuration[@"key_in_configuration_plist"]

Example configuration

您还可以通过转到您的项目设置并在配置部分添加配置的方式添加额外的配置(例如,接受)。之后,您可能需要重新运行pod install

New configuration

您可以通过编辑您的方案来指定要使用的配置。

Specify the build configuration

您还可以复制一个方案,将其设置为接受构建,并确保方案是共享的。然后,您可以将您的CI服务器设置为自动构建此方案。

自动增加bundle版本

您可以使用update_version.sh来自动增加您的Info.plist中的CFBundleVersion。此脚本将在版本中放置时间戳。

  1. 编辑您的构建方案,并将预操作添加到构建步骤。您可以在其中添加运行脚本操作。
  2. 确保下拉列表“从”中填写默认目标
  3. 输入以下"${PODS_ROOT}/BuildEnvironment/update_version.sh"

上传到HockeyApp

您可以使用upload_to_hockeyapp.sh自动上传构建到HockeyApp(通过在本地或Xcode服务器上运行存档)。

  1. 编辑您的构建方案,并复制默认方案。
  2. 将其标记为共享,并在存档步骤中添加一个后操作。添加“新运行脚本操作”。确保下拉列表“提供构建设置”已填写。
  3. 输入"${PODS_ROOT}"/BuildEnvironment/upload_to_hockeyapp.sh。如果您想看到此脚本的日志,在顶部添加exec > /tmp/log_hockeyapp.txt 2>&1。这将将其记录在构建服务器上的/tmp/log_hockeyapp.txt
  4. 接下来,转到您的目标配置,然后是构建设置。添加用户定义设置HOCKEYAPP_API_TOKEN,它应包含您的API令牌。还需要添加用户定义设置HOCKEYAPP_APP_ID,其中包含您的应用程序ID。
  5. 确保您的代码签名和配置文件设置正确。同时,确保相同的配置文件和签名证书在XCode服务器上可用。

Add post action Add user defined setting

在构建机器上添加自动构建

如果您的可供使用,请按照以下步骤操作来自动搭建构建。

  1. 转到产品 > 创建机器人...
  2. 选择一个方案,如果需要则检查“共享方案”。
  3. 给你的机器人起个名字。按照惯例,我们使用[APPNAME]-Build和[APPNAME]-Deploy。
  4. 选择常规构建的“在提交上安排”和部署的“手动安排”。
  5. 对于常规构建,请选择“每天清洁一次”;对于部署构建,请选择“始终清洁”。
  6. 在下一步中,您可以选择是否在所有设备、特定设备或所有模拟器上测试,还可以指定失败的通知。通常,我们使用所有模拟器且不使用通知。
  7. 创建机器人后,构建将显示在localhost:xcode上的机器人中,并在大屏幕上。

检查软件许可证

要自动在构建过程中检查软件许可证,可以使用check_licenses.sh。这将检查您的CocoaPods依赖项。如果它发现具有MIT、BSD或Apache之外许可证的依赖项,则构建将失败。

Check licenses screenshot

  1. 转到您的目标,构建阶段。添加一个新的运行脚本来构建阶段
  2. 输入以下内容:"${PODS_ROOT}"/BuildEnvironment/check_licenses.sh
  3. 您还可以通过添加参数来指定您想要允许的许可证:"${PODS_ROOT}"/BuildEnvironment/check_licenses.sh -l BSD 默认情况下允许MIT、BSD和Apache。
  4. 您还可以为某些您仍然想要允许的项目设置例外:"${PODS_ROOT}"/BuildEnvironment/check_licenses.sh -e AFNetworking

检查过时的依赖项

您还可以检查您的所有cocoapod依赖项是否过时。将check_outdated.sh集成到构建中将在依赖项有新版本时生成构建警告。

  1. 转到您的目标,构建阶段。添加一个新的运行脚本来构建阶段
  2. 输入以下内容:"${PODS_ROOT}"/BuildEnvironment/check_outdated.sh

Check outdated screenshot

本地化

此模板自动更新需要本地化的文件。这包括包含源代码和故事板中找到的文本所需的翻译的文件。

更新源代码翻译

要自动更新包含源代码所需的翻译的文件,您可以使用extract_source_translations.sh。此脚本在代码中查找对NSLocalizedString的调用,收集此类调用中使用的键,并尝试将其与Localizable.strings文件中指定的键进行匹配,如下所示

  • 未在Localizable.strings文件中找到的收集到的键被添加。
  • 在Localizable.strings文件中找到且被脚本收集到的键保持不变。
  • 在Localizable.strings文件中找到但不是脚本收集到的键的那些键将从文件中移除。

为了使此脚本工作,项目需要有一个本地化文件,在支持文件目录中的,称为Localization.strings。

更新故事板翻译

要自动更新包含源代码所需的翻译的文件,您可以使用extract_storyboard.sh。此脚本查找故事板中的字符串,收集这些字符串使用的键,并尝试将其与故事板字符串文件中指定的键进行匹配,如下所示

  • 未在故事板字符串文件中找到的收集到的键被添加。
  • 在故事板字符串文件中找到且被脚本收集到的键保持不变。
  • 在故事板字符串文件中找到但不是脚本收集到的键的那些键将从文件中移除。

为了使此脚本工作,项目需要一个本地化的故事板。

禁用本地化支持。

要停用上述任何本地化脚本,您可以删除项目中的相应 更新源翻译更新剧本翻译 构建阶段(由模板自动添加)。

作者

Cegeka 欧洲应用工厂 开发

  • Jan Sabbe

许可证

BuildEnvironment 适用于 MIT 许可证。请参阅 LICENSE 文件以获取更多信息。