跳至主要內容

项目配置文件

约 2114 字大约 7 分钟道无涯

在Auto.js Pro中,我们有时不仅需要运行单文件,还有运行项目的需求。所谓项目,就是一个包含配置、代码文件、资源文件(图片等)的文件夹。

在Auto.js Pro中可以在主页新建项目,有多种项目模块可供选择(Pro 8.7以上)。

project.json

project.json文件用于配置项目的相关参数,比如主文件、启动图、包名等信息。

参数名称意义类型默认值
androidResources安卓资源,参见androidResourcesObject{ "resDir": "res", "manifest": "AndroidManifest.xml" }
build自动生成的构建信息,无需修改,参见buildObject
assets保留字段,暂时没有作用string[][]
encryptLevel加密级别 0-不加密, 1-本地加密, 2-在线加密(仅在8.7以上版本支持)number0
icon桌面图标string"icons/icon.png"
ignore从VSCode中同步项目时的忽略文件,在Pro9.3以上版本被.autojs.sync.ignore文件代替string[]["build"]
launchConfig启动配置,参见launchConfigObject
main入口文件string"main.js"
nameapp名字string""
optimization优化配置,参见optimizationObject
packageName包名,必须符合Android包名规范,另外上传商店时包名必须唯一string""
permissionConfig权限配置,参见permissionConfigObject{ "manifestPermissions": [], "requestListOnStartup": [] }
publish发布/上传商店配置,参见publishObject
scripts构建等时机自动触发运行的脚本配置,参见scriptsObject
useFeatures特性 continuation - 是否使用协程特性,参见示例->协程string[][]
versionCode版本号number1
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 Auto.js 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 原生界面。

参数名称意义类型默认值
resDirAndroid资源文件夹string"res"
manifestAndroidManifest.xml的文件路径string"AndroidManifest.xml"

build

自动生成的构建信息,包含构建时间、构建号等,请勿修改。

打包软件中,将根据这里的信息判断是否需要解压覆盖安装包的文件到数据路径。(每次打包后这里的信心会更新,因此安装后可以自动更新本地数据中的项目文件)

参数名称意义类型默认值
build_id自动生成的构建idstring""
build_number构建号,每次构建自增1number1
build_time上次构建时间number当前13位时间戳
release是否为打包后项目,为自动生成的字段,不需要修改booleanfalse

launchConfig

打包后的相关启动配置。

参数名称意义类型默认值
displaySplash打包后是否显示启动图(即使设置为false,打包后第一次也仍然会显示启动图)booleantrue
hideLogs打包后是否隐藏日志界面booleanfalse
splashIcon打包后启动界面图标string"icons/splashIcon.png"
splashLayoutXml启动图xml,用于打包后自定义启动图,参见示例->项目与打包->自定义启动图 (8.5以上版本)string"splash.xml"
splashText打包后启动界面文本string"Powered by Auto.js Pro"
stableMode打包后是否以稳定模式运行booleanfalse

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支持的最大autojs版本号number0
maxProVersion支持的最大autojspro版本号number0
minAutoJsVersion支持的最小autojs版本号number0
minProVersion支持的最大autojspro版本号number0
minSdkVersion支持的最小安卓版本number0
category项目类别,用于发布在商店时作为分类string"其他"
details项目详细描述,用于发布在商店时作为项目详情string""
permissions权限列表,比如"root",暂时没有作用string[][]
summary脚本功能简介string""
tags脚本标签,由于商店还没有标签过滤功能,暂时没有作用string[][]

optimization

优化配置。目前用于打包时缩小体积。

参数名称意义类型默认值
removeOpenCv不需要图色模块booleanfalse
unusedResources不需要内置图标booleanfalse

ignore配置

Pro 8.7.6新增

ignore配置文件类似于.gitignore,用于配置Auto.js 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文件。

该文件配置的规则所匹配的文件,将不视为Auto.js Pro的JavaScript源码文件,不参与加密过程。

例如有些js文件是用于Web中加载的,不希望在打包时将其加密,可以配置该文件来忽略。

.autojs.build.ignore

文件路径:项目文件夹下.autojs.build.ignore文件。

该文件配置的规则所匹配的文件,将不参与Auto.js 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环境);目前暂不支持执行Auto.js环境的js脚本。

目前支持以下时机:

构建apk时触发

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