In computer programming, a manifest file is a file containing metadata for a group of accompanying files that are part of a set or coherent unit. For example, the files of a computer program may have a manifest describing the name, version number, license and the constituent files of the program.[1] The term "manifest" is borrowed from a cargo shipping procedure, where a ship manifest would list the crew and/or cargo of a vessel.
Manifest files are similar in nature to declaration files in that both specify the expected structure of a computer program to be consumed by another computer program, providing additional information that allow system software, software-defined tools (e.g., compilers, linters), development environments, or other developers to understand how to interact with certain resources or code. Unlike declaration files, manifests do this in different ways and for different purposes. For instance, manifest files describe things like dependencies, permissions, or runtime settings that control the execution of code. Declaration files describe the structure of code (such as types, interfaces, or functions) to control the translation of code, support static type-checking, and enable convenient features like autocompletion and automatic code refactoring.
Build systems and operating systems may use manifest files to understand how to set up, execute, or integrate a computer program into an existing system. Furthermore, while manifest files focus on project-level or system-level information (like runtime settings or dependencies), declaration files focus on code-level details (like the types or signatures of functions and objects).
This Directory class contains special metadata in a manifest file. This data can be recognized by the Contact Provider, which developers can use to create a custom directory, and to transfer data between the device and online services.