Auto.js 脚本:清理手机数据但保留账号
// 脚本功能:清理手机数据但保留账号状态
// 需要 Auto.js 4.1.1 以上版本
// 需要 root 权限或无障碍权限
// 配置区域 ==================================
var config = {
keepAccounts: true, // 是否保留账号
clearAppData: true, // 是否清除应用数据
clearCache: true, // 是否清除缓存
whitelist: [ // 不想清理的应用包名列表
"com.tencent.mm", // 微信
"com.tencent.mobileqq", // QQ
"com.google.android.gms", // Google服务
"com.android.vending", // Google Play商店
// 添加其他你想保留的应用
]
};
// ==========================================
// 主函数
function main() {
// 请求必要的权限
requestPermissions();
// 显示警告信息
alert("警告", "此脚本将清理手机数据,请确保重要数据已备份!", function(){
// 开始执行清理
startCleaning();
});
}
// 请求权限
function requestPermissions() {
// 请求root权限
if (!requestRoot()) {
toast("未获取root权限,部分功能可能无法使用");
}
// 请求无障碍服务
auto.waitFor();
}
// 开始清理流程
function startCleaning() {
// 显示进度对话框
let progressDialog = dialogs.build({
title: "正在清理",
progress: {
max: 100,
showMinMax: true
},
cancelable: false
}).show();
// 步骤1: 清理应用缓存 (10%)
if (config.clearCache) {
progressDialog.setProgress(10);
progressDialog.setMessage("正在清理应用缓存...");
clearAllAppCache();
}
// 步骤2: 清理应用数据 (40%)
if (config.clearAppData) {
progressDialog.setProgress(40);
progressDialog.setMessage("正在清理应用数据...");
clearAppData();
}
// 步骤3: 清理系统缓存 (70%)
progressDialog.setProgress(70);
progressDialog.setMessage("正在清理系统缓存...");
clearSystemCache();
// 步骤4: 保留账号数据 (90%)
if (config.keepAccounts) {
progressDialog.setProgress(90);
progressDialog.setMessage("正在保留账号数据...");
backupAccounts();
}
// 完成 (100%)
progressDialog.setProgress(100);
progressDialog.setMessage("清理完成!");
sleep(1000);
progressDialog.dismiss();
toast("清理完成!");
}
// 清理所有应用缓存
function clearAllAppCache() {
let pm = context.getPackageManager();
let apps = pm.getInstalledApplications(0);
apps.forEach(app => {
if (!config.whitelist.includes(app.packageName)) {
try {
let cmd = "pm clear " + app.packageName;
shell(cmd, true);
} catch (e) {
console.log("清理缓存失败: " + app.packageName);
}
}
});
}
// 清理应用数据
function clearAppData() {
let pm = context.getPackageManager();
let apps = pm.getInstalledApplications(0);
apps.forEach(app => {
if (!config.whitelist.includes(app.packageName)) {
try {
// 删除应用数据目录
let dataDir = "/data/data/" + app.packageName;
if (files.exists(dataDir)) {
shell("rm -rf " + dataDir, true);
}
// 删除外部存储数据
let extDir = "/sdcard/Android/data/" + app.packageName;
if (files.exists(extDir)) {
shell("rm -rf " + extDir, true);
}
} catch (e) {
console.log("清理数据失败: " + app.packageName);
}
}
});
}
// 清理系统缓存
function clearSystemCache() {
try {
// 清理dalvik缓存
shell("rm -rf /data/dalvik-cache", true);
// 清理临时文件
shell("rm -rf /data/local/tmp/*", true);
shell("rm -rf /cache/*", true);
// 清理日志
shell("rm -rf /data/log/*", true);
shell("rm -rf /data/tombstones/*", true);
} catch (e) {
console.log("清理系统缓存失败: " + e);
}
}
// 备份账号数据
function backupAccounts() {
try {
// 备份账号数据库 (需要root)
let accountDb = "/data/system/users/0/accounts.db";
let backupDir = "/sdcard/account_backup/";
if (files.exists(accountDb)) {
if (!files.exists(backupDir)) {
files.createWithDirs(backupDir);
}
shell("cp " + accountDb + " " + backupDir + "accounts.db", true);
}
} catch (e) {
console.log("备份账号数据失败: " + e);
}
}
// 运行主函数
main();