Ответ 1
Для редактирования проектов Xcode существует API Ruby от Cocoapods. Он также имеет активное сообщество разработчиков:
Я пытался добавить файл plist в проект xcode через командную строку, некоторые из блогов предложили отредактировать файл project.pbxproj
. Я искал файл project.pbxproj
, но не смог получить много информации об этом. Может ли кто-нибудь сообщить мне, что использует файл project.pbxproj
в xcode? Как добавить в него записи?
Я использую это репо для работы с ним.
script, который я написал, выглядит следующим образом:
import sys
import os
from mod_pbxproj import XcodeProject
def addPlistInProject(corodova_proj_name, xcode_proj_name, plist_file_name):
print "Cordova project name : " + corodova_proj_name
present_directory = os.getcwd()
path_to_xcode_proj = present_directory + '/' + corodova_proj_name + '/platforms/ios/' + xcode_proj_name + '.xcodeproj/project.pbxproj'
print "Xcode Project Path : " + path_to_xcode_proj
project = XcodeProject.Load(path_to_xcode_proj)
project.get_or_create_group('new group')
project.add_file(plist_file_name)
if __name__ == "__main__":
corodova_proj_name = sys.argv[1]
xcode_proj_name = sys.argv[2]
plist_file_name = sys.argv[3]
print "Xcode Project Name = : " + xcode_proj_name
print "Plist File Path = : " + plist_file_name
addPlistInProject(corodova_proj_name, xcode_proj_name, plist_file_name)
Я буду ссылаться на script как:
python myscript.py hello HelloWorld manisha-rules_camdo.plist
myscript.py
- это script Я написал: hello
- это существующий проект cordova, а HelloWorld
- проект Xcode, созданный с помощью cordova platform add iOS
.
Последовательность команд я будет следующей:
cordova create hello com.example.hello HelloWorld
cordova platform add iOS
py myscript.py hello HelloWorld manisha-rules_camdo.plist
Где hello
- название проекта cordova и HelloWorld
имя цели iOS.
Для редактирования проектов Xcode существует API Ruby от Cocoapods. Он также имеет активное сообщество разработчиков:
То, что вы просите, - это не самая простая вещь. Формат файла Xcode pbxproj выглядит как XML, но я думаю, что в нем есть немало проприетарных/недокументированных частей (как и все iOS). Насколько я могу судить, Xcode не имеет возможности добавлять файлы из командной строки.
Я нашел Python script, который вы могли бы использовать для изменения файлов проекта XCode, но ему несколько лет, и он может быть устаревшим.
Вот сообщение в блоге, в котором говорится об этом, и вот текущее GitHub-репо (последнее обновление обновлено пять месяцев назад, с того момента, как я набрал этот ответ).
Попробуйте и дайте мне знать, если это сработает для вас.
Еще один отличный вариант, особенно для проектов Cordova, - использовать модуль XCODE node: node-xcode; вы можете легко добавить его через NPM.
После этого вы можете создать привязку after_prepare, чтобы изменить pbxproj, вставляя пользовательские исходные файлы, дополнительные фреймворки и т.д. в каждую сборку. Фактически, сама Кордова использует этот модуль во время собственных процессов сборки.
В моем решении я сначала добавил модуль через npm:
npm install xcode --save-def
И затем я создал и after_prepare, чтобы добавить дополнительные фреймворки в мой проект XCode:
var xcode = require('xcode'),
fs = require('fs'),
rootdir = process.argv[2],
projectPath = rootdir + '/platforms/ios/my-project/project.pbxproj',
proj = new xcode.project(projectPath);
proj.parse(function(err) {
if (err) {
console.log("Oh noes! XCODE project failed to parse:");
console.log(err);
} else {
proj.addFramework('Fabric.framework', {customFramework:true});
proj.addFramework('Crashlytics.framework', {customFramework:true});
proj.addFramework('AdSupport.framework');
proj.addFramework('FacebookSDK.framework', {customFramework:true});
fs.writeFileSync(projectPath, proj.writeSync());
console.log("Updated XCODE project with references to social libs!");
}
});
Модуль XCODE достаточно умен, чтобы узнать, присутствуют ли уже существующие фреймворки/файлы/etc, которые вы пытаетесь добавить, и не будете пытаться добавить их снова.