刷任务时最烦的就是"分享给好友领奖励":不分享拿不到奖励,真分享又得骚扰朋友。「假装分享」这个开源模块就是解决这个问题的——让 App 以为你完成了分享。本文复盘它的 5.0 全量重构:广告试玩卡死是怎么根治的、免 Root 接管范围怎么收窄、60 多处审计问题怎么逐个修完,文末附源码与成品下载地址。
一、假装分享是什么?先说结论
假装分享(PretendSharing)的原理一句话就能讲清:App 里点「分享」后,正常流程是弹分享面板或跳转目标 App,等你分享完再回传结果;这个模块把这一步拦下来,直接伪造"分享成功"回传给 App,全程不需要真的分享。
它支持两种工作模式:
- LSPosed 模块模式:Hook 注入目标 App 进程内部,任何分享路径都能拦;
- 免 Root 模式:借助 Shizuku 提权,接管系统分享列表,无需刷机装框架。
术语扫盲:Xposed/LSPosed 是 Android 上的 Hook 框架,能在 App 启动瞬间改写它的行为;Shizuku 是免 Root 提权工具,让普通 App 拿到接近系统级的权限。两者都不需要解锁 Bootloader 或 Root。
项目从 3.0 重构、4.0 多平台支持、4.0.2 热读取、4.0.4 置信度判定一路迭代。5.0 不加新功能,专注翻修。
二、两种分享路径,决定拦截方案怎么选
Android 里的"分享"其实分两种,能不能拦住取决于走哪条路:
- 系统分享列表:点分享先弹一个选择器,让你挑发到哪个 App → 免 Root 模式就能接管;
- App 内部直接跳转:点一下秒跳 QQ/抖音,不弹任何列表 → 免 Root 拦不住,必须上 LSPosed 模块模式。
这是 Android 系统机制决定的,不是软件没做好。动手前先搞清楚你要拦的是哪一种,免得装了免 Root 版发现"怎么没生效"。
三、5.0 重构重点①:四层防线根治广告试玩卡死
旧版有个从 1.0 就存在的老毛病:开着「假装分享」点广告里的"打开抖音体验 15 秒",体验页被误当成分享拦了下来;关掉模块再点,页面反而直接卡死,倒计时不走,整个界面动不了。装了抖音极速版、快手极速版的用户也收不到"是否打开"的提示,体验时间一直不涨。
5.0 把整条拦截链路拆开重做,上了四层防线:
- 识别层硬否决:广告、试玩、纯拉起跳转(如 ACTION_VIEW + 平台深链)特征命中即放行,不再"带 pkg_name 就算分享",直接掐掉绝大多数误拦;
- 拦截层正确回传:旧版拦下
startActivityForResult后无条件setResult(null),调用方永远等不到结果只能干等;现在按真实结果回传,调用方正常收尾; - 接管层收窄:免 Root 下 Shizuku 只接管"强分享通道",不再把广告试玩跳转一并抢走,装没装目标 App 行为都符合预期;
- 拦截门兜底:非分享一律快速交还真实应用,零 IO 路径直通;同时挂看门狗,任何分支卡住都强制退出,透明门绝不驻留。
四、5.0 重构重点②:子厂商变体逐个开关
同一个平台往往有好几个官方客户端,包名不同、彼此独立。5.0 新增「子厂商变体」管理页,把它们集中列出:
| 平台 | 主客户端 | 子厂商变体 |
|---|---|---|
| 抖音 | 抖音 | 抖音极速版、抖音火山版 |
| 快手 | 快手 | 快手极速版 |
| QQ 轻聊版、TIM | ||
| 知乎 | 知乎 | 知乎极速版 |
| 淘宝 | 淘宝 | 天猫、淘特 |
| 京东 | 京东 | 京东极速版 |
开关规则三条:
- 主客户端那一行是平台通道开关,与首页完全同步;
- 变体那一行独立生效:关掉后分享到它不再假装,改走真实应用;
- 没单独设过的变体,自动跟随所属平台的开关。
注意生效边界:只有 Intent 明确指定目标包(SDK 分享、分享面板选中具体 App)时,才能精确区分"抖音"和"抖音极速版";纯 scheme 深链本身不带包名,无法区分,此时按所属平台开关处理。
五、5.0 重构重点③:全量审计修掉 60 多处问题
这次重构顺带做了全量审计,比较典型的几处:
- 测试源集包名写错:75 个单元测试实际从未真正跑起来(P0 级问题,已修);
- 主线程 IO 清零:首页探测、规则加载、日志读取、图标解码全部移出主线程,低端机不再顿;
- 无障碍服务失效修复:Android 12 及以上静默失效的问题已修正配置与包名过滤;
- scheme 数据源收敛:三处各自维护导致漂移,收敛为单一数据源;
- 回调白名单补齐钉钉,外加页面重建重复添加、开关回滚、线程安全等一批细节问题。
六、质量保障
- 91 项单元测试全部通过,含真实启动页面、真实拨动开关的 UI 自检;
- 首页探测集中到后台并限频,避免 Tab 切换风暴;
- 应用图标异步加载,列表不再卡顿;
- 补充 R8 保留规则,混淆后入口类、拦截门、无障碍服务均完整保留。
七、上手步骤与环境要求
环境要求:Android 7.0 及以上(minSdk 24 / targetSdk 34);免 Root 模式另装 Shizuku(用"无线调试"启动服务);模块模式需要 LSPosed 框架。
- 下载 APK 安装(文末网盘,源码 + 成品都在);
- 免 Root 用户:安装并启动 Shizuku → 在「假装分享」里完成授权 → 打开对应平台开关;
- LSPosed 用户:在 LSPosed 中启用模块 → 勾选目标 App →重启目标 App;
- 打开想用的平台开关,去 App 里点一次分享验证效果。
三个容易踩的坑提前说:
- Xposed 只能在目标 App 启动瞬间注入 Hook。进程已在运行时才开启模块的话,必须重启该 App 才生效(框架限制,不是 bug);
- 免 Root 模式拦不住 App 内部秒跳的分享,那种要走 LSPosed 模式;
- 变体精确开关依赖 Intent 带目标包名,纯深链场景跟随平台主开关。
八、下载地址(源码 + 成品)
- 夸克网盘(源码 + 成品):
https://pan.quark.cn/s/ca3096aa8bb7 - 原仓库 · Xposed 模块版:
https://github.com/CwithW/PretendSharing_Xposed - 原仓库 · 独立版「假装分享」:
https://github.com/CwithW/PretendSharing
致谢原作者 CwithW:本重构基于原作者思路重写、遵循原项目开源协议,非从零原创,特此注明。
免责声明
本项目仅供学习交流与个人效率提升使用,请勿用于商业或违规用途,由此产生的一切后果由使用者自行承担。
总结
假装分享 5.0 是一次"不加功能、只翻修"的重构:用四层防线根治了广告试玩卡死与误拦,把主线程 IO 全部清走,修掉 60 多处审计问题,还让抖音极速版、快手极速版这类变体 App 有了独立开关。如果你常被"分享领奖励"类任务困扰,又不想骚扰好友,可以按上面的步骤试试;动手前记得先分清自己面对的是哪种分享路径,再选免 Root 或 LSPosed 模式。
常见问题(FAQ)
Q1:不 Root 能用吗?能。免 Root 模式靠 Shizuku 提权,可以接管系统分享列表那类分享;App 内部秒跳的分享才需要 LSPosed。
Q2:开了开关没生效怎么办?先重启目标 App——Xposed 只在启动瞬间注入;再确认分享是不是秒跳型(免 Root 拦不住的那种)。
Q3:抖音极速版能单独关掉吗?5.0 起可以。在「子厂商变体」页单独关闭即可,分享到它会走真实应用;没单独设过的变体自动跟随平台主开关。
Q4:点广告"体验 15 秒"还会被误拦吗?5.0 的识别层硬否决 + 正确回传 + 接管收窄 + 看门狗兜底这四层防线就是为这个场景做的,命中广告/试玩特征会直接放行。
相关链接
| 名称 | 链接 |
|---|---|
https://pan.quark.cn/s/ca3096aa8bb7 | https://pan.quark.cn/s/ca3096aa8bb7 |
https://github.com/CwithW/PretendSharing_Xposed | https://github.com/CwithW/PretendSharing_Xposed |
https://github.com/CwithW/PretendSharing | https://github.com/CwithW/PretendSharing |