runtime-fold-plugin
v1.0.2
Published
Hvigor plugin that inserts runtime-layer LTO Fold task between MoveCangjieLibs and DoNativeStrip
Readme
runtime-fold-plugin
Hvigor 插件,在构建图中 MoveCangjieLibs 和 DoNativeStrip 之间插入 runtime 层 LTO Fold 任务,将多个运行时 .so 的 bitcode 合并到 libcangjie-std-core.so,减少最终包体大小。
安装
npm install runtime-fold-plugin --save-dev确保项目已有 @ohos/hvigor 和 @ohos/hvigor-ohos-plugin。
使用
在工程根目录的 hvigorfile.ts 中引入:
import { hapTasks } from '@ohos/hvigor-ohos-plugin';
import { runtimeFoldPlugin } from 'runtime-fold-plugin';
export default {
system: hapTasks,
plugins: [runtimeFoldPlugin()]
}配置
runtimeFoldPlugin({
dryRun?: boolean; // 仅诊断,不实际执行
noCache?: boolean; // 禁用增量缓存
debugKeepTemp?: boolean; // 保留临时文件用于调试
})原理
- Pass 1(app 层):由 cjpm combine 完成,配置在 cjpm.toml
- Pass 2(runtime 层):由本插件完成
插件扫描 runtime 目录下的 .so 文件,通过规则匹配对应的 .bc/.a 文件,将可折叠的 bitcode 通过 cjc --lto=full 合并到 libcangjie-std-core.so。不能折叠的 .so 被替换为空壳 stub,确保链接关系不中断。
增量缓存基于输入文件指纹(工具链、SDK bitcode、app/runtime .so 的 DT_NEEDED)自动判断是否需要重新合并。
License
MIT
