项目配置文件
项目配置文件
在CloudControl Pro中,我们有时不仅需要运行单文件,还有运行项目的需求。所谓项目,就是一个包含配置、代码文件、资源文件(图片等)的文件夹。
在CloudControl Pro中可以在主页新建项目,有多种项目模块可供选择(Pro 8.7以上)。
project.json
project.json
文件用于配置项目的相关参数,比如主文件、启动图、包名等信息。
参数名称 | 意义 | 类型 | 默认值 |
---|---|---|---|
androidResources | 安卓资源,参见androidResources | Object | { "resDir": "res", "manifest": "AndroidManifest.xml" } |
build | 自动生成的构建信息,无需修改,参见build | Object | |
assets | 保留字段,暂时没有作用 | string[] | [] |
encryptLevel | 加密级别 0-不加密, 1-本地加密, 2-在线加密(仅在8.7以上版本支持) | number | 0 |
icon | 桌面图标 | string | "icons/icon.png" |
ignore | 从VSCode中同步项目时的忽略文件,在Pro9.3以上版本被.autojs.sync.ignore文件代替 | string[] | ["build"] |
launchConfig | 启动配置,参见launchConfig | Object | |
main | 入口文件 | string | "main.js" |
name | app名字 | string | "" |
optimization | 优化配置,参见optimization | Object | |
packageName | 包名,必须符合Android包名规范,另外上传商店时包名必须唯一 | string | "" |
permissionConfig | 权限配置,参见permissionConfig | Object | { "manifestPermissions": [], "requestListOnStartup": [] } |
publish | 发布/上传商店配置,参见publish | Object | |
scripts | 构建等时机自动触发运行的脚本配置,参见scripts | Object | |
useFeatures | 特性continuation - 是否使用协程特性,参见示例->协程 |
string[] | [] |
versionCode | 版本号 | number | 1 |
versionName | 给用户看的版本名称 | string | "1.0.0" |
完整配置实例:
{
"androidResources": {
"resDir": "res",
"manifest": "AndroidManifest.xml"
},
"assets": [],
"build": {
"build_id": "6F47F367-1",
"build_number": 1,
"build_time": 1615553004812,
"release": true
},
"encryptLevel": 0,
"useFeatures": [],
"icon": "res/icon.png",
"ignore": ["build"],
"launchConfig": {
"displaySplash": true,
"hideLogs": false,
"splashIcon": "res/splashIcon.png",
"splashLayoutXml": "splash.xml",
"splashText": "Powered by CloudControl Pro",
"stableMode": false
},
"main": "main.js",
"name": "Shape3.0",
"optimization": {
"removeOpenCv": true,
"unusedResources": true
},
"packageName": "com.suzy.rippledrawable",
"permissionConfig": {
"manifestPermissions": ["android.permission.WRITE_EXTERNAL_STORAGE"],
"requestListOnStartup": ["android.permission.WRITE_EXTERNAL_STORAGE"]
},
"publish": {
"category": "其他",
"details": "控件描边、渐变、水波纹、文字渐变",
"maxAutoJsVersion": -1,
"minAutoJsVersion": -1,
"maxProVersion": 8059999,
"minProVersion": 8050000,
"minSdkVersion": 2,
"permissions": [],
"summary": "控件描边、渐变、水波纹、文字渐变",
"tags": []
},
"scripts": {},
"versionCode": 1,
"versionName": "1.0.0"
}
最小配置实例:
{
"name": "新建项目",
"main": "main.js",
"ignore": [
"build"
],
"packageName": "com.example",
"versionName": "1.0.0",
"versionCode": 1
}
androidResources
用于配置Android原生界面的参数,参见示例->复杂界面->Android 原生界面。
参数名称 | 意义 | 类型 | 默认值 |
---|---|---|---|
resDir | Android资源文件夹 | string | "res" |
manifest | AndroidManifest.xml的文件路径 | string | "AndroidManifest.xml" |
build
自动生成的构建信息,包含构建时间、构建号等,请勿修改。
打包软件中,将根据这里的信息判断是否需要解压覆盖安装包的文件到数据路径。(每次打包后这里的信心会更新,因此安装后可以自动更新本地数据中的项目文件)
参数名称 | 意义 | 类型 | 默认值 |
---|---|---|---|
build_id | 自动生成的构建id | string | "" |
build_number | 构建号,每次构建自增1 | number | 1 |
build_time | 上次构建时间 | number | 当前13位时间戳 |
release | 是否为打包后项目,为自动生成的字段,不需要修改 | boolean | false |
launchConfig
打包后的相关启动配置。
参数名称 | 意义 | 类型 | 默认值 |
---|---|---|---|
displaySplash | 打包后是否显示启动图(即使设置为false,打包后第一次也仍然会显示启动图) | boolean | true |
hideLogs | 打包后是否隐藏日志界面 | boolean | false |
splashIcon | 打包后启动界面图标 | string | "icons/splashIcon.png" |
splashLayoutXml | 启动图xml,用于打包后自定义启动图,参见示例->项目与打包->自定义启动图 (8.5以上版本) | string | "splash.xml" |
splashText | 打包后启动界面文本 | string | "Powered by CloudControl Pro" |
stableMode | 打包后是否以稳定模式运行 | boolean | false |
permissionConfig
Pro 8.8.1新增
自定义权限配置,包括应用打包后声明的权限列表和启动时自动申请的权限列表。
也可以在打包界面中使用权限配置修改。
参数名称 | 意义 | 类型 | 默认值 |
---|---|---|---|
manifestPermissions | 打包后应用声明的权限列表。为了兼容旧版本配置,如果该字段为null则默认为122个自带权限。 | string[] | null |
requestListOnStartup | 应用启动时自动申请的权限列表,权限务必包含在manifestPermissions中,否则会无法申请 | string[] | ["android.permission.WRITE_EXTERNAL_STORAGE"] |
全部权限列表参见Android官方文档:Manifest.permission
publish
上传商店发布项目的相关配置。
参数名称 | 意义 | 类型 | 默认值 |
---|---|---|---|
maxAutoJsVersion | 支持的最大CloudControl版本号 | number | 0 |
maxProVersion | 支持的最大CloudControlpro版本号 | number | 0 |
minAutoJsVersion | 支持的最小autojs版本号 | number | 0 |
minProVersion | 支持的最大CloudControlpro版本号 | number | 0 |
minSdkVersion | 支持的最小安卓版本 | number | 0 |
category | 项目类别,用于发布在商店时作为分类 | string | "其他" |
details | 项目详细描述,用于发布在商店时作为项目详情 | string | "" |
permissions | 权限列表,比如"root",暂时没有作用 | string[] | [] |
summary | 脚本功能简介 | string | "" |
tags | 脚本标签,由于商店还没有标签过滤功能,暂时没有作用 | string[] | [] |
optimization
优化配置。目前用于打包时缩小体积。
参数名称 | 意义 | 类型 | 默认值 |
---|---|---|---|
removeOpenCv | 不需要图色模块 | boolean | false |
unusedResources | 不需要内置图标 | boolean | false |
ignore配置
Pro 8.7.6新增
ignore配置文件类似于.gitignore
,用于配置CloudControl Pro处理打包、加密等忽略的文件。
ignore文件的规则和.gitignore
相同,比如:
# / 表示 当前文件所在的目录
# 忽略public下的所有目录及文件
/public/
#不忽略/public/assets,就是特例的意思,assets文件不忽略
!/public/assets
# 忽略具体的文件
index.js
# 忽略所有的js文件
*.js
# 忽略 a.js b.js
[ab].js
# 匹配规则和linux文件匹配一样
# 以斜杠“/”开头表示目录
# 以星号“*”通配多个字符
# 以问号“?”通配单个字符
# 以方括号“[]”包含单个字符的匹配列表
# 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录
.autojs.source.ignore
文件路径:项目文件夹下.autojs.source.ignore
文件。
该文件配置的规则所匹配的文件,将不视为CloudControl Pro的JavaScript源码文件,不参与加密过程。
例如有些js文件是用于Web中加载的,不希望在打包时将其加密,可以配置该文件来忽略。
.autojs.build.ignore
文件路径:项目文件夹下.autojs.build.ignore
文件。
该文件配置的规则所匹配的文件,将不参与CloudControl Pro的打包apk过程,最终生成的apk中,将不包含指定的文件。
例如有时node_modules仅在开发时使用,最终打包时已经通过webpack等工具打包为单文件,则可以配置忽略node_modules文件夹。
.autojs.sync.ignore
文件路径:项目文件夹下.autojs.sync.ignore
文件。
该文件配置的规则所匹配的文件,在VSCode插件运行、同步、保存电脑上的文件时,将被忽略。仅适用于Pro 9.3以上版本。
scripts
scripts字段用于配置构建等时机自动执行的shell命令。例如:
{
// ...
"scripts": {
"build-apk-pre-prepare": "sh build.sh"
},
// ...
}
以上配置将在打包apk前自动运行build.sh脚本,从而可以在打包前进行自定义的文件替换、混淆等。在这些shell命令中,你可以用node build.js
来执行js文件(纯Node.js环境);目前暂不支持执行CloudControl环境的js脚本。
目前支持以下时机:
构建apk时触发
CloudControl Pro构建apk分为几个阶段:
- 准备阶段:拷贝项目文件、apk文件,处理源文件等
- 构建阶段:执行aapt编译,添加内置图标包,修改并写入Manifest文件、处理插件等
- 优化阶段:移除无用资源、模块、混淆组件等
- 打包阶段:签名、压缩、清理工作空间等
可以在不同阶段自定义要执行的sh脚本。在这些脚本中,可以通过以下环境变量获取信息:
BUILD_APK_WORKSPACE
: 构建的临时工作区,也就是解压apk的临时项目BUILD_APK_WORKSPACE_PROJECT
: 工作区下的项目文件夹,项目将会被复制到这里BUILD_APK_OUTPUT
:apk的目标输出路径
可以通过pwd
等命令获取当前项目路径。
每个阶段对应的名称有:
-
build-apk-pre-prepare
: 准备阶段前触发 -
build-apk-post-prepare
: 准确阶段后触发 -
build-apk-pre-build
: 构建阶段前触发 -
build-apk-post-build
: 构建阶段后触发 -
build-apk-pre-optimize
: 优化阶段前触发 -
build-apk-post-optimize
: 优化阶段后触发 -
build-apk-pre-package
: 打包阶段前触发 -
build-apk-post-package
: 打包阶段后触发