Research Article

Porting Mobile Apps from iOS to Android: A Practical Experience

Table 1

Classification of the related mobile reverse-engineering techniques in terms of goal, target, method, extracted information, output, and validation.

StudyGoalTargetMethodTechniqueExtracted informationOutputValidation

Frank et al. [15]Program Comprehension
Feature location
iOS
Android
Java ME
StaticInstrumentation
Code injection
Runtime behavior
Event sequence
Call graph
Report
Case study
Joorabchi and Mesbah [16]Model recoveryiOSDynamicCrawling
Event handling
Runtime behavior
User interface states
Finite state machineCase study
Yang et al. [17]Model recoveryAndroidHybridCrawling
Event handling
Parsing
Runtime behaviour
Event Sequence
Finite state machineCase study
Comparison
Evaluation
Salva and Zafimiharisoa [18]Verification and validation
Model recovery
AndroidDynamicCrawlingRuntime behaviour
User interface states
Crash detection
Call graph
Finite state machine
Test suite
Comparison
Evaluation
Morgado et al. [19], 2014Verification and validation
Pattern identification
AndroidHybridCrawling
Event handling
Parsing
Instrumentation
Runtime behaviour
Event sequence
Bugs
Call graph
Report
Test suite
Case study
Comparison
Nguyen and Csallner [20]User interface identificationMobile UI designStaticOptical character recognition OCR
Event handling
User interface widgets
Computer vision
Android UI skeletonCase study
Evaluation
Lamhaddab and Elbaamrani[21]PortingiOSStaticParsing
Graph modeling
Model transformation
Source code AST
User interface Widgets
User interface Sequences
Graph models for source platform (iOS)
Graph models for target platform (Android)
Comparison
Evaluation
AmalFitano et al. [22]Verification and validation
Model recovery
AndroidDynamicRipping
Instrumentation
Test Generation
Crash detection
Bugs
Call graph
Report
Test suite
Finite state machine
Case study
Comparison
Evaluation
Dugerdil and Sako [23]Program comprehension
Maintenance
iOSStaticInstrumentation
Code injection
Runtime behaviour
Event Sequence
ReportCase study
Evaluation
Salihu et al. [24]Model recoveryAndroidHybridCrawling
Event handling
Parsing
Runtime behaviour
User interface states
Finite state machineComparison
Evaluation
Morgado and Paiva [25]Verification and validation
Pattern identification
AndroidDynamicCrawling
Event handling
Parsing
Runtime behaviour
Event sequence
Bugs
Call graph
Report
Test suite
Comparison
Evaluation
Chen et al. [26]User interface identificationMobile UI designStaticNeural machine translator
Convolutional neural network (CNN)
Recurrent neural network (RNN)
User interface widgetsAndroid UI skeletonCase study
Evaluation
Beltramelli [28]User interface identificationMobile UI designStaticConvolutional neural network (CNN)
Recurrent neural network (RNN)
DSL
User Interface WidgetsAndroid UI skeleton
iOS UI skeleton
Web-based U
Case study
Amalfitano et al. [30]Verification and validation
Model Recovery
AndroidHybridCrawling
Instrumentation
Input event sequence
Machine learning
Runtime behavior
User interface states
Human involvement
Call graph
Finite state machine
Test suite
Report
Case study