unity输出android工程的路径bug

一次Unity2018输出android工程时候,输出文件夹选择的是E:\Gradle,结果报错如下:
UnauthorizedAccessException: Access to the path "E:\" is denied. System.IO.Directory.CreateDirectoriesInternal (System.String path) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0) System.IO.Directory.CreateDirectory (System.String path) (at <d7ac571ca2d04b2f981d0d886fa067cf>:0) UnityEditor.Android.PostProcessor.Tasks.ZipIl2cppSymbols.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <df7ba4d130594d168eec372b930522d4>:0) UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context) (at <df7ba4d130594d168eec372b930522d4>:0) UnityEditor.Android.PostProcessAndroidPlayer.PostProcess (UnityEditor.BuildTarget target, System.String stagingAreaData, System.String stagingArea, System.String playerPackage, System.String installPath, System.String companyName, System.String productName, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at <df7ba4d130594d168eec372b930522d4>:0) UnityEditor.Android.AndroidBuildPostprocessor.PostProcess (UnityEditor.Modules.BuildPostProcessArgs args, UnityEditor.BuildProperties& outProperties) (at <df7ba4d130594d168eec372b930522d4>:0) UnityEditor.PostprocessBuildPlayer.Postprocess (UnityEditor.BuildTargetGroup targetGroup, UnityEditor.BuildTarget target, System.String installPath, System.String companyName, System.String productName, System.Int32 width, System.Int32 height, UnityEditor.BuildOptions options, UnityEditor.RuntimeClassRegistry usedClassRegistry, UnityEditor.Build.Reporting.BuildReport report) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/PostprocessBuildPlayer.cs:286) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
之前一直用的5.6.5也是这样输出,没啥毛病,为毛2018就不行了呢。
后来找源码看了半天,发现有这么几句:在这里插入代码片

string path = context.Get<string>("InstallPath");
      string path2 = Path.GetFileNameWithoutExtension(path) + "-" + PlayerSettings.bundleVersion + "-v" + (object) PlayerSettings.Android.bundleVersionCode + ".symbols.zip";
      string str1 = Path.Combine(path1, "symbols");
      Command.Run(Utils.SevenZipPath, string.Format("a -tzip -mx0 \"{0}\" ./", (object) path2), str1, "Failed to compress IL2CPP symbol files.");
      string directoryName = Path.GetDirectoryName(path);
      string str2 = Path.Combine(directoryName, path2);
      Directory.CreateDirectory(directoryName);
      FileUtil.DeleteFileOrDirectory(str2);
      FileUtil.MoveFileOrDirectory(Path.Combine(str1, path2), str2);```
  

这个path是指的选择的文件夹路径,关键是里面的一句string directoryName = Path.GetDirectoryName(path);这里获取到的便是选择文件夹的父目录,而这里父目录是E盘,
下面又有一句Directory.CreateDirectory(directoryName);。。创建一个文件夹叫E,这在windows下显然是不行的,因此也就报了这个错。。Mark一下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值