在此页面上
软件包JET应用程序
应用程序开发完成后,编写 JavaScript Object Notation (JSON) 文件,其中介绍了在设备上部署应用程序之前要构建和打包应用程序的内容。JSON 是轻量级数据交换格式。人类容易读写,机器也容易解析和生成。有关详细信息 ,请参阅 https://www.json.org 。
JSON 文件包含一组属性,包含在一组大括号内。属性使用两种结构:
键值对的集合。
一个有序值列表。
进一步阅读,了解 JSON 格式中用于应用程序打包的每个属性。
主部分属性
JSON 文件的顶部块是文件的主要部分。它由必需属性和可选属性组成。
强制属性
表 1 说明了主部分中应用程序打包的所有 JSON 文件都必须具有的必需属性。以下是仅包含必需属性的简单应用程序 JSON 文件的示例:
{ "app-name": "testcapp", "app-path": "bin/test-c-app", "language": "c", "app-type": "standalone", "sign": "yes", "os-type": "bsd10", "target-arch": "i386", "description": "C Test Application", "srcs": { "bin/test-c-app": ["test_app.c"] } }
属性 |
描述 |
示例值 |
---|---|---|
|
指定应用程序的名称。 |
|
|
指定应用程序实施目录的路径。所有路径应均相对于沙盒 src。 |
|
|
指定用于开发应用程序的语言。 |
|
|
这是列表属性指定设备上运行的主要脚本或脚本的文件名或文件名(此处请勿指定模块)。主脚本文件将部署在设备的 /var/db/scripts/jet 路径下。 |
|
|
指定应用程序是独立程序还是守护程序。 |
|
|
指示应用程序是需要签名还是未签名。 |
|
|
指定是在传统 Junos OS (bsd6) 上部署应用程序,还是Junos OS升级版 FreeBSD (bsd10) 部署。 |
|
|
指定要部署应用程序的目标架构。 |
|
|
编写有关应用程序的简要(一行)说明。这会显示在操作命令 |
|
可选属性
表 2 说明了您可以在 JSON 文件的主要部分包括用于应用程序打包的可选属性。下面是包含必需和可选属性的示例主部分:
{ "app-name": "sample_pyapp", "app-path": "python/sample_pyapp", "language": "python", "main-scripts": ["foo.py", "bar.py"], "app-type": "standalone", "sign": "no", "os-type": "bsd6", "target-arch": "i386", "description": "Simple Python test app", "c-compiler-flags": "-DFOO -DBAR", "c++-compiler-flags": "-DAPP_CHECK –DSOMETHING_ON", "linker-flags": "-lstdc++ -lfoo" }
属性 |
描述 |
示例值 |
---|---|---|
|
指定 C 编译器标志列表(如果有)。可针对主部分、依赖库 (dep-libs) 或相关 Python 模块(dep-py-模块)定义编译标记。 |
|
|
指定 C++ 编译器标记列表(如果有)。可针对主部分、依赖库 (dep-libs) 或相关 Python 模块(dep-py-模块)定义编译标记。 |
|
|
指定链路器标志列表(如果有)。使用这些标志可指定链接链接期间所需的其他库或附加链路特定标志,您可以在主部分或 dep-py-modules 部分定义特定于链路的标记。 |
|
源属性
表 3 显示了两个源属性,可用于为应用程序包指定源文件。以下是一个示例 Python 应用程序,以及要部署的其他模块文件以及主脚本文件:
{ "app-name": "sample_pyapp", "app-path": "python/sample_pyapp", "language": "python", "main-scripts": ["foo.py", "bar.py"], "app-type": "standalone", "sign": "no", "os-type": "bsd6", "target-arch": "i386", "description": "Simple Python test app", "srcs": { "python/sample_pyapp": ["a.py", "b.py"], "python/sample_pyapp/temp": ["temp1.py", "temp2.py"] }, "extn-srcs": { "python/sample_pyapp": ["foo.c", "bar.c"], "python/sample_pyapp/temp": ["1.cpp", "2.cpp"] } }
属性 |
描述 |
示例值 |
---|---|---|
|
指定其他源文件的列表。对于 Python 应用程序,这些源文件是附加的模块文件。对于 C 或 C++ 应用程序,这些源文件是要编译以生成 lib/二进制的源代码。每个条目都应该是一个键值对,其中密钥是源文件的路径,而值是一系列源文件名。 |
"srcs": { "python/sample_pyapp": ["a.py", "b.py"], "python/sample_pyapp/temp": ["temp1.py", "temp2.py"] } |
|
本节仅适用于 Python。指定要编译的 C 或 C++ 模块文件列表。每个条目都应该是一个键值对,其中密钥是源文件的路径,而值是一系列源文件名。 |
"extn-srcs": { "python/sample_pyapp": ["foo.c", "bar.c"], "python/sample_pyapp/temp": ["1.cpp", "2.cpp"] } |
依赖库
您必须编译依赖库 (dep-libs
) 部分提供的任何依赖库。此 JSON 代码生成的库会随应用程序一起打包。本部分 dep-libs
是多个库依赖项的阵列,每个库都由以下键名称对组成:
"lib-name"
是库的名称。"lib-path"
是开发沙盒中的库源代码路径。"srcs"
是一个键值对,其中路径是密钥,其值是源文件列表。
下面是一个属性的示例 dep-libs
:
"dep-libs": [ { "lib-name": "xyz", "lib-path": "lib/xyz", "srcs": { "lib/xyz": ["foo.c", "bar.c"] } } ]
相关 Python 模块
相关 Python 模块 (dep-py-modules
) 属性仅用于 Python 应用程序。属性包含任何相关 Python 模块,这些模块需要随应用程序一起编译和打包。属性 dep-py-modules
是一个阵列,您可以在其中指定多个 Python 模块依赖项。每个依赖项都由下列对象组成:
"py-module-name"
是 Python 模块的名称。"py-module-path"
是开发沙盒中 Python 模块源代码的路径。"srcs"
是一个键值对,其中路径是密钥,其值是源文件列表。"extn-srcs"
是一个键值对,其中路径是密钥,其值是 Python 扩展源代码文件列表。
下面是一个属性的示例 dep-py-modules
:
"dep-py-modules": [ { "py-module-name": "module_a", "py-module-path": "python/module_a", "srcs": { "python/module_a": ["foo.py", "bar.py"] }, "extn-srcs": { "python/module_a": ["foo.c", "bar.c"], "python/module_a/sub_mod": ["lmn.cpp"] } } ]