greenify.github.io icon indicating copy to clipboard operation
greenify.github.io copied to clipboard

[公约]如何更好的普及Android开发规范及促进Google细化权限

Open pcqpcq opened this issue 8 years ago • 1 comments

绿色公约很棒,强烈支持。在阅读公约之后,这些天思考现在Android和iOS之间的差异(用户感知层面),我觉得Android App的『不绿色』可以粗糙的归结到两个问题:

1. 如何更好的普及开发规范

是什么

不少Android开发人员对于一些Api了解不够深入,且对Api变动更新跟进不及时,以至于一直保留旧的使用习惯。

为什么

比如,公约中提到的『避免使用『读取 / 写入外部存储』权限』,以高德地图为例,高德地图是要求一定要给外部存储写入权限否则不让用的,但是很明显高德即使按规范的做法来存储数据也没有任何问题,不会影响到他们的业务正常进行(假设高德真的只是想存储数据)。那么唯一不按规范来的原因只有一个,就是不知道应该那么做。 类似的App不只高德地图,还可以举出其他的例子。要知道,『使用Context.getExternalFilesDir()、 Context.getExternalCacheDir() 这个Api来获取外部存储路径而不是直接写入 /sdcard/ 这样的路径』,这个规范很早很早就有了,但是现在仍然是选择直接写到 /sdcard/ 下。所以,我觉得问题应该是如何更好的给这部分开发人员(即使是在高德这样的『大』公司内)普及一些正确的做法

怎么做

我个人的建议是,通过开发一个AndroidStudio插件来规范代码,采用更强烈的规范约束。然后利用社区的力量来推广这个插件。其实就是整合Lint的功能,然而也许这部分人连Lint都不知道是什么。只是想法,有待验证技术上的可行性。

2. 如何促进Google细化权限

是什么

有些情况并不是开发不规范,而是因为权限只有那些,实在没得选择,只能那么做。

为什么

比如,再拿高德地图举例,高德地图在启动的时候,如果不给『读取手机状态和身份(READ_PHONE_STATE)』权限,那么是不让使用的。我仍然假设高德真的只是为了获取设备信息而不是手机号,那么站在高德的立场这个做法可以认为没有问题(虽然不让用很恶心)。但是开发人员也没得选择,因为『读取手机号』也是这个权限。 类似的还有『读取写入相册』和『读取写入外部存储』。用户如果同意了读取写入外部存储,那么App也可以顺便读取写入用户相册。 然而参考Flyme和MIUI这样的安卓系统,他们其实是把读取手机号这个事情单独分开的,在App授权页面清楚的写明了那个权限是读取IMEI。

怎么做

所以我觉得,这部分应该是Google的锅。那么,有什么办法可能更好的与Google沟通,更好的细化相应的权限?通过issue反馈可能只会得到Google的神回复。这方面我暂时想不到更好的途径。

================================

个人感想,如果有技术上描述不对的地方,欢迎指正。

pcqpcq avatar May 08 '17 10:05 pcqpcq

  1. 我个人倾向于采取一些更宏观的方式推动整个事情,让更多的用户发出声音是至关重要的影响力。近几天会有大动作,请拭目以待。
  2. 这个超出了我目前的影响力范围。如果1的进展顺利,我会考虑推动这个问题。

oasisfeng avatar May 10 '17 13:05 oasisfeng