app
APP
档案
APP
文件摘要
应用程序资源文件。
描述
大应用资源文件
指定应用程序使用的资源以及应用程序如何启动。必须始终有一个应用程序资源文件名为Application.app
每项申请Application
在系统里。
应用程序控制器在加载/启动应用程序时读取该文件。中的函数也使用它。systools
例如,在生成开始脚本时。
文件语法
应用程序资源文件将被调用。Application.app
,在哪里Application
是应用程序的名称。该文件位于目录中。ebin
为了申请。
该文件必须包含单个Erlang术语,称为应用规范
*
{application, Application,
[{description, Description},
{id, Id},
{vsn, Vsn},
{modules, Modules},
{maxP, MaxP},
{maxT, MaxT},
{registered, Names},
{included_applications, Apps},
{applications, Apps},
{env, Env},
{mod, Start},
{start_phases, Phases},
{runtime_dependencies, RTDeps}]}.
Value Default
----- -------
Application atom() -
Description string() ""
Id string() ""
Vsn string() ""
Modules [Module] []
MaxP int() infinity
MaxT int() infinity
Names [Name] []
Apps [App] []
Env [{Par,Val}] []
Start {Module,StartArgs} []
Phases [{Phase,PhaseArgs}] undefined
RTDeps [ApplicationVersion] []
Module = Name = App = Par = Phase = atom()
Val = StartArgs = PhaseArgs = term()
ApplicationVersion = string()
Application
应用程序名称。
对于应用程序控制器,所有键都是可选的。对于任何省略的键,都使用各自的默认值。
的功能systools
需要更多信息。如果使用这些密钥,则必须使用下列密钥:
description
vsn
modules
registered
applications
忽略其他键。systools
...
description
应用程序的一行描述。
id
产品标识,或类似的。
vsn
应用程序的版本。
modules
此应用程序引入的所有模块。systools
在生成开始脚本和tar文件时使用此列表。模块只能在一个应用程序中定义。
maxP
不建议-被忽略
应用程序中允许的最大进程数。
maxT
允许应用程序运行的最大时间(毫秒)。指定时间后,应用程序将自动终止。
registered
在此应用程序中启动所有已注册进程的名称。systools
使用此列表检测不同应用程序之间的名称冲突。
included_applications
此应用程序包含的所有应用程序。启动此应用程序时,所有包含的应用程序都由应用程序控制器自动加载,但不启动。假定包含的应用程序的最高主管由该应用程序的主管启动。
applications
允许启动此应用程序之前必须启动的所有应用程序。systools
使用此列表来生成正确的启动脚本。缺省为空列表,但请注意所有应用程序对(至少)Kernel和STDLIB都有依赖关系。
env
应用程序使用的配置参数。通过调用来检索配置参数的值application:get_env/1,2
。应用程序资源文件中的值可以由配置文件中的值(请参阅参考资料config(4)
)或命令行标志(请参阅参考资料)中的值覆盖erts:erl(1)
。
mod
指定应用程序回调模块和开始参数,请参见application(3)
...
键mod
对于作为监督树实现的应用程序来说,这是必需的,否则应用程序控制器不知道如何启动它。mod
对于没有进程的应用程序,可以省略,通常是代码库,例如STDLIB。
start_phases
应用程序的开始阶段列表和相应的开始参数。如果存在此键,则应用程序主程序除了通常调用Module:start/2
,也会呼叫Module:start_phase(Phase,Type,PhaseArgs)
对于由Key定义的每个开始阶段start_phases
.只有在这一延长的开始程序之后,application:start(Application)
退货。
启动阶段可用于同步启动应用程序及其包含的应用程序。在这种情况下,密钥mod
必须具体说明如下:
{mod, {application_starter,[Module,StartArgs]}}
然后,应用程序主机会调用Module:start/2
主应用程序,然后调用Module:start_phase/3
每个启动阶段(为主应用程序定义),既为主应用程序启动阶段,也为其启动阶段定义的每个应用程序启动。
这意味着对于包含的应用程序,开始阶段的集合必须是为主应用程序定义的一组阶段的子集。有关更多信息,请参见OTP Design Principles
...
runtime_dependencies
应用程序依赖的应用程序版本列表。这种应用程序版本的一个例子是"kernel-3.0"
。指定为运行时相关性的应用程序版本是最低要求。也就是说,比依赖关系中指定的更大的应用程序版本满足要求。有关如何比较应用程序版本的信息,请参阅Versions
系统原理用户指南中的一节。
注意,应用程序版本指定了源代码版本。另一个间接的要求是,构建指定版本的已安装二进制应用程序,使其与系统的其他部分兼容。
某些依赖项只能在特定的运行时场景中被要求。如果存在这种可选的依赖项,则在特定应用程序的相应“App”文档中指定并记录这些依赖项。
警告
该runtime_dependencies
密钥在OTP 17.0介绍。其值的类型可能会在OTP 17发布期间发生变化。
警告
在OTP 17发行版期间,OTP应用程序中指定的所有运行时依赖项可能都不是完全正确的。这方面的工作正在积极进行中。OTP应用程序中声明的运行时依赖项在OTP 18中是正确的。
另见
application(3)
,,,systools(3)