Android introduces a new permission model that allows apps to request permissions at runtime rather than at the installation time since 6.0 (Marshmallow, API level 23). While this runtime permission model provides users with greater flexibility in controlling an app's access to sensitive data and system features, it brings new challenges to app development. First, as users may grant or revoke permissions at any time while they are using an app, developers need to ensure that the app properly checks and requests required permissions before invoking any permission-protected APIs. Second, Android's permission mechanism keeps evolving and getting customized by device manufacturers. Developers are expected to comprehensively test their apps on different Android versions and device models to make sure permissions are properly requested in all situations. Unfortunately, these requirements are often impractical for developers. In practice, many Android apps suffer from various runtime permission issues (ARP issues). While existing studies have explored ARP issues, the understanding of such issues is still preliminary. To better characterize ARP issues, we performed an empirical study using 135 Stack Overflow posts that discuss ARP issues and 199 real ARP issues archived in popular open-source Android projects on GitHub. Via analyzing the data, we observed 11 types of ARP issues that commonly occur in Android apps. Furthermore, we conducted a field survey and in-depth interviews among practitioners, to gain insights from industrial practices and learn practitioners' requirements of tools that can help combat ARP issues. We hope that our findings can shed light on future research and provide useful guidance to practitioners.
翻译:Android引入了新的许可模式,允许应用程序在运行时而不是自6.0以来的安装时间( Marshmallow, API 23级)申请许可,允许应用程序在运行时间而不是安装时间( Marshmallow, API 23级)。虽然这一运行时间许可模式为用户控制一个应用程序访问敏感数据和系统特性提供了更大的灵活性,但它给应用程序开发带来了新的挑战。首先,用户在使用应用程序时可随时给予或撤销许可,开发商需要确保应用程序在启动受许可保护的API之前得到适当的检查和请求所需的许可。第二,机器人的许可机制不断演变,并由设备制造商定制。预计开发商将全面测试其不同版本和装置模型的简易应用程序,以确保在各种情况下适当请求访问敏感数据和系统特性,但对于开发者来说,这些要求往往不切实际。在使用应用程序时出现各种运行时间许可问题(ARP问题),尽管现有研究探索ARP问题,但对这些问题的理解仍然是初步的。为了更好地描述ARP问题,我们利用135 Stack 过度流动的输出文章进行一项实验研究,讨论ARB问题和199个实际的ARP问题,我们所观察了公开的ARP 。