Unity有些版本的bug,因为什么Cloud build。这几天更新Unity版本后jenkins无法自动打IOS IPA,报错内容为:
Please provide an auth token with USYM_UPLOAD_AUTH_TOKEN environment
Google一大波,才找到解决方案:填写个假的token
https://forum.unity.com/threads/ios-build-is-failing-seems-like-a-fastlane-problem-not-sure-how-to-proceed.682201/#post-4701557
但是用了google广告插件的童鞋们要注意了,上边的解决方案还不够,还得修改Project以及其他Target中的property,设置假的Token。把下边的代码放入Unity 项目中的Editor中,可以解决问题。蛋疼的Unity,搞毛线啊。。。。一个什么鬼Cloud build我们也不用,还要让我们头秃一波
#if UNITY_IOSusing UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEditor.iOS.Xcode;
using UnityEngine;/// <summary>
/// Adding fake USYM_UPLOAD_AUTH_TOKEN if not already set, to avoid cli build errors
/// see https://forum.unity.com/threads/ios-build-is-failing-seems-like-a-fastlane-problem-not-sure-how-to-proceed.682201/#post-4701557
/// </summary>
public class AddFakeUploadTokenPostprocessor : IPostprocessBuildWithReport
{public int callbackOrder => 100;public void OnPostprocessBuild(BuildReport report){var pathToBuiltProject = report.summary.outputPath;var target = report.summary.platform;if (target != BuildTarget.iOS){return;}Debug.LogFormat("Postprocessing build at \"{0}\" for target {1}", pathToBuiltProject, target);PBXProject project = new PBXProject();string pbxFilename = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";// string pbxFilename = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.wcworkspace";//string pbxFilename = pathToBuiltProject + "/Unity-iPhone.xcworkspace/project.pbxproj";project.ReadFromFile(pbxFilename);#if UNITY_2019_3_OR_NEWERstring targetGUID = project.GetUnityMainTargetGuid();//project.target#elsestring targetName = PBXProject.GetUnityTargetName();string targetGUID = project.TargetGuidByName(targetName);#endifvar token = project.GetBuildPropertyForAnyConfig(targetGUID, "USYM_UPLOAD_AUTH_TOKEN");if (string.IsNullOrEmpty(token)){token = "FakeToken";}string targetGUID2 = project.TargetGuidByName("UnityFramework");project.SetBuildProperty(targetGUID, "USYM_UPLOAD_AUTH_TOKEN", token);project.SetBuildProperty(targetGUID2, "USYM_UPLOAD_AUTH_TOKEN", token);project.SetBuildProperty(project.ProjectGuid(), "USYM_UPLOAD_AUTH_TOKEN", token); //project.SetBuildPropertyForConfig();project.WriteToFile(pbxFilename);}
}#endif