Unity有些版本的bug,因为什么Cloud build。这几天更新Unity版本后jenkins无法自动打IOS IPA,报错内容为:
Please provide an auth token with USYM_UPLOAD_AUTH_TOKEN environment
Google一大波,才找到解决方案:填写个假的token
但是用了google广告插件的童鞋们要注意了,上边的解决方案还不够,还得修改Project以及其他Target中的property,设置假的Token。把下边的代码放入Unity 项目中的Editor中,可以解决问题。蛋疼的Unity,搞毛线啊。。。。一个什么鬼Cloud build我们也不用,还要让我们头秃一波
#if UNITY_IOS
using 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_NEWER
string targetGUID = project.GetUnityMainTargetGuid();
//project.target
#else
string targetName = PBXProject.GetUnityTargetName();
string targetGUID = project.TargetGuidByName(targetName);
#endif
var 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