EllanJiang/GameFramework · critical · GameFrameworkException
Package version list
Error message
Package version list '{0}' is invalid, error message is '{1}'. What it means
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.
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.
Example fix
// before // version list never built into StreamingAssets // after // build step: GameFramework ResourceBuilder -> output to Assets/StreamingAssets/GameFramework with version list enabled
Defensive patterns
Strategy: try-catch
Validate before calling
var path = Path.Combine(resourceComponent.ReadOnlyPath, "PackageVersionList.dat"); bool exists = File.Exists(path) || File.Exists(Path.Combine(Application.streamingAssetsPath, "GameFramework/PackageVersionList.dat"));
Try / catch
try { resourceComponent.InitResources(); }
catch (GameFrameworkException ex) { Log.Fatal("Version list load failed: {0}", ex.Message); /* re-deploy resources */ } Prevention
- 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.
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.
Related errors
- Deserialize updatable version list failure.
- Parse updatable version list exception
- Updatable version list
- Read-only version list has been parsed.
- Deserialize read-only version list failure.
AI-assisted analysis of EllanJiang/GameFramework@d0c010b051 (2026-09-15).
Data as JSON: /api/errors/f74e5b63d64355ed.
Report an issue: GitHub.
Appendix: source
Thrown at GameFramework/Resource/ResourceManager.ResourceIniter.cs:177
throw;
}
throw new GameFrameworkException(Utility.Text.Format("Parse package version list exception '{0}'.", exception), exception);
}
finally
{
m_CachedFileSystemNames.Clear();
if (memoryStream != null)
{
memoryStream.Dispose();
memoryStream = null;
}
}
}
private void OnLoadPackageVersionListFailure(string fileUri, string errorMessage, object userData)
{
throw new GameFrameworkException(Utility.Text.Format("Package version list '{0}' is invalid, error message is '{1}'.", fileUri, string.IsNullOrEmpty(errorMessage) ? "<Empty>" : errorMessage));
}
}
}
}
View on GitHub (pinned to d0c010b051)