设备与存储配方
小于 1 分钟
设备与存储配方
这页更偏 Auto.js 风格日用脚本能力,适合写一些带状态的小工具脚本。
存储开关
const prefs = storages.create("feature_flags");
const enabled = prefs.get("vip_hook_enabled", true);
log(`vip_hook_enabled=${enabled}`);
prefs.put("vip_hook_enabled", !enabled);
项目目录里的日志文件
const base = files.cwd();
const logDir = files.join(base, "logs/");
const logFile = files.join(logDir, "runtime.txt");
files.ensureDir(logDir);
files.append(logFile, `${Date.now()} runtime boot\n`);
log(`logFile=${logFile}`);
读取 JSON 配置
const configPath = files.join(files.cwd(), "config.json");
if (files.exists(configPath)) {
const config = JSON.parse(files.read(configPath));
log(JSON.stringify(config));
}
设备信息快照
const snapshot = {
width: device.width,
height: device.height,
brand: device.brand,
model: device.model,
sdkInt: device.sdkInt,
release: device.release,
androidId: device.getAndroidId()
};
log(JSON.stringify(snapshot, null, 2));
亮度与音量控制
const currentBrightness = device.getBrightness();
const currentMusic = device.getMusicVolume();
log(`brightness=${currentBrightness}`);
log(`music=${currentMusic}`);
device.setBrightness(180);
device.setMusicVolume(6);
唤醒与震动
if (!device.isScreenOn()) {
device.wakeUp();
}
device.vibrate(80);
文件摘要
const apkPath = "/sdcard/Download/base.apk";
const md5 = crypto.digest(apkPath, "MD5", {
input: "file",
output: "hex"
});
log(md5);
用 files 做简单缓存
const cacheDir = files.join(files.cwd(), "cache/");
const cacheFile = files.join(cacheDir, "state.json");
files.ensureDir(cacheDir);
files.write(cacheFile, JSON.stringify({
packageName: lpparam.packageName,
savedAt: Date.now()
}, null, 2));
和 Hook 结合
const stateStore = storages.create("runtime_state");
hook({
class: "android.app.Activity",
classloader: lpparam.classLoader,
method: "onResume",
params: [],
after(it) {
stateStore.put("lastActivity", String(it.thisObject));
stateStore.put("lastResumeAt", Date.now());
}
});
这类配方很适合做“轻量状态持久化 + 小范围设备控制”的脚本。
