我正在尝试使用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
感到有些困惑。
我在这里做错了什么想法?我也对其他以预定方式添加目标的方法持开放态度。
答案 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输入方案名称或在创建之前不保存。
让我知道你是如何相处的。 :)