宽表格和代码可左右滑动查看。
EasyClean v1.0.2 产品功能与商业化分析#
精确包名:com.smartnettools.studio.easyclean;样本及资料日期:2026-10-28,Asia/Shanghai(北京时间)。六专题补充版。
S1=当前APK静态直接证据;S2=工具回读;S3=当前真机观察;I=推断;U=未验证。反编译不是原始源码,内置配置不是线上最终配置。发布状态单独记录于批次入口。
结论与产品结构#
主清理产品有31个业务Activity,另集成Launcher3。照片/视频压缩分别有选择、配置和结果页面;大文件、重复文件、相似照片、截图清理继承共享文件权限流程;使用记录、少用应用、存储、Wi-Fi和测速是另一些工具,不应压成一行“支持清理”。
大文件链已追到BigFileActivity.I → C0851c → C0850b → C0852d.a → m3.m.b,传入10485760字节(10MiB)的扫描阈值。外层Y0.e.l会补足到至少3000ms的展示时长,不是3秒扫描超时;任务返回后写进度100,内部以候选处理数计算0–99。100%的UI进度不能独立证明所有文件完整扫描或删除。[N1–N3/N7]
NeedFilePermissionActivity在Android30+核Environment.isExternalStorageManager,并以MANAGE_APP_ALL_FILES_ACCESS_PERMISSION跳系统设置。不同工具的返回分支不相同,拒绝权限不能统一描述为继续清理。MainActivity初始化会cancelAll本包通知,回到主页后通知消失也不能独立认定召回从未展示。[N4/N5]
已确认入口与本次实际路径#
| 入口/功能 | 证据与限制 | 等级 |
|---|---|---|
| 主页入口 | 真机看到大文件、重复文件、照片优化、视频优化、相似照片、截图清理;首屏0MB不作为实际扫描结论。 | S3 |
| 扩展工具 | 静态页面/通知文案另含应用使用、商店上架状态、存储分析、少用应用、Wi-Fi安全、测速;具体处理效果未验证。 | S1 |
| Launcher3 | 包内包含 Launcher3 及其广播/服务,只证明集成;本次没有将它设为默认桌面。 | S1/U |
| 商业化 | 恢复启动时观察到 Google Mobile Ads AdActivity,返回后进入 MainActivity。未点击广告或执行清理。 | S3 |

