【Unity Xcode Mac pod command not found】

Unity自动化打包后在MacOS上无法调用pod install ps:pod command not found

  • 背景
    • macOS 安装 Cocoapods (自行百度)
      • pod setup 失效处理方案
    • macOS 上 terminal 实现 pod install
      • 报错 pod : command not found 常见原因
    • unity 打包后执行 System.Diagnostics.Process.Start() 无法调用 pod install 报错 pod : command not found
  • 原因
    • unity process 无法找不到可执行文件
  • 方案
    • 创建软连接 ln -s /usr/local/bin/pod /usr/bin/pod
    • 把 /usr/local/bin 路径添加到系统默认的path中
    • shell 文件调用时候使用全路径 /usr/local/bin/pod install

背景

macOS 安装 Cocoapods (自行百度)

pod setup 失效处理方案

  • pod setup 虽然没有报错并且秒成功 但其实已经失效了
  • 这一步安装正常会花很久
pod setup //这个是官方推荐的方法不过已经失效了
git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/trunk //需要
git clone https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git ~/.cocoapods/repos/trunk //国内清华镜像

macOS 上 terminal 实现 pod install

报错 pod : command not found 常见原因

  • 没有在配置环境变量
sudo vi ~/.bash_profile
//插入
export PATH=/xxxxxxxx(ruby绝对路径)/bin:$PATH
export PATH=/bin:/usr/bin:usr/sbin:usr/local/bin:$PATH //(系统环境有错的也可以修复 本质就是让shell在运行的之后可以去指定路径寻找可执行文件)
//按一下esc 再按shift+z+z 保存退出
  • terminal 中输入 source ~/.bash_profile 回车刷新配置文件即可

unity 打包后执行 System.Diagnostics.Process.Start() 无法调用 pod install 报错 pod : command not found

		strPathToBuiltProject = "xxxxx打包输出路径, 在.xcodeproj那一级"
		var strWorkFileName = "work.sh";
        var strWorkContent = "#!/bin/bash\nexport LANG=en_US.UTF-8\npod install\nopen 'Unity-iPhone.xcworkspace'";
        var strWorkFilePath = NgTool.PathCombine(strPathToBuiltProject, strWorkFileName);
        File.WriteAllText(strWorkFilePath, strWorkContent); //这里写入可执行文件 和Podfile文件同级

        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
        startInfo.FileName = "/bin/bash";
        startInfo.Arguments = strWorkFileName;
        startInfo.WorkingDirectory = strPathToBuiltProject;//Podfile的父级
        startInfo.RedirectStandardOutput = true;
        startInfo.RedirectStandardError = true;
        startInfo.UseShellExecute = false;
        startInfo.CreateNoWindow = false;
        startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;

		string info = proc.StandardOutput.ReadToEnd();
        if (!string.IsNullOrEmpty(info))
            Debug.Log($"StandardOutput={info}");
        string err = proc.StandardError.ReadToEnd();
        if (!string.IsNullOrEmpty(err))
            Debug.LogError($"StandardError={err}");
    
        System.Diagnostics.Process proc = System.Diagnostics.Process.Start(startInfo);
        proc.WaitForExit();

原因

unity process 无法找不到可执行文件

  • unity 的 Process 里调用的方法只能是系统默认方法 即在 usr/bin/ 中的方法 没有办法调用用户安装的库或插件即 usr/local/bin 中的方法

方案

创建软连接 ln -s /usr/local/bin/pod /usr/bin/pod

把 /usr/local/bin 路径添加到系统默认的path中

  • terminal 输入 sudo launchctl config user path /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

  • 重启电脑

  • 原文链接: The command will set the default environment and add /usr/local/bin to the PATH variable of the system’s default environment. Hence, the executables under /usr/local/bin are callable from the default configuration.

shell 文件调用时候使用全路径 /usr/local/bin/pod install

你可能感兴趣的:(Unity,MacOs,xcode,unity,macos)