首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式向Xcode项目添加运行脚本构建阶段?

如何以编程方式向Xcode项目添加运行脚本构建阶段?
EN

Stack Overflow用户
提问于 2013-10-10 17:13:09
回答 4查看 5.3K关注 0票数 9

我想知道是否可以在我的Mac实用程序中为另一个Xcode项目添加一个运行脚本构建阶段。当添加运行脚本时,我可以看到Xcode项目中发生了什么(执行一个不同的操作),但是我不知道如何安全地在代码中添加等效的内容。

我应该手动解析它吗?是否有可供使用的文档或库?这将是一个有用的功能,如果我能够确保我做的安全和正确的。我不想搞砸人们的Xcode项目!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-14 22:10:26

实际上,我决定添加一个运行脚本。事实证明,这很容易。首先,在Xcode中,向项目添加一个运行脚本,并通过diff工具观察更改。在“buildPhases”数组中添加了一个元素(在某些任意命名的字典中嵌套得很深),然后添加到'buildPhases‘数组中的键也被添加到“objects”字典中,其中包含一个表示实际运行脚本构建阶段格式的字典。

因此,要以编程方式复制此操作,请将pbxproj文件的内容放入一个NSDictionary中,并遍历查找buildPhases数组的字典。然后,加上你的钥匙。最后,使用键向“objects”数组添加一个对象,并添加一个用Xcode镜像格式的字典。

将文件保存回同一位置的磁盘,瞧!您已经以编程方式添加了运行脚本构建阶段。

票数 1
EN

Stack Overflow用户

发布于 2018-04-26 14:31:31

对于任何寻找简单方法的人来说,有一个很好的python库,它允许您在.pbxproj文件中添加所有类型的东西。您可以在这里查看:https://github.com/kronenthaler/mod-pbxproj

现在,要添加运行脚本构建阶段,可以编写一个简单的python脚本,如下所示:

代码语言:javascript
运行
复制
from pbxproj import XcodeProject
import sys

project = XcodeProject.load('path/to/my-project.xcodeproj/project.pbxproj')
project.add_run_script('bash my_run_script.sh')
project.save()

现在只要运行python脚本,您就可以继续了。

票数 7
EN

Stack Overflow用户

发布于 2020-04-22 09:32:17

我的解决方案需要一点红宝石知识。有一个名为xcodeproj的库,它包含在Cocoapods中

代码语言:javascript
运行
复制
sudo gem install cocoapods

或,

代码语言:javascript
运行
复制
gem install xcodeproj

只安装库。

若要创建向目标添加运行脚本阶段的ruby文件,请执行以下操作:

代码语言:javascript
运行
复制
require 'xcodeproj'

project = Xcodeproj::Project.open "./TargetTest.xcodeproj"

for target in project.targets 
    puts "Target -> " + target.name
    phase = target.shell_script_build_phases().find {|item| item.name == "My run phase"}
    if (phase.nil?)
        puts "Creating script 'My run phase'"
        phase = target.new_shell_script_build_phase("My run phase")
        phase.shell_script = "echo Hello script"
    else
        puts "'My run phase' already exist"
        phase.shell_script = "echo modified"
    end
end

project.save() 

你可以运行它:

代码语言:javascript
运行
复制
ruby add_run_phase_script.rb

编辑:在find中将"=“替换为"==”,否则第一个脚本将被替换,我们需要追加

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19302103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档