32

我正在尝试为我的库编写 Cocoapods 规范,该规范必须修改 Xcode 项目并将“运行脚本构建阶段”添加到项目的目标中。我想我可以使用post_install钩子。但是“ pod spec lint ”说这个钩子已被弃用:

- WARN  | [iOS] The post install hook of the specification DSL has been deprecated, use the `resource_bundles` or the `prepare_command` attributes.

我不知道如何用 *resource_bundles* 或 *prepare_command* 替换 post_install 挂钩。谁知道解决我问题的其他方法?可能吗?

另一个问题是如何修改 Xcode 项目以添加构建阶段,但只有在“post_hook 问题”解决后才是实际的。

4

1 回答 1

41

使用 Xcodeproj ruby​​ gem(它是 Cocoapods 的一部分)编写修改 Xcode 项目的脚本。

然后使用prepare_command调用此脚本

require 'xcodeproj'
path_to_project = "${SOURCE_ROOT}/${PROJECT_NAME}.xcodeproj"
project = Xcodeproj::Project.open(path_to_project)
main_target = project.targets.first
phase = main_target.new_shell_script_build_phase("Name of your Phase")
phase.shell_script = "do sth with ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/your.file"
project.save()

文档:http ://rubydoc.info/gems/xcodeproj

您可以通过运行来获取构建设置变量及其值的列表...</p>

xcodebuild -project [ProjectName].xcodeproj -target "[TargetName]" -showBuildSettings

更新: 自编写此答案以来,有些事情发生了变化。访问环境变量的问题目前在这里讨论:https ://github.com/CocoaPods/CocoaPods/issues/2115

于 2013-12-10T21:08:13.610 回答