During last ten years, the number of smartphones and mobile applications has been constantly growing. Android, iOS and Windows Mobile are three mobile platforms that cover almost all smartphones in the world in 2017. Developing a mobile app involves first to choose the platforms the app will run, and then to develop specific solutions (i.e., native apps) for each chosen platform using platform-related toolkits such as AndroidSDK. Across-platform mobile application is an app that runs on two or more mobile platforms. Several frameworks have been proposed to simplify the development of cross-platform mobile applications and to reduce development and maintenance costs.They are called cross-platform mobile app development frameworks.However, to our knowledge, the life-cycle and the quality of cross-platforms mobile applications built using those frameworks have not been studied in depth. Our main goal is to first study the processes of development and maintenance of mobile applications built using cross-platform mobile app development frameworks, focusing particularly on the bug-fixing activity. Then, we aim at defining tools for automated repairing bugs from cross-platform mobile applications.
Cross-platform mobile app development : In addition to open-source development frameworks such as PhoneGap, Xamarin and React-Native, academic researchers @cite_25 @cite_10 @cite_26 proposed solutions with the goal of simplify the development of cross-platforms applications.
@cite_26 @cite_10 @cite_25
2050192850 2082656110
There is a multitude of mobile OS: iOS android, Windows Phone 8 and each OS provides its own standards and tools. This heterogeneity in the mobile domain forces developers to implement an application for e ach mobile platform. To achieve that, developers need t o master several languages (Java, Objective-C…). They also need to have several devices at their disposal (PC, Mac, many smartphones …). Then, after applications distributions, developers have to main tain several source codes. In this study, we tackle this problematic. Our goal is to soften the differences between each OS in order to simplify the development of cross-platform third-party applications. To achieve that, we have defined a framework called COMMON (Component Oriented programming for Mobile Multi OsiNtegration). This framework allows the integration of cross-platform components in any app lication (iOS android). To run our components on an y OS, we provide an implementation for each platform. However, to make their integrations easier, we als o provide a common public interface of each component, which is platform-independent. Besides, we provid e a common language, also platform-independent, allowing the integration and use of any component in any native application (iOS android). This language is based on annotations. Finally, we have implemented a cross-compiler, which translates the source code wr itten with our language to native source code: Obje ctiveC for iOS, Java for Android,… In this study, we hav e shown that our solution offers performance and memory consumption closed to native applications. Finally, with COMMON, mobile developers implement less lines of source code than with a native applic ation. In your test application, we have saved 30 . Abstract Smartphones provide a set of native functionalities and another set of functionalities available through third-party applications. The emergence of more and more actors, without standards to provide their devices or OS, stops the cross-platform development. Indeed, a developer would have to learn many programmatic languages and create many user interfaces for many devices. To resolve this problem, several solutions often consist in the creation of a com- mon SDK to only write the application once. Then, the application code is translated in native code for each target platform. In this paper, we propose a solution based on a component model. A set of configurable components is implemented for the targeted platforms. A component will have a common interface independent from the host OS. Finally, a new language will offer developers a single instruction call to any component through its interface. This instruction is common on any platforms to simplify the implementation of a cross-platform application.