使用Xcodeproj创建新的iOS构建目标

时间:2016-02-25 20:07:21

标签: ios ruby xcodeproj

我正在尝试使用Ruby gem Xcodeproj实用地创建一个新的iPhone构建目标。在我缺乏Ruby知识和Xcodeproj的糟糕文档之间,我遇到了一些问题。这是我的代码:

require 'rubygems'
require 'xcodeproj'

#get target name from args
scheme_name = ARGV[0]
iosProjectDir = ARGV[1]

# Open the existing Xcode project
project_file = iosProjectDir + '/UserApp.xcodeproj'
project = Xcodeproj::Project.new(project_file)

#Add the target to the project. Are these parameters correct?
app_target = project.new_target(:application, scheme_name, :ios, "8.0")

# Save the project file
project.save(project_file)

当我运行此代码时,在XCode项目中创建了一个新方案。但是,它会破坏我的所有其他构建目标,几乎所有项目文件都会消失。我必须恢复项目才能让他们回来。这段代码可能会破坏iOS项目吗?

我发现重新添加新目标的唯一文档是here.我对可选变量product_group感到有些困惑。

我在这里做错了什么想法?我也对其他以预定方式添加目标的方法持开放态度。

2 个答案:

答案 0 :(得分:2)

好的,让它工作

require 'rubygems'
require 'xcodeproj'

#get target name from args
scheme_name = ARGV[0]
iosProjectDir = ARGV[1]
iosProjName = ARGV[2]

# Open the existing Xcode project
project_file = iosProjName + '.xcodeproj'
project = Xcodeproj::Project.open(project_file)
project.save(project_file)

#Add the target to the project. Are these parameters correct?
app_target = project.new_target(:application, scheme_name, :ios, "11.0")

# Save the project file
project.save(project_file)

所以问题是Project.open而不是Project.new

答案 1 :(得分:1)

我不能说为什么你的工作不起作用,但我能够通过以下方式实现这一目标:

require 'xcodeproj'

project_name = "Test"
project_path = "./Test.xcodeproj"

project = Xcodeproj::Project.new(project_path)

project.new_target(:application, "Test", :ios, "8.0")
project.save()

这让我觉得可能是使用ARGV输入方案名称或在创建之前不保存。

让我知道你是如何相处的。 :)