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

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


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

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

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

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

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

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

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

实在 catch 不了的,我当时用的统计服务只有一个 Crashlytics:它不仅能够忽略不想理会的日志,其它的过滤功能也是挺强大的,推荐使用这个。印象中记得除了组件更新速度过于频繁,没有什么别的缺陷。
RikkaW
71 天前
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