如何看待 root 设备污染日志的情况?

2024-07-07 14:01:59 +08:00
 jeesk
1. 发现 8 成的崩溃日志是 root 导致的,比如允许了文件管理权限,但是是 fake permission, 就会导致应用崩溃。
2. 还有其他的一些渲染问题,也会导致崩溃。 看了一下基本上就是 root 设备导致的问题。


如果作为一个开发者发现每天都有 root 设备用户使用导致的崩溃日志, 你会怎么办?
9496 次点击
所在节点    Android
49 条回复
winzkh
2024-07-07 14:10:44 +08:00
要么不管不顾,要么加 root 检测
HojiOShi
2024-07-07 14:30:35 +08:00
虽然很久没用过了,但是我记得 Crashlytics 可以忽略不想管的 Crash 日志的,其他崩溃上报服务应该也会有这个功能吧。
bkmi
2024-07-07 14:43:42 +08:00
什么应用 root 用户占比这么高,正常 root 用户占比应该非常非常少
Joshuahui
2024-07-07 18:12:33 +08:00
跟用户挑明,不接受 root 用户的反馈,然后加 root 检测,root 用户可以正常使用但不记录任何崩溃日志,不要进行提示,防止绕过检测
yanqiyu
2024-07-07 19:00:22 +08:00
@bkmi 说明 root 出问题的概念远大于正常用户呗
yanqiyu
2024-07-07 19:00:36 +08:00
概念->概率
efcndi
2024-07-07 19:22:25 +08:00
作为一个普通的用户,我倒是在使用前会特别关注,你是不是要了很多不该要的 permission 。本来正常情况下,可以使用 fake permission 对付过去的,但是你却故意通过 crash 来降低这类用户使用的体验。

你又是什么级别的 App ,竟然有权限要求用户不得在 root 过的设备上使用?

如果你确实不允许 root 用户使用,希望自己在肆无忌惮非法滥用权限时不被发现,那就“拜拜呐您”!
lslqtz
2024-07-07 20:11:33 +08:00
@efcndi 虽然但是, 我真不知道你从哪里看出来的“故意”通过 crash 降低用户使用的体验...
lslqtz
2024-07-07 20:17:25 +08:00
fake permission 如果能导致崩溃, 那我觉得这个判断逻辑的健壮性可能还是不太够, 因为即使是正常设备, 也可以考虑磁盘空间已满之类的原因可能导致崩溃. 有权限读取/写入不代表实际能读取/写入. 所以, 在这一方面建议是优化逻辑, 增加程序的健壮性, 并给出用户可见的提示.

而渲染问题这种, 一般是奇奇怪怪的魔改造成的, 对于这种情况, 更建议是在服务器侧日志收集处理时加入屏蔽, 而不是依赖于客户端侧的检测, 不然仍然有绕过检测打入服务器侧日志的概率. 当然, root 与否的检测也可以作为一个参考值传送至服务器.
SunsetShimmer
2024-07-07 20:24:44 +08:00
当用户不希望授权的时候,就不要主动要求授权。
efcndi
2024-07-07 20:25:38 +08:00
@lslqtz #8 前面的前提“你是不是”也没故意缩小字体显示啊。
ochatokori
2024-07-07 20:30:20 +08:00
反馈给 fake permission 应用作者表示会出现应用行为不一致的问题
nightwitch
2024-07-07 20:48:56 +08:00
如果能判断出来 root 设备的话直接把 bug 反馈的功能停了完事。
jeesk
2024-07-07 20:59:11 +08:00
@lslqtz 我都说了,正常的权限授予完全没有崩溃的问题, 看不懂中文是吧? 我从来没说不让 root 用户使用,你倒是会戴帽子呢? 竟然还有这么多人点赞, 震惊。

你凭什么说我故意通过 crash 降低用户的体验?哪来的证据? 张口就来。魔怔了是吧。
zoharSoul
2024-07-07 20:59:30 +08:00
当然是修掉啊
有 bug 不修不是 xx 么, 又不是修不了
jeesk
2024-07-07 21:02:08 +08:00
@lslqtz 比如我已经获取了文件管理权限, 但是发现部分 root 设备还是无法写入, 总不可能还要为所有用户单独写读写权限校验吧? 我可没这么闲, 我只想屏蔽他们的日志。
jeesk
2024-07-07 21:09:07 +08:00
@lslqtz 我可以告诉你,我的 app 权限从来都没有滥用过。
Constantping
2024-07-07 21:23:27 +08:00
@jeesk 你 @錯了。
HojiOShi
2024-07-07 21:57:12 +08:00
再来反刍一下。

我以前写过一个普通用户和 root 用户都可以用的工具类 app 。针对这种情况,我采取的情况是双管齐下:能修则修,不能则忽略。

比如 fake permision 这种,在代码中除了正常申请权限之外,还用 AppOpsManager 再进行检测;其他情况(我当时遇到的:缺系统服务,打不开活动,UI 不一致或者崩溃,还有其他甚至是有些我怀疑只有 Bit flipping 才能触发的异常),能修的也尽可能作出修复;不能修的,给错误 UI 和甚至直接 catch(Excpetion ignore)然后 kill 掉自己之类的手段也都用过。

实在 catch 不了的,我当时用的统计服务只有一个 Crashlytics:它不仅能够忽略不想理会的日志,其它的过滤功能也是挺强大的,推荐使用这个。印象中记得除了组件更新速度过于频繁,没有什么别的缺陷。
RikkaW
2024-07-07 22:01:24 +08:00
if (isRooted) log.disable 解千愁

只要简单🉐判断是否存在 su 就差不多了,因为不太可能去针对所有人隐藏 root (

当然也如 #9 #19 说的也是有道理的(((

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1055435

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX