Вызов `pod install` из System.Diagnostics.ProcessC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Вызов `pod install` из System.Diagnostics.Process

Сообщение Anonymous »

Когда мы создаем наш проект Unity для iOS, он генерирует проект Xcode, который использует Cocoapods. Я пытаюсь создать сценарий постобработки сборки (C#, работающий в редакторе Unity), который редактирует подфайл, а затем запускает установку pod в каталоге сборки.
Я пробовал несколько разных подходов к запуску установки модуля, но все они терпели неудачу по одной из двух причин:

Код: Выделить всё

private static void ExecuteProcess(string directory, string argument) {
try {
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo() {
FileName = "/bin/bash",
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
CreateNoWindow = true,
WorkingDirectory = directory,
Arguments = " -c \"" + argument + " \""
};

System.Diagnostics.Process myProcess = new System.Diagnostics.Process {
StartInfo = startInfo
};
myProcess.Start();
while (!myProcess.StandardOutput.EndOfStream) {
var line = myProcess.StandardOutput.ReadLine();
UnityEngine.Debug.Log(line);
}

} catch (System.Exception e) {
UnityEngine.Debug.Log(e);
}
}

private static void TryInstallPods() {
const string BUILDS_PATH = "./Builds";
string shellScriptPath = Path.Join(BUILDS_PATH, "podinstall.sh");

// Outputs nothing
File.WriteAllText(shellScriptPath, "pod install --verbose");
ExecuteProcess(BUILDS_PATH, "sh podinstall.sh");

// Outputs "CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only performed in repo update"
File.WriteAllText(shellScriptPath, "/usr/local/bin/pod install --verbose");
ExecuteProcess(BUILDS_PATH, "sh podinstall.sh");

// Outputs nothing
ExecuteProcess(BUILDS_PATH, "pod install --verbose");

// Outputs "CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only performed in repo update"
ExecuteProcess(BUILDS_PATH, "/usr/local/bin/pod install --verbose");

// For reference, this works as expected for the build directory:
ExecuteProcess(BUILDS_PATH, "ls");
// This also works as expected:
ExecuteProcess(BUILDS_PATH, "/usr/local/bin/pod --help");
// This produces no output:
ExecuteProcess(BUILDS_PATH, "pod --help");
}
Обратите внимание, что этот сценарий оболочки создается с помощью кода:
podinstall.sh

Код: Выделить всё

/usr/local/bin/pod install --verbose
  • Из моего кода C# pod install --verbose не выдает никаких результатов, независимо от того, вызывается ли он напрямую или из внутри сценария оболочки.
  • Из моего кода C# «/usr/local/bin/pod install --verbose» выдает вывод «CDN: Trunk Относительный путь: CocoaPods -version.yml существует! Возврат локального, поскольку проверка выполняется только при обновлении репозитория», независимо от того, вызывается ли она напрямую или из сценария оболочки. Больше ничего не происходит, и конфигурация модуля не обновляется.
Я получу те же результаты, если попробую подход, описанный здесь: https://forum. unity.com/threads/adjusting-pods-pods-xcproject-after-pod-install.1406500/
Однако любой вариант работает, если я открываю терминал в папке сборки и введите там команду:

Код: Выделить всё

% pod install --verbose

% /usr/local/bin/pod install --verbose

% sh podinstall.sh
Процесс не заходит в тупик; удаление направления стандартного ввода и вывода не приводит к работе команды pod install (проверено путем проверки Podfile.lock и отсутствия изменений).
Почему эти команды работают, если я ввожу их в окно терминала, а не когда пытаюсь запустить их из процесса C#/Unity?
Примечание: я переформатировали код этого вопроса; этот вопрос может содержать опечатки, которых нет в исходном коде.

Подробнее здесь: https://stackoverflow.com/questions/786 ... cs-process
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Вызов `pod install` из System.Diagnostics.Process
    Anonymous » » в форуме C#
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Вызов `pod install` из System.Diagnostics.Process
    Anonymous » » в форуме C#
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Проблемы разрешения Pod Pod Pod Pod DNS
    Anonymous » » в форуме Linux
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Pod install -bash: pod: команда не найдена
    Anonymous » » в форуме IOS
    0 Ответы
    72 Просмотры
    Последнее сообщение Anonymous
  • Pod install -bash: pod: команда не найдена
    Anonymous » » в форуме IOS
    0 Ответы
    58 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»