模块脚本导入
约 1434 字大约 5 分钟
2026-01-30
什么是模块脚本?
模块脚本是放置在模块目录中的可执行脚本文件,用于在系统启动时自动执行特定任务。FolkPatch 支持以下类型的模块脚本:
- post-fs-data.sh - 在文件系统挂载后执行(阻塞式)
- post-mount.sh - 在模块挂载后执行
- service.sh - 在系统启动后期执行(非阻塞式)
- boot-completed.sh - 在系统启动完成后执行
- uninstall.sh - 在模块被卸载时执行
- action.sh - 点击管理器中"Action"按钮时执行
提示
大多数情况下,使用 service.sh 即可满足需求。
准备工作
在开始导入脚本前,请确保:
- 已安装 FolkPatch 并成功获取 Root 权限
- 已安装所需模块(如果是向现有模块添加脚本)
- 准备好脚本文件(已编写好的
.sh文件)
导入方式一:直接编辑模块文件夹
步骤 1:定位模块目录
模块脚本需要放置在模块目录中。模块的标准路径是:
/data/adb/modules/模块ID/注意
如果您要给系统模块添加脚本,需要先从模块仓库下载模块安装包。
步骤 2:将脚本放入模块目录
使用文件管理器(推荐 MT 管理器)或 ADB 命令:
# 示例:将 service.sh 放入指定模块
adb push service.sh /data/adb/modules/your_module_id/或者直接使用管理器功能:
- 打开 FolkPatch 管理器
- 进入"模块"页面
- 找到目标模块,点击进入详情
- 选择"浏览模块文件"
- 将脚本文件复制到模块根目录
步骤 3:设置执行权限
脚本必须设置为可执行才能运行:
# 通过 ADB 设置权限
adb shell
su
chmod +x /data/adb/modules/模块ID/service.sh或在 MT 管理器中:
- 长按脚本文件
- 选择"属性"
- 勾选"执行"权限(所有用户)
步骤 4:重启生效
脚本将在下次系统启动时自动运行。
导入方式二:通过模块安装包
如果您正在创建新模块或修改现有模块的安装包,可以将脚本打包进去。
步骤 1:准备模块安装包
模块安装包是一个 ZIP 文件,结构如下:
module.zip
├── module.prop # 模块信息配置文件
├── customize.sh # 可选:安装时执行的脚本
├── system.prop # 可选:系统属性修改
├── sepolicy.rule # 可选:SELinux 策略
├── post-fs-data.sh # 可选:启动脚本
├── post-mount.sh # 可选:启动脚本
├── service.sh # 可选:启动脚本
├── boot-completed.sh # 可选:启动脚本
├── uninstall.sh # 可选:卸载脚本
├── action.sh # 可选:Action 按钮脚本
└── system/ # 可选:要挂载到系统的文件
└── ...步骤 2:创建 module.prop
module.prop 是模块的配置文件,必须包含以下字段:
id=your_module_id
name=模块名称
version=v1.0
versionCode=1
author=你的名字
description=模块的简短描述ID 格式要求
模块 ID 必须符合正则表达式 ^[a-zA-Z][a-zA-Z0-9._-]+$,即:
- 必须以字母开头
- 只能包含字母、数字、点、下划线和连字符
- 示例:✓
my_module, ✓module.101, ✗123module
步骤 3:编写启动脚本
创建您的脚本文件(例如 service.sh):
#!/system/bin/sh
# 这是一个示例服务脚本
# 获取模块目录路径
MODDIR=${0%/*}
# 在这里写入您的脚本逻辑
echo "Hello from FolkPatch!" > /data/local/tmp/test.log
# 示例:修改系统属性
resetprop ro.build.display.id "My Custom ROM"重要提示
- 使用
MODDIR=${0%/*}获取模块目录,不要硬编码路径 - 不要直接修改
/system分区,使用resetprop修改属性 - 所有命令都应使用完整路径或通过环境变量调用
步骤 4:打包并安装
- 将所有文件压缩为 ZIP 格式
- 在 FolkPatch 管理器中选择"安装模块"
- 选择您的模块安装包
- 等待安装完成并重启
验证脚本是否生效
方法 1:查看日志文件
许多脚本会在执行时输出日志,您可以在以下位置查找:
/data/local/tmp/
/data/adb/modules/模块ID/
/sdcard/方法 2:使用 ADB 查看系统日志
adb logcat -s Magisk:*或查看 FolkPatch 相关日志:
adb logcat | grep -i "folkpatch\|apatch"方法 3:检查文件修改
如果脚本修改了文件或属性,可以直接检查修改是否生效:
# 检查属性
adb shell getprop ro.build.display.id
# 检查文件
adb shell ls -la /data/local/tmp/常见问题
Q1: 脚本没有执行怎么办?
检查清单:
- 脚本是否设置了执行权限?(
chmod +x) - 脚本是否放在了正确的位置?
- 脚本文件名是否正确?(必须是
service.sh,post-fs-data.sh等标准名称) - 模块是否已启用?
- 是否已重启设备?
Q2: 如何调试脚本?
在脚本开头添加日志输出:
#!/system/bin/sh
MODDIR=${0%/*}
# 记录脚本开始执行
echo "[$(date)] Script started" >> /data/local/tmp/script_debug.log
# 您的脚本逻辑
echo "[$(date)] Executing step 1..." >> /data/local/tmp/script_debug.log
# 更多调试信息
echo "[$(date)] Script completed" >> /data/local/tmp/script_debug.logQ3: 可以在 Recovery 中安装带脚本的模块吗?
不可以。 FolkPatch 模块不支持在 Recovery 中安装,必须通过管理器 APP 安装。
Q4: 脚本执行失败会影响系统启动吗?
post-fs-data.sh执行失败可能会导致启动延迟(最长等待 10 秒)service.sh和boot-completed.sh是非阻塞的,不会卡住启动- 建议将非关键脚本放在
service.sh中
Q5: 如何停止脚本执行?
- 禁用整个模块:在管理器中关闭模块开关
- 删除脚本文件
- 重启设备
下一步
脚本导入后,您可能需要:
版权所有
版权归属:FolkPatch Team
