问题:
我似乎无法为Unity云构建的帖子导出方法找出正确的签名。根据文件:
您希望我们调用的公共静态方法的完全限定名称 在我们完成Unity构建过程之后(但在Xcode之前)。对于 示例:ClassName.CoolMethod或NameSpace.ClassName.CoolMethod。没有 尾随括号,它不能与你的名字相同 出口前方法!此方法必须接受字符串参数,即 将收到导出的Unity播放器(或Xcode项目)的路径 在iOS的情况下。)
这是我的代码:
public static void OnPostprocessDevBuildIOS(string ExportPath)
{
var projPath = ExportPath + "/Unity-iPhone.xcodeproj/project.pbxproj";
var proj = new PBXProject();
var nativeTarget =
proj.TargetGuidByName(PBXProject.GetUnityTargetName());
var testTarget =
proj.TargetGuidByName(PBXProject.GetUnityTestTargetName());
string[] buildTargets = {nativeTarget, testTarget};
proj.ReadFromString(File.ReadAllText(projPath));
proj.SetBuildProperty(buildTargets, "ENABLE_BITCODE", "NO");
File.WriteAllText(projPath, proj.WriteToString());
}
这是错误:
我尝试了多种测试方法签名,似乎无法正常工作。我甚至尝试过一种记录路径的方法。
其他信息:
此外,我的云构建设置脚本根据需要位于编辑器文件夹中。
好的,所以我得到了bitCode禁用后期处理以使用以下代码,但仅限于我手动构建时。当我从云构建构建时,没有错误,应用程序在启动屏幕上冻结。当我从本地机器构建时,应用程序运行正常。
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
if (buildTarget == BuildTarget.iOS)
{
string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string nativeTarget = proj.TargetGuidByName(PBXProject.GetUnityTargetName());
string testTarget = proj.TargetGuidByName(PBXProject.GetUnityTestTargetName());
string[] buildTargets = new string[]{nativeTarget, testTarget};
proj.SetBuildProperty(buildTargets, "ENABLE_BITCODE", "NO");
File.WriteAllText(projPath, proj.WriteToString());
}
}
答案 0 :(得分:0)
我也有同样的问题"闪屏卡住"发布后...... 我解决了这个问题。请使用以下代码。 在Unity 5.4.1p2和Xcode 7.3中测试。
using UnityEngine;
using System.Collections;
using UnityEditor;
using System.IO;
using UnityEditor.Callbacks;
#if UNITY_IOS
using UnityEditor.iOS.Xcode;
#endif
public class Postprocessor : AssetPostprocessor
{
#if UNITY_IOS
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
if (buildTarget == BuildTarget.iOS)
{
string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
PBXProject proj = new PBXProject();
proj.ReadFromString(File.ReadAllText(projPath));
string target = proj.TargetGuidByName("Unity-iPhone");
proj.SetBuildProperty(target, "ENABLE_BITCODE", "false");
File.WriteAllText(projPath, proj.WriteToString());
// Add url schema to plist file
string plistPath = path + "/Info.plist";
PlistDocument plist = new PlistDocument();
plist.ReadFromString(File.ReadAllText(plistPath));
// Get root
PlistElementDict rootDict = plist.root;
rootDict.SetBoolean("UIRequiresFullScreen",true);
plist.WriteToFile(plistPath);
}
}
#endif
}
答案 1 :(得分:-1)
实际上总是调用OnPostprocessBuild,因此您不必在post export方法字段中放置任何内容,该字段是为更具体的方法设计的。