项目配置文件

2022年10月22日

项目配置文件

在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.permissionopen in new window

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: 打包阶段后触发

上次编辑于:
贡献者: Bruce