gpt4 book ai didi

c# - Adcolony 路径共享违规

转载 作者:行者123 更新时间:2023-11-28 19:57:30 25 4
gpt4 key购买 nike

我有一款完整的游戏可以在 Android 中正常运行,并且已经在 Play 商店中发布。现在我想在 iTunes 上提交它。当我开始为 iOS 构建相同的项目时,我遇到了这个奇怪的错误 -

IOException: Sharing violation on path /Users/abhi/Projects/Unity/XCode Proj/Hammer Inc/Unity-iPhone.xcodeproj/project.pbxproj
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/FileStream.cs:320)
System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share)
(wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
System.IO.File.OpenRead (System.String path) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/File.cs:363)
System.IO.StreamReader..ctor (System.String path, System.Text.Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/StreamReader.cs:167)
System.IO.StreamReader..ctor (System.String path)
(wrapper remoting-invoke-with-check) System.IO.StreamReader:.ctor (string)
System.IO.File.OpenText (System.String path) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/File.cs:368)
System.IO.File.ReadAllLines (System.String path) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/File.cs:560)
AdColonyPostProcessBuild.updateXcodeProject (System.String pbxProjectFilePath, System.String thirdPartyFrameworkDirectoryPath, .Framework[] frameworksToAdd) (at Assets/Editor/AdColonyPostProcessBuild.cs:356)
AdColonyPostProcessBuild.OnPostProcessBuild (BuildTarget target, System.String path) (at Assets/Editor/AdColonyPostProcessBuild.cs:340)
UnityEditor.HostView:OnGUI()

我在使用 GPG 插件时遇到了一些问题并且如前所述 here 出现了这个错误,我删除了与 Google Play 游戏相关的文件和文件夹,因为我打算在 iOS 中使用 Game Center。

我目前在同一个项目中使用 Native-X、Adcolony、Revmob(我知道这太多了,但那是因为选择合适网络的实验)。我不确定是哪个插件引起了冲突。

我尝试删除 AdColonyPostProcessBuild.cs 文件,但出现以下错误 -

KeyNotFoundException: The given key was not present in the dictionary.
System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (.TKey
key) (at
/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/
corlib/System.Collections.Generic/Dictionary.cs:150)
UnityEditor.XCodeEditor.PBXResolver.ResolveName (System.String guid) (at
Assets/Editor/iOS/PBX Editor/PBXParser.cs:49)
UnityEditor.XCodeEditor.PBXResolver.ResolveName (System.String guid) (at
Assets/Editor/iOS/PBX Editor/PBXParser.cs:53)
UnityEditor.XCodeEditor.PBXParser.GUIDComment (System.String guid,
System.Text.StringBuilder builder) (at Assets/Editor/iOS/PBX
Editor/PBXParser.cs:218)
UnityEditor.XCodeEditor.PBXParser.SerializeString (System.String
aString, System.Text.StringBuilder builder, Boolean useQuotes, Boolean
readable) (at Assets/Editor/iOS/PBX Editor/PBXParser.cs:546)
UnityEditor.XCodeEditor.PBXParser.SerializeDictionary
(System.Collections.Generic.Dictionary`2 dictionary,
System.Text.StringBuilder builder, Boolean readable, Int32 indent) (at
Assets/Editor/iOS/PBX Editor/PBXParser.cs:481)
UnityEditor.XCodeEditor.PBXParser.SerializeValue (System.Object value,
System.Text.StringBuilder builder, Boolean readable, Int32 indent) (at
Assets/Editor/iOS/PBX Editor/PBXParser.cs:439)
UnityEditor.XCodeEditor.PBXParser.SerializeDictionary
(System.Collections.Generic.Dictionary`2 dictionary,
System.Text.StringBuilder builder, Boolean readable, Int32 indent) (at
Assets/Editor/iOS/PBX Editor/PBXParser.cs:489)
UnityEditor.XCodeEditor.PBXParser.SerializeValue (System.Object value,
System.Text.StringBuilder builder, Boolean readable, Int32 indent) (at
Assets/Editor/iOS/PBX Editor/PBXParser.cs:439)
UnityEditor.XCodeEditor.PBXParser.Encode
(UnityEditor.XCodeEditor.PBXDictionary pbxData, Boolean readable) (at
Assets/Editor/iOS/PBX Editor/PBXParser.cs:177)
UnityEditor.XCodeEditor.XCProject.CreateNewProject
(UnityEditor.XCodeEditor.PBXDictionary result, System.String path) (at
Assets/Editor/iOS/XCProject.cs:620)
UnityEditor.XCodeEditor.XCProject.Save () (at
Assets/Editor/iOS/XCProject.cs:645) XCodePostProcess.OnPostProcessBuild
(BuildTarget target, System.String path) (at
Assets/Editor/iOS/XCodePostProcess.cs:35) UnityEditor.HostView:OnGUI()

