README_zh.md

预编译工具配置指南

工具下载配置

下载配置用于配置下载和解压参数

核心配置项说明

参数 描述
remote_url 远程包下载地址
unzip_dir 解压目标路径
unzip_filename 解压后的顶层目录名(用于版本管理和旧文件清理)

基础配置示例

场景1:指定操作系统与CPU架构

以 ark_js_prebuilts 工具为例,在 Linux x86_64 环境下的配置如下:

{
    "name": "ark_js_prebuilts",
    "tag": "base",
    "build_type": "src, indep",
    "config": {
        "linux": {
            "x86_64": { 
                "remote_url": "/openharmony/compiler/llvm_prebuilt_libs/ark_js_prebuilts_20230713.tar.gz",
                "unzip_dir": "${code_dir}/prebuilts/ark_tools",
                "unzip_filename": "ark_js_prebuilts"
            }
        }
    }
}

场景2:CPU架构无关配置

若工具包不依赖CPU架构(如纯脚本工具),可做如下配置:

{
    "name": "ark_js_prebuilts",
    "tag": "base",
    "build_type": "src, indep",
    "config": {
        "linux": {
            "any": {
                "remote_url": "/openharmony/compiler/llvm_prebuilt_libs/ark_js_prebuilts_20230713.tar.gz",
                "unzip_dir": "${code_dir}/prebuilts/ark_tools",
                "unzip_filename": "ark_js_prebuilts"
            }
            
        }
    }
}

场景3:平台无关配置

若工具包和平台无关,配置进一步简化:

{
    "name": "ark_js_prebuilts",
    "tag": "base",
    "build_type": "src, indep",
    "config": {
        "any":{
            "any": {
                "remote_url": "/openharmony/compiler/llvm_prebuilt_libs/ark_js_prebuilts_20230713.tar.gz",
                "unzip_dir": "${code_dir}/prebuilts/ark_tools",
                "unzip_filename": "ark_js_prebuilts"
            }
        }
    }
}

高级配置场景

多版本并行下载(以LLVM为例)

若需在同一平台下安装多个版本,配置项改为列表形式:

{
    "name": "llvm",
    "tag": "base",
    "build_type": "src, indep",
    "config": {
        "linux": {
            "x86_64": [
                {
                    "remote_url": "/openharmony/compiler/clang/15.0.4-3cec00/ohos_arm64/clang_ohos-arm64-3cec00-20250320.tar.gz",
                    "unzip_dir": "${code_dir}/prebuilts/clang/ohos/ohos-arm64",
                    "unzip_filename": "llvm",
                },
                {
                    "remote_url": "/openharmony/compiler/clang/15.0.4-3cec00/windows/clang_windows-x86_64-3cec00-20250320.tar.gz",
                    "unzip_dir": "${code_dir}/prebuilts/clang/ohos/windows-x86_64",
                    "unzip_filename": "llvm",
                },
                {
                    "remote_url": "/openharmony/compiler/clang/15.0.4-3cec00/linux/clang_linux-x86_64-3cec00-20250320.tar.gz",
                    "unzip_dir": "${code_dir}/prebuilts/clang/ohos/linux-x86_64",
                    "unzip_filename": "llvm",
                }
            ]
        }
    }
}

使用公共配置

当配置中存在值相同的配置项时,可提取公共配置避免冗余:
原始冗余配置

{
    "name": "ark_js_prebuilts",
    "tag": "base",
    "build_type": "src, indep",
    "config": {
        "linux": {
            "x86_64": {
                "remote_url": "/openharmony/compiler/llvm_prebuilt_libs/ark_js_prebuilts_20230713.tar.gz",
                "unzip_dir": "${code_dir}/prebuilts/ark_tools",
                "unzip_filename": "ark_js_prebuilts"
            }
        },
        "darwin": {
            "x86_64": {
                "remote_url": "/openharmony/compiler/llvm_prebuilt_libs/ark_js_prebuilts_darwin_x64_20230209.tar.gz",
                "unzip_dir": "${code_dir}/prebuilts/ark_tools",
                "unzip_filename": "ark_js_prebuilts"
            }
        }
    }
}

优化后配置

{
    "name": "ark_js_prebuilts",
    "tag": "base",
    "build_type": "src, indep",
    "unzip_dir": "${code_dir}/prebuilts/ark_tools",
    "unzip_filename": "ark_js_prebuilts",
    "config": {
        "linux": {
            "x86_64": {
                "remote_url": "/openharmony/compiler/llvm_prebuilt_libs/ark_js_prebuilts_20230713.tar.gz"
            }
        },
        "darwin": {
            "x86_64": {
                "remote_url": "/openharmony/compiler/llvm_prebuilt_libs/ark_js_prebuilts_darwin_x64_20230209.tar.gz"
                
            }
        }
    }
}

配置继承规则

  • 工具配置会继承全局配置
  • 平台配置会继承工具配置
  • 存在相同配置项时,内部配置会覆盖继承的配置

说明

  • 全局配置在工具配置的外层定义
  • 平台配置在config里面定义
  • 除config和handle,都属于工具配置

处理配置

部分工具在下载解压完成后需要进行额外的处理,这些处理操作可以在handle中定义,handle会在下载解压完成后执行,若没有下载解压操作,handle则会直接执行。handle是一个列表,其中的每一项都代表一个操作

handle配置特点

  • 顺序执行:操作项按配置顺序依次执行
  • 使用变量:操作中可使用外部变量
  • 灵活控制:平台配置中可通过指定handle_index,定制操作序列
  • 容错机制:若操作中的变量解析失败,跳过当前操作

公共操作列表

操作类型 参数 用途
symlink src: 链接源
dest: 目的链接地址
生成符号链接
copy src: 源
dest: 目的
复制文件或文件夹
remove path:要删除的路径, 可以是字符串,也可以是一个列表 删除文件或文件夹
move src: 源路径
dest: 目标路径
filetype: 该参数默认不填写,若填写,则只会移动src目录中以filetype为后缀的文件
移动文件,若dest是个已存在的目录,则会移动到目录中
shell cmd: 命令(列表形式) 执行shell命令

handle配置示例

场景: 解压Node工具后创建符号链接:

{
    "name": "node",
    "tag": "base",
    "build_type": "src, indep",
    "unzip_dir": "${code_dir}/prebuilts/build-tools/common/nodejs",
    "config": {
        "linux": {
            "x86_64": [
                {
                    "remote_url": "/nodejs/v14.21.1/node-v14.21.1-linux-x64.tar.gz",
                    "unzip_filename": "node-v14.21.1-linux-x64",
                    "symlink_src": "${code_dir}/prebuilts/build-tools/common/nodejs/node-v14.21.1-linux-x64"
                }
            ]
        }
    },
    "handle": [
        {
            "type": "symlink",
            "src": "${symlink_src}",
            "dest": "${code_dir}/prebuilts/build-tools/common/nodejs/current"
        }
    ]
}

变量处理

  • 变量只能使用${var_name}的方式指定
  • 工具配置可以使用自身内部以及全局配置中的变量
  • 平台配置可以使用自身内部、工具以及全局配置中的变量
  • handl中的操作项可以使用自身内部、平台、工具以及全局配置中的变量
  • 变量解析优先级为:自身内部配置 > 平台配置 > 工具配置 > 全局配置