{"record":{"id":"f74e5b63d64355ed","repo":"EllanJiang/GameFramework","slug":"package-version-list-0-is-invalid-error-message-is-1","errorCode":null,"errorMessage":"Package version list '{0}' is invalid, error message is '{1}'.","messagePattern":"Package version list '(.+?)' is invalid, error message is '(.+?)'\\.","errorType":"exception","errorClass":"GameFrameworkException","httpStatus":null,"severity":"critical","filePath":"GameFramework/Resource/ResourceManager.ResourceIniter.cs","lineNumber":177,"sourceCode":"                        throw;\n                    }\n\n                    throw new GameFrameworkException(Utility.Text.Format(\"Parse package version list exception '{0}'.\", exception), exception);\n                }\n                finally\n                {\n                    m_CachedFileSystemNames.Clear();\n                    if (memoryStream != null)\n                    {\n                        memoryStream.Dispose();\n                        memoryStream = null;\n                    }\n                }\n            }\n\n            private void OnLoadPackageVersionListFailure(string fileUri, string errorMessage, object userData)\n            {\n                throw new GameFrameworkException(Utility.Text.Format(\"Package version list '{0}' is invalid, error message is '{1}'.\", fileUri, string.IsNullOrEmpty(errorMessage) ? \"<Empty>\" : errorMessage));\n            }\n        }\n    }\n}\n","sourceCodeStart":159,"sourceCodeEnd":182,"githubUrl":"https://github.com/EllanJiang/GameFramework/blob/d0c010b05167c58e92350449d04864a91ca13fd2/GameFramework/Resource/ResourceManager.ResourceIniter.cs#L159-L182","documentation":"Thrown in OnLoadPackageVersionListFailure when the LoadBytes call for the package version list file completes with a failure callback. The message includes the file URI that failed and the underlying error message (or '<Empty>' if none). This indicates the version list file itself could not be read, not that its contents were invalid.","triggerScenarios":"ResourceManager.InitResources invokes m_ResourceHelper.LoadBytes on ReadOnlyPath + RemoteVersionListFileName and the resource helper's failure callback fires: file missing, unreadable, or helper-level load error.","commonSituations":"Package version list file not copied into StreamingAssets before the build; file name mismatch (default RemoteVersionListFileName vs custom name); storage permission missing on Android so read-only path is inaccessible; the file was overwritten by an empty placeholder.","solutions":["Verify the version list file exists at the read-only path with the exact expected file name (PackageVersionList binary) in the build output.","Check the errorMessage in the exception (or '<Empty>') and inspect the ResourceHelper implementation's load logic for the real cause.","On Android, ensure the helper reads via UnityWebRequest for streamingAssets and that storage permissions are granted.","Re-run the resource build pipeline so the version list is regenerated and included."],"exampleFix":"// before\n// version list never built into StreamingAssets\n// after\n// build step: GameFramework ResourceBuilder -> output to Assets/StreamingAssets/GameFramework with version list enabled","handlingStrategy":"try-catch","validationCode":"var path = Path.Combine(resourceComponent.ReadOnlyPath, \"PackageVersionList.dat\");\nbool exists = File.Exists(path) || File.Exists(Path.Combine(Application.streamingAssetsPath, \"GameFramework/PackageVersionList.dat\"));","typeGuard":null,"tryCatchPattern":"try { resourceComponent.InitResources(); }\ncatch (GameFrameworkException ex) { Log.Fatal(\"Version list load failed: {0}\", ex.Message); /* re-deploy resources */ }","preventionTips":["Confirm the resource build pipeline includes the version list in StreamingAssets.","Match file names between builder output and RemoteVersionListFileName.","Check platform storage permissions before first load."],"tags":["resource","file-not-found","version-list","gameframework"],"backgroundTag":"file-read-failed","analyzedSha":"d0c010b05167c58e92350449d04864a91ca13fd2","analyzedAt":"2026-09-15T13:37:15.352Z","contentChangedAt":"2026-09-15T13:37:15.352Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}