有没有人遇到过这个问题并找到了解决方案?我不想从项目中删除每个 SDK 并重新开始构建它。

最佳答案

我发现您有几个问题。这听起来很糟糕。但是,我绝对愿意提供帮助。

发生了什么:

关于您提供的第一个错误,它似乎在读取 Unity 为 iOS 构建过程创建的 pbxproj 文件时遇到问题。

通常,在为 iOS 构建时,Unity 会创建一个 .pbxproj 文件以及其余的 XCode 项目,然后将其放置在您指定的目标构建目录中。之后,它会触发开发人员已 Hook 的任何后处理构建逻辑。

AdColony 的 AdColonyPostProcessBuild.cs 文件通常打算在后处理构建逻辑中最后运行,因为我们依赖于解析 .pbxproj 文件本身,然后逐行添加信息。我们更愿意最后这样做的原因是因为目前存在针对此问题的解决方案,这些解决方案不一定能促进我们需要的所有配置,但其他开发人员会使用它。

第一个错误看起来像是 AdColonyPostProcessBuild 无法访问 .pbxproj 文件的访问冲突问题,因此它可以读取所有行。因此,它抛出一个 IOException,如下所示:

IOException:路径/Users/abhi/Projects/Unity/XCode Proj/Hammer Inc/Unity-iPhone.xcodeproj/project.pbxproj 上的共享违规

System.IO.File.ReadAllLines(System.String 路径)(在/Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/File.cs:560 )AdColonyPostProcessBuild.updateXcodeProject (System.String pbxProjectFilePath, System.String thirdPartyFrameworkDirectoryPath, .Framework[] frameworksToAdd) (at Assets/Editor/AdColonyPostProcessBuild.cs:356)

这引出了我的下一个观点。

您列出的第二个错误是由称为“XCode Editor For Unity”的替代后处理构建逻辑引起的。

你可以在这里找到它:

https://github.com/dcariola/XCodeEditor-for-Unity

此解决方案是名为 mod_pbxproj 的解决方案的 C# 实现,其他开发人员已选择此解决方案。但是,当它与 AdColony 一起使用时,如果在运行 AdColonyPostProcessBuild.cs 之后执行 XCode Editor For Unity,它通常会中断。

这是因为在运行 AdColonyPostProcessBuild.cs 时,用于 XCode Editor For Unity 解析的一些信息已被复制并被读取两次。

AdColony 已将我们的后处理逻辑配置为最后运行,依赖于在 XCode Editor For Unity 运行后解析信息的能力。

建议的解决方案

您提供的信息非常有帮助,但很难确定为什么会出现这些信息。

如果您可以列出您正在使用的任何其他插件,这些插件具有适用于 iOS 构建的后处理构建,并且您还可以提供任何关于它们在构建中的优先级或出现顺序的指示,那么将有助于此过程。

之后,我在您的错误输出中看到的行号与我们当前可用包中的 AdColonyPostProcessBuild.cs 文件的当前版本有点不一致。

我首先建议转到此链接,下载当前包,然后重新导入 AdColonyPostProcessBuild.cs https://github.com/AdColony/AdColony-Unity-SDK

如果这不能解决问题,我会打开 AdColonyPostProcessBuild.cs 文件并将其优先级更改为较低,最好是最后运行的后处理构建项目。您可以通过将第 302 行的数字“200”更改为一个很大的数字(例如“1000”)来执行此操作。

如果这不能解决您的问题,我将需要更多地了解您的环境配置,例如您正在使用的其他插件,以及您对默认 AdColonyPostProcessBuild.cs 文件所做的偏差。

问候!

AdColony 支持

关于c# - Adcolony 路径共享违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com