Some of the material in is restricted to members of the community. By logging in, you may be able to gain additional access to certain collections or items. If you have questions about access or logging in, please use the form on the Contact Page.
Since 2008, the Android ecosystem has been tremendously popular with consumers, developers, and manufacturers due to the open nature of the operating system and its compatibility and availability on a range of devices. This, however, comes at a cost. The variety of available devices and speed of evolution of the Android system itself adds layers of fragmentation to the ecosystem around which developers must navigate. Yet this phenomenon is not unique to the Android ecosystem, impacting desktop applications like Apache Tomcat and Google Chrome as well. As fragmentation of a system grows, so does the burden on developers to produce software than can execute on a wide variety of potential device, environment, and system combinations, while the reality prevents developers from anticipating every possible scenarios. This study provides the ﬁrst empirical study characterizing portability bugs in both desktop and Android applications. Speciﬁcally, we examined 228 randomly selected bugs from 18 desktop and Android applications for the common root causes, manifestation patterns, and ﬁx strategies used to combat portability bugs. Our study reveals several commonalities among the bugs and platforms, which include: (1) 92.14% of all bugs examined are caused by an interaction with a single dependency, (2) 53.13% of all bugs examined are caused by an interaction with the system, and (3) 33.19% of all bugs examined are ﬁxed by adding a direct or indirect check against the dependency causing the bug. These results provide guidance for techniques and strategies to help developers and researchers identify and ﬁx portability bugs.