2016-02-25 2 views
1

Я пытаюсь создать новую цель сборки iPhone прагматично с помощью Ruby gem Xcodeproj. Между моей нехваткой знаний Ruby и плохой документацией с Xcodeproj, сталкиваются с некоторыми проблемами. Вот мой код:Создание нового объекта сборки iOS с 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

Вы смогли получить эту работу? Мне интересно делать что-то подобное. –

+0

@ AlexBartiş Библиотека, в которую я пытался интегрировать нас, обновлялся, поэтому это была проблема. Я не пробовал ни одного из предложенных ответов. Спасибо всем за вашу помощь. –

+0

Я нашел решение и обновил его с помощью правильного ответа ниже. –

ответ

0

Я не могу сказать, почему ваш не работает, но я смог добиться этого:

require 'xcodeproj' 

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

project = Xcodeproj::Project.new(project_path) 
project.save() 

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

Что заставляет меня думать, что это может быть использование ARGV для ввода имени схемы или нет сохранение до создания.

Дайте мне знать, как вы ладите. :)

+0

Я сделал это, а также получил такое же поведение, как указано в @adam выше: создается новая цель, но старый уничтожается и файлы проекта исчезают. –

0

Хорошо, получил его на работу

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

Смежные вопросы