截图只用于确认可见入口,未验证清理、杀毒或优化效果。
广告请求、缓存、回调与来源的完整阅读顺序#
广告场景开关与来源位已在综合分析恢复,本轮把它们放回产品路径:结果页CompleteActivity同时尝试clean-result全屏路径和同名原生容器;是否有缓存、Activity是否已销毁/结束分别判断。配置中的scan_result和代码调用的clean-result不是天然同一个键,必须通过具体包装层才能对应,不能仅凭名字近似合并。[N6]
七个SpecialAdControl场景是特定门禁集合,不是全App所有广告位全集。Thinkup与MAX的加载节流分别存在;加载间隔不等于展示频控。结果页默认桌面引导是产品推广行为,不能并入杀毒结果或广告展示证明。
真机已观察 GMA 全屏广告。业务广告控制器另有 Thinkup/TopOn 与 AppLovin MAX 两个实现:前者使用 TUInterstitialAutoAd、TUSplashAd,后者使用 MaxInterstitialAd、MaxAppOpenAd、MaxNativeAdLoader;不能由中介适配器目录认定各网络都出量。[A17][A18][S1/S3]
SpecialAdControl 有7个场景:home_center(主页中部)、home_bottom(主页底部)、scan_process(扫描过程)、scan_result(扫描结果)、result_page(完成页)、setting(设置)、preview_detail(预览详情)。默认 home_center=false,其他为 true;解析层读取其中6个字段,preview_detail 沿用对象值。scan_process/scan_result/home_center/setting 还要求 user_source>0 && !is_suspect;home_bottom/result_page/preview_detail 在该函数只按场景开关返回。这是候选入口门禁,不是每次必展示。[A15][A16]
可明确区分“加载节流”和“展示频控”:Thinkup 的插屏初始化重试间隔至少120000ms;开屏加载要求距上次展示至少2000ms、距上次加载至少30000ms。MAX非强制加载路径的原生间隔2000ms、开屏/插屏30000ms,初始化重试5000ms。这些判断不能改写成固定展示次数或用户日上限。[A17][A18]
通用展示先选择提供方,失败时在配置允许回退的条件下尝试另一实现。选择器的simple指令显示还读取远端首选、attr_network映射、缓存收益及计数,不能简化成“全量只走MAX”。普通反编译方法曾失败,已另存simple复核;收益选择的完整线上参数和所有业务入口频次仍为U。[A19][A20]
静态SDK/适配器迹象:Google Mobile Ads、AppLovin、Pangle、Mintegral、Moloco、Liftoff Vungle、Bigo、Meta Audience Network、Adjust、Firebase Messaging、Firebase Remote Config、AppMetrica。SDK目录存在不等于当前启用、出量或具有相应业务效果;本报告只把明确观察到的展示标S3。
广告场景台账#
本轮未形成完整、可验证的业务广告场景台账;SDK目录/广告位字段不能代替逐入口调用和线上配置。[U]
安装来源与下游差异#
App 注册 Adjust 变更/读取回调;安装来源成功回调把 install_referrer 交给自有解析。Adjust network 转小写后保存 attr_network:含 untrusted 时保存 is_suspect=1并返回;含 organic 时返回;其余路径把 user_source 按位或16。这里是字符串contains判断,不能自行替换为某个广告平台的标准自然/非自然枚举。[A1][A11][A13]
Referrer 满足任一规则时按位或1:包含tiktok_s / paid_traffic_s / singular / adjust中任一串;或同时含utm_content、app、source、data、nonce;或同时含gclid、gbraid、gad_source。该回调后把install_referrer_cnt写为10;持久化不是覆写掉既有来源位。[A12][A13][A14]
N5.b.i 的业务判断为user_source>0且非is_suspect。它参与上述部分广告入口,也用于main_pop_launcher与结果页的默认桌面引导;后者是桌面推广,不能当作杀毒结果或广告展示成功。没有读取本机真实referrer、广告标识或归因值;实际人群归属、线上配置仍U。[A14][A15][A21]
产品页面与资源绑定#
以下按Manifest业务命名空间和页面直接引用的资源回查。标题/提示只证明页面实现与显示线索,不证明扫描、删除或安全检测有效;空标题也不意味着没有页面。
| 业务Activity | 直接资源/布局线索 | 代码与方法边界 |
|---|---|---|
com.fubian.cleaner.preview.PreviewActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/preview/PreviewActivity.java;125行;工具报错标记0 |
com.fubian.cleaner.preview.FileDetailActivity |
Date;File Type;File Path;File Size;Photo Resolution;Duration | com/fubian/cleaner/preview/FileDetailActivity.java;323行;工具报错标记0 |
com.fubian.cleaner.compressor.PhotoCompressorConfigActivity |
Photo Optimizer;Please keep the screen lit and do not lock the screen or switch programs;Compressing...;Next;Preview;Select Quality | com/fubian/cleaner/compressor/PhotoCompressorConfigActivity.java;985行;工具报错标记0 |
com.fubian.cleaner.compressor.PhotoCompressorSelectActivity |
Photo Optimizer;Delete | com/fubian/cleaner/compressor/PhotoCompressorSelectActivity.java;355行;工具报错标记0 |
com.fubian.cleaner.language.LanguageActivity |
Confirm;English;Language | com/fubian/cleaner/language/LanguageActivity.java;348行;工具报错标记0 |
com.fubian.cleaner.compressor.BigFileActivity |
Large Files | com/fubian/cleaner/compressor/BigFileActivity.java;221行;工具报错标记0 |
com.fubian.cleaner.compressor.DuplicateFileActivity |
Duplicate Files;Duplicate group %1$d | com/fubian/cleaner/compressor/DuplicateFileActivity.java;279行;工具报错标记0 |
com.fubian.cleaner.compressor.VideoCompressorSelectActivity |
Delete;Video Optimizer | com/fubian/cleaner/compressor/VideoCompressorSelectActivity.java;274行;工具报错标记0 |
com.fubian.cleaner.compressor.VideoCompressorConfigActivity |
Please keep the screen lit and do not lock the screen or switch programs;Compressing...;Next;Preview;Video Optimizer | com/fubian/cleaner/compressor/VideoCompressorConfigActivity.java;670行;工具报错标记0 |
com.fubian.cleaner.compressor.CompressResultActivity |
Compress Failed;Compress Successfully;Released space;Results | com/fubian/cleaner/compressor/CompressResultActivity.java;729行;工具报错标记0 |
com.fubian.cleaner.compressor.DuplicatePhotoActivity |
Similar Photos;Delete | com/fubian/cleaner/compressor/DuplicatePhotoActivity.java;348行;工具报错标记0 |
com.fubian.cleaner.compressor.ScreenshotCleanActivity |
Delete;Screenshot Cleaner | com/fubian/cleaner/compressor/ScreenshotCleanActivity.java;259行;工具报错标记0 |
com.fubian.cleaner.compressor.OnlineStateActivity |
Store Check | com/fubian/cleaner/compressor/OnlineStateActivity.java;197行;工具报错标记0 |
com.fubian.cleaner.welcome.WelcomeActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/welcome/WelcomeActivity.java;72行;工具报错标记0 |
com.fubian.cleaner.clean.CleanResultActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/clean/CleanResultActivity.java;96行;工具报错标记0 |
com.fubian.cleaner.clean.CleanActivity |
Clean up %1$s;Trash Cleanup | com/fubian/cleaner/clean/CleanActivity.java;1015行;工具报错标记0 |
com.fubian.cleaner.usage.UseRecordGuideActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/usage/UseRecordGuideActivity.java;108行;工具报错标记0 |
com.fubian.cleaner.setting.SettingActivity |
Setting | com/fubian/cleaner/setting/SettingActivity.java;231行;工具报错标记0 |
com.fubian.cleaner.result.CompleteActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/result/CompleteActivity.java;95行;工具报错标记0 |
com.fubian.cleaner.result.ResultActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/result/ResultActivity.java;121行;工具报错标记0 |
com.fubian.cleaner.result.ThreatActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/result/ThreatActivity.java;156行;工具报错标记0 |
com.fubian.cleaner.setting.VipActivity |
Due on %1$s | com/fubian/cleaner/setting/VipActivity.java;430行;工具报错标记0 |
com.fubian.cleaner.usage.UsageRecordActivity |
Activity Monitor | com/fubian/cleaner/usage/UsageRecordActivity.java;170行;工具报错标记0 |
com.fubian.cleaner.usage.InfrequentlyAppActivity |
Rarely Used Apps | com/fubian/cleaner/usage/InfrequentlyAppActivity.java;214行;工具报错标记0 |
com.fubian.cleaner.memory.StorageUsageActivity |
Storage Usage | com/fubian/cleaner/memory/StorageUsageActivity.java;179行;工具报错标记0 |
com.fubian.cleaner.speedtest.SpeedTestActivity |
Please enable the\nnetwork connection;Later;No Network Connection;Network Speed;Try again | com/fubian/cleaner/speedtest/SpeedTestActivity.java;113行;工具报错标记0 |
com.fubian.cleaner.wifi.WifiSecurityActivity |
Later;No Wifi Connection;Open WLAN to connect;Replace Wi-Fi;Wi-Fi Security | com/fubian/cleaner/wifi/WifiSecurityActivity.java;267行;工具报错标记0 |
com.fubian.cleaner.main.MainActivity |
Popular System Shorts | com/fubian/cleaner/main/MainActivity.java;280行;工具报错标记0 |
com.fubian.cleaner.SplashActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/SplashActivity.java;161行;工具报错标记0 |
com.fubian.cleaner.uninstall.UninstallActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/uninstall/UninstallActivity.java;145行;工具报错标记0 |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
本Activity未直接引用可读标题;需沿绑定/父类定位 | com/fubian/cleaner/uninstall/UninstallConfirmActivity.java;153行;工具报错标记0 |
已解析的直接页面跳转#
逐条解析Intent及import后,仅保留目标确属本包业务Activity的调用。R8可能把点击回调合并到SDK命名空间,故源类位于SDK目录也不自动排除。动态路由、反射与Compose路由可能不在此表;不能把未命中当不可达。
| 发起类 | 目标页面 | 精确调用位置 |
|---|---|---|
x2.C8115e |
com.fubian.cleaner.main.MainActivity |
x2/C8115e.java:93 |
R9.b |
com.fubian.cleaner.main.MainActivity |
R9/b.java:317 |
Mb.a |
com.fubian.cleaner.SplashActivity |
mb/a.java:60 |
A6.b |
com.fubian.cleaner.SplashActivity |
A6/b.java:162 |
com.fubian.cleaner.preview.FileDetailActivity |
com.fubian.cleaner.preview.PreviewActivity |
com/fubian/cleaner/preview/FileDetailActivity.java:309 |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallConfirmActivity.java:56 |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallConfirmActivity.java:61 |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallConfirmActivity.java:92 |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallConfirmActivity.java:97 |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallConfirmActivity.java:128 |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallConfirmActivity.java:133 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:54 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:59 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:65 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:88 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:93 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:99 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:122 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.main.MainActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:127 |
com.fubian.cleaner.uninstall.UninstallActivity |
com.fubian.cleaner.uninstall.UninstallConfirmActivity |
com/fubian/cleaner/uninstall/UninstallActivity.java:133 |
远端覆盖、可用性与剩余验证#
notification_config JSON 可覆盖上述所有字段;删除入口、Job 和 FCM 指令的调用门禁不同。当前远端响应未取得。资源附录给出17组标题/正文语言配置与17组按钮/渠道字符串;两种配置计数不能相加为34种语言。
当前尚未完整验证所有工具的权限通过/拒绝、扫描/结果、返回/退出和广告顺序。文件功能以测试副本验证删除或压缩结果;自然/渠道分组需脱敏实际状态或受控对照,不能只用安装器判断。
原有代码锚点 A#
| 编号 | 证明内容 | 本地源位置 | 核验 |
|---|---|---|---|
| A1 | Adjust 与 Referrer 初始化 | jadx-repair/sources/com/fubian/cleaner/App.java:280–325 |
已回读 |
| A2 | 通知初始化、订阅、Job2001 | jadx-repair/sources/com/fubian/cleaner/App.java:570–617 |
已回读 |
| A3 | 周期Job回调 | jadx-repair/sources/T6MB1ZG64oyYB3335SxFg9s40zP0/z3XPSFr78q907eH19Mj.java:8–18 |
已回读 |
| A4 | FCM本地展示指令 | jadx-repair/sources/T6MB1ZG64oyYB3335SxFg9s40zP0/DDSQWC66.java:18–62 |
已回读 |
| A5 | 默认门禁参数 | jadx-repair/sources/Y0/j.java:29–43 |
已回读 |
| A6 | 远端覆盖与通知构建 | jadx-repair/sources/Mb/d.java:30–58 |
已回读 |
| A7 | 活跃时间节流、模板随机和两个按钮 | jadx-repair/sources/Mb/a.java:44–64 |
已回读 |
| A8 | 时段、活跃时间与通知间隔 | jadx-repair/sources/Mb/b.java:25–45 |
已回读 |
| A9 | 删除重建入口 | jadx-repair/sources/T6MB1ZG64oyYB3335SxFg9s40zP0/T6MB1ZG64oyYB3335SxFg9s40zP0.java:19–33 |
已回读 |
| A10 | 循环通知ID及实际notify | jadx-repair/sources/o5/z.java:45–62 |
已回读 |
| A11 | Adjust来源标记与可疑状态 | jadx-repair/sources/C4/c.java:30–53 |
已回读 |
| A12 | Referrer字符串规则及次数写回 | jadx-repair/sources/e6/e.java:55–67 |
已回读 |
| A13 | 来源位按位或并持久化 | jadx-repair/sources/Kb/h.java:18–30 |
已回读 |
| A14 | 来源标记实际业务判断 | jadx-repair/sources/N5/b.java:102–109 |
已回读 |
| A15 | 七个广告场景及分组门禁 | jadx-repair/sources/Y2/AbstractC8138a.java:15–78 |
已回读 |
| A16 | 默认字段及构造器指令;含反编译错误边界 | jadx-repair/sources/com/fubian/cleaner/ad/SpecialAdControl.java:116–217 |
已回读 |
| A17 | Thinkup加载、展示与节流 | jadx-repair/sources/E8/C5876f.java:74–140 |
已回读 |
| A18 | MAX开屏/原生/插屏加载节流 | jadx-repair/sources/E8/C5877g.java:146–221 |
已回读 |
| A19 | 展示失败后的提供方回退 | jadx-repair/sources/N5/b.java:121–142 |
已回读 |
| A20 | 提供方选择器simple指令复核 | analysis/simple/c/a.java:59–220 |
已回读 |
| A21 | 来源条件与默认桌面引导 | jadx-repair/sources/com/fubian/cleaner/result/ResultActivity.java:86–119 |
已回读 |
本轮补充代码锚点 N#
| 编号 | 证明内容 | 本地源位置 | 核验 |
|---|---|---|---|
| N1 | 大文件入口实际发起扫描任务 | jadx-repair/sources/com/fubian/cleaner/compressor/BigFileActivity.java:131–136 |
已回读 |
| N2 | 3000ms包装及最终进度100 | jadx-repair/sources/K2/C0851c.java:35–53 |
已回读 |
| N3 | 10MiB候选扫描和类型/大小读取 | jadx-repair/sources/K2/C0852d.java:65–109 |
已回读 |
| N4 | 文件权限、系统设置与工具返回分支 | jadx-repair/sources/com/fubian/cleaner/compressor/NeedFilePermissionActivity.java:95–195 |
已回读 |
| N5 | 主页初始化cancelAll和回调调度 | jadx-repair/sources/com/fubian/cleaner/main/MainActivity.java:196–213 |
已回读 |
| N6 | 同一结果页的全屏与原生调用 | jadx-repair/sources/com/fubian/cleaner/result/CompleteActivity.java:89–94 |
已回读 |
| N7 | 扫描包装补足最短展示时长,非超时 | jadx-repair/sources/Y0/e.java:165–215 |
已回读 |
六专题导航#
| 专题 | 用途 |
|---|---|
| 产品功能与商业化分析 | 业务任务、页面、广告与来源链 |
| 权限与后台机制拆包报告 | 声明、调用、实际授权和功能边界 |
| 保活与拉活反编译代码册 | 机制图、主链步骤、代码片段与控制流修复 |
| 拉活通知规则与文案全量报告 | 触发、状态、频控、动作、候选和多语言全文 |
| 样本与证据索引 | 版本、split、签名、定位与证据范围 |
| 真机动态验证与后台存活报告 | 真实操作、后台矩阵、观察与未执行项 |