0

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 Plugin で問題が発生した後、このエラーが発生しました。ここで説明したように、iOS で Game Center を使用する予定だったため、Google Play ゲームに関連するファイルとフォルダーを削除しました。

私は現在、同じプロジェクトで 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 を削除して、再度ビルドを開始したくはありません。

4

2 に答える 2

2

いくつかの問題があるようです。それは残念なことのように聞こえます。しかし、私は間違いなく助けたいです。

何が起こっていますか:

あなたが提供した最初のエラーに関しては、Unity が iOS ビルド プロセス用に作成する pbxproj ファイルの読み取りに問題があるようです。

通常、iOS 用にビルドする場合、Unity は残りの XCode アイテムと組み合わせて .pbxproj ファイルを作成し、それを指定したターゲット ビルド ディレクトリに配置します。その後、開発者がフックした後処理ビルド ロジックをトリガーします。

AdColony の AdColonyPostProcessBuild.cs ファイルは、通常、ポスト プロセス ビルド ロジックの最後に実行されることを意図しています。これは、.pbxproj ファイル自体を解析し、情報を 1 行ずつ追加することに依存しているためです。これを最後に行うことを好む理由は、この問題に対する現在の解決策が存在し、必要なすべての構成を必ずしも容易にするわけではありませんが、他の開発者がそれを使用しているためです。

最初のエラーは、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) (Assets/Editor/AdColonyPostProcessBuild.cs:356)

これは次のポイントにつながります。

リストした 2 番目のエラーは、「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 の解析に使用される情報の一部が重複しており、2 回読み込まれているためです。

AdColony は、ポスト プロセス ロジックを最後に実行するように構成しており、Unity 用の XCode エディターが実行された後に情報を解析する機能に依存しています。

推奨される解決策

あなたが提供した情報は非常に役に立ちましたが、なぜこれらが発生するのかを特定するのは困難です.

このプロセスを容易にするのは、iOS ビルドにポスト プロセス ビルドが適用されている使用中の他のプラグインを一覧表示でき、かつそれらの優先度またはビルド時の発生順序の指示も提供できる場合です。

その後、エラー出力に表示される行番号は、現在利用可能なパッケージの AdColonyPostProcessBuild.cs ファイルの現在のバージョンと少し矛盾しているように見えます。

まず、このリンクにアクセスして現在のパッケージをダウンロードし、AdColonyPostProcessBuild.cs https://github.com/AdColony/AdColony-Unity-SDKを再インポートすることをお勧めします。

それでも問題が解決しない場合は、AdColonyPostProcessBuild.cs ファイルを開き、優先度を低くして、できれば最後にポスト プロセス ビルド項目を実行するように変更します。これを行うには、302 行目の数値「200」を「1000」などの大きな数値に変更します。

これで問題が解決しない場合は、使用している他のプラグインや、デフォルトの AdColonyPostProcessBuild.cs ファイルからの逸脱など、環境構成について詳しく知る必要があります。

よろしく!

AdColony サポート

于 2014-09-05T20:39:06.253 に答える