【问题标题】:AddBuildProperty on a Desktop (not iOS) Unity Xcode build?桌面(不是 iOS)Unity Xcode 构建上的 AddBuildProperty?
【发布时间】:2020-12-01 14:50:13
【问题描述】:

在 Unity 中,出色的后处理器使添加构建标志变得非常容易

在 iOS 项目中...

public class BuildPostProcessor
{
    public static void OnPostProcessBuild(BuildTarget target, string path) ...

            PBXProject project = new PBXProject();
            string sPath = PBXProject.GetPBXProjectPath(path);

“PBXProject”字面意思是“.pbxproj 文件”,即 plist 文本文件。

然后举个例子就非常容易了

project.AddBuildProperty(g, "SOME_FLAG", "--whoa");

或添加框架等

Mac 桌面版本怎么样?

这对于 iOS 构建来说非常棒,但是你到底是如何在 OSX 桌面项目上“AddBuildProperty”的呢?

似乎没有“StandaloneProject”或类似的结构。

这是怎么做到的?

我需要添加 OTHER_CODE_SIGN_FLAGS --deep。目前我必须创建 Xcode 项目并每次都手动完成。肯定有办法在桌面项目中使用 Unity 出色的 AddBuildProperty 或类似调用?

【问题讨论】:

  • 事实证明,目前,Unity 只是不公开任何 Mac 桌面的后处理处理...... sigh

标签: c# unity3d build-automation


【解决方案1】:

这是完成它的一种混乱方式:

using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;

public class BuildPostProcessor
{

    [PostProcessBuildAttribute(1)]
    public static void OnPostProcessBuild(BuildTarget target, string path)
    {
        if (target == BuildTarget.StandaloneOSX)
        {
            string macStylePath = path + "/project.pbxproj";

            string s = File.ReadAllText(macStylePath);
            s = s.Replace(
                "CODE_SIGN_STYLE = Automatic;",
                "CODE_SIGN_STYLE = Automatic;\n\t\t\tOTHER_CODE_SIGN_FLAGS = --deep;");

            File.Delete(macStylePath);
            File.WriteAllText(macStylePath, s);
            Debug.Log("OnPostProcessBuild ... added that flag'");
        }
    }
}

没有真正干净的方法来获取这些文件的内容,因此只需在相关项目上执行 grep 操作,您想在其中添加内容。它有效。

【讨论】:

    猜你喜欢
    • 2019-11-07
    • 2013-10-26
    • 2017-05-23
    • 2013-01-08
    • 2016-01-02
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多