Skip to content

Titanium Packager Class VFS

As you may know, Titanium loads itself into the global space. This means, Titanium is loaded once. This prevents a few things from happening:

  • Firstly, it stops classes from being overwritten by others with the same name.
  • It ensures variables stored in a classes static table is shared across all applications.
  • It speeds the computer up by eliminating the need to load Titanium every time an application starts.

This comes with a drawback that needs to be addressed in a simple, effective manner. The drawback, is that projects built with the Titanium packager use a custom file system so that the VFS (virtual file system) is used. However, Titanium does not respect this and as a result doesn't query the VFS for files.

This means, projects built the packager cannot be distributed as fs calls from within Titanium will not use the virtual file system and will report 'file not found', resulting in an exception. One solution, is that all fs calls from within an application require a FileSystem instance, which will be automatically created by Application instances or manually created by daemon services that don't require an Application instance.