Android is the most popular mobile operating system in the world, running on more than 70% of mobile devices. This implies a gigantic and very competitive market for Android apps. Being successful in such a market is far from trivial and requires, besides the tackling of a problem or need felt by a vast audience, the development of high-quality apps. As recently showed in the literature, connectivity issues (e.g., mishandling of zero/unreliable Internet connection) can result in bugs and/or crashes, negatively affecting the app’s user experience. While these issues have been studied in the literature, there are no techniques able to automatically detect and report them to developers. We present CONAN, a tool able to detect statically 16 types of connectivity issues affecting Android apps. We assessed the ability of CONAN to precisely identify these issues in a set of 44 open source apps, observing an average precision of 80%. Then, we studied the relevance of these issues for developers by (i) conducting interviews with six practitioners working with commercial Android apps, and (ii) submitting 84 issue reports for 27 open source apps. Our results show that several of the identified connectivity issues are considered as relevant by practitioners in specific contexts, in which connectivity is considered a first-class feature.
CONAN is a static analysis tool built on top of Android Lint and aimed at identifying Connectivity issues in Android apps. The list of connectivity issues that CONAN supports has been defined based on: (i) official resources for Android developers (i.e., Google developer guidelines); (ii) library-specific documentation; and (iii) research articles on this topic. [Read more]
To decide the libraries for which CONAN should provide support, we ran a survey investigating which libraries Android developers use to handle network requests. Find more information. [Read more]
In the context of our work, a connectivity issue is a suboptimal implementation choice that can affect the correct behavior of an Android app when used in zero/unreliable connectivity scenarios. A complete list of issues can be found. [Read more]
We run CONAN on 44 open source apps, and we manually validated the reported Connectivity Issues, classifying them as true or false positives. We discuss CONAN's accuracy for the different types of issues it is designed to detect. [Read more]
We conducted six interviews with Android practitioners asking them the relevance of the connectivity issues that CONAN currently support. Also, we opened 84 issues in the issue tracker of 27 of the 44 apps analyzed in RQ1 to collect developers' feedback. [Read more]
The precision of the detection strategies we implemented has been evaluated by manually inspecting the candidate instances identified by CONAN, showing that improvements are needed for the detection of 5 of the 16 issue types, while excellent precision is achieved in the remaining 11 cases.
We then assessed the relevance of the issue types detected by CONAN by interviewing six practitioners, showing that they found most of the issues relevant, despite reporting their relevance as influenced by the specific context (app) in which they appear (e.g., domain category). Such a finding has also been confirmed in the subsequent evaluation performed by opening 84 issues in open source projects, with contradicting observations provided by the developers who managed those issues.
We have generated a jar file for users to try CONAN. The intructions to use it and more detailed information of the tool can be found in [HERE].
CONAN detected 898 candidate issues, distributed by app and type of issue as reported in the [Study Design page].
We conducted a survey and a set of interviews along the study, the results of the survey and the transcripts of the interviews can be found in [HERE].
As part of the study we created a set of 84 github issues to report some issues identified by CONAN. The list of issues can be found in [HERE].