taming android fragmentation: characterizing and detecting...

105
Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues for Android Apps Lili Wei Yepang Liu S.C. Cheung The Hong Kong University of Science and Technology 05 September 2016

Upload: others

Post on 11-Apr-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Taming Android Fragmentation: Characterizing and Detecting Compatibility

Issues for Android Apps

Lili Wei Yepang Liu S.C. Cheung

The Hong Kong University of Science and Technology

05 September 2016

Page 2: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Android: Popular and Fast-Evolving System

• Fast-evolving: multiple releases every year

2

Page 3: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Android: Popular and Fast-Evolving System

• Fast-evolving: multiple releases every year

• Many different system versions in use:

2

KitKat

Lollipop

Jelly Bean

Ice Cream Sandwich

Gingerbread

Froyo

Marshmallow

https://developer.android.com/about/dashboards/index.html

Page 4: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

3

Page 5: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Huge Number of Device Models

Over 24,000 distinct device models

(Aug. 2014 – Aug.2015)

http://opensignal.com/reports/2015/08/android-fragmentation/ 4

Page 6: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Fragmented Android Ecosystem

5

Page 7: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Fragmented Android Ecosystem

5

Page 8: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Fragmented Android Ecosystem

5

Page 9: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Ensuring App Compatibility Is Difficult

• App developers haveto optimize UI of theirapps to fit diversifiedscreen sizes

6

Page 10: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Ensuring App Compatibility is Difficult

• App developers haveto optimize UI of theirapps to fit diversifiedscreen sizes

• An app behavesdifferently acrossdevices

6http://gameovenstudios.com/bounden-on-android-delayed/

Page 11: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Ensuring App Compatibility is Difficult

• App developers haveto optimize UI of theirapps to fit diversifiedscreen sizes

• An app behavesdifferently acrossdevices

6

Fragmentation-induced compatibility issues

http://gameovenstudios.com/bounden-on-android-delayed/

Page 12: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Testing Compatibility Issues

• To fully test compatibility issues is difficult withhuge search space• Combination of three dimensions

7

Device Model

Page 13: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Testing Compatibility Issues

• To fully test compatibility issues is difficult withhuge search space• Combination of three dimensions

7

AP

IL

eve

l

Device Model

Page 14: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Testing Compatibility Issues

• To fully test compatibility issues is difficult withhuge search space• Combination of three dimensions

7

AP

IL

eve

l

Device Model

Page 15: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

AP

IL

eve

l

Device Model

Testing Compatibility Issues

• To fully test compatibility issues is difficult withhuge search space• Combination of three dimensions

7

Page 16: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Existing Work

• Understanding Android fragmentation• D. Han et al. [WCRE’ 2012]

• T. McDonnell et al. [ICSM’ 2013]

• Prioritize devices to test on:• H. Khalid et al. [FSE’ 2014]

• X. Lu et al. [ICSE’ 2016]

8

Page 17: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Existing Work

8

None of the existing studies dug into the code level:

• To understand compatibility issues

• To detect compatibility issues

• Understanding Android fragmentation• D. Han et al. [WCRE’ 2012]

• T. McDonnell et al. [ICSM’ 2013]

• Prioritize devices to test on:• H. Khalid et al. [FSE’ 2014]

• X. Lu et al. [ICSE’ 2016]

Page 18: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Our Goal

Understand compatibility

issues at code level

9

Page 19: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Our Goal

Understand compatibility

issues at code levelDetect compatibility

issues

9

Page 20: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Research Questions

• RQ1: Issue type and root cause• What are the common types of compatibility issues

in Android apps? What are their root causes?

9

Page 21: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Research Questions

• RQ1: Issue type and root cause• What are the common types of compatibility issues

in Android apps? What are their root causes?

• RQ2: Issue fixing• How do Android developers fix compatibility issues

in practice? Are there any common patterns?

9

Page 22: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Dataset Collection

27 popular, large-scale, well-maintained candidate

apps, which have public issue tracking systems

10

Page 23: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Dataset Collection

27 popular, large-scale, well-maintained candidate

apps, which have public issue tracking systems

10

Apps satisfying these criterion are:

• More likely to be affected by different kinds of

compatibility issues

• With traceable issue fix and discussions to study

Page 24: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Keyword Search

device compatible compatibility samsung

lge sony moto lenovo

asus zte google htc

huawei xiaomi android.os.build

11

Page 25: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

VLC r-8e31d57:

Blind fix for mountpoint issues with some Samsung devices

if(line.contains("vfat") || line.contains("exfat") ||

- line.contains("/mnt") || line.contains("/Removable")) {

+ line.contains("sdcardfs") || line.contains("/mnt") ||

+ line.contains("/Removable")) {

Keyword Search

device compatible compatibility samsung

lge sony moto lenovo

asus zte google htc

huawei xiaomi android.os.build

11

Page 26: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

VLC r-8e31d57:

Blind fix for mountpoint issues with some Samsung devices

if(line.contains("vfat") || line.contains("exfat") ||

- line.contains("/mnt") || line.contains("/Removable")) {

+ line.contains("sdcardfs") || line.contains("/mnt") ||

+ line.contains("/Removable")) {

Keyword Search

device compatible compatibility samsung

lge sony moto lenovo

asus zte google htc

huawei xiaomi android.os.build

11

CSipSimple r-af0ceea:

Fixes issue 498.

+ //HTC evo 4G

+ if(android.os.Build.PRODUCT.equalsIgnoreCase("htc_supersonic"))

+ return true;

Page 27: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Dataset Collection

12

27 popular, large-scale, well-maintained candidate

apps, which have public issue tracking systems

All 27 apps contain potential revisions related to

compatibility issues

Page 28: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Dataset Collection

Five apps with top number of potential issue-related code

revisions

12

27 popular, large-scale, well-maintained candidate

apps, which have public issue tracking systems

Page 29: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Dataset Collection

Five apps with top number of potential issue-related code

revisions

12

Over 1800 code revisions found in the five apps need to

be manually inspected

27 popular, large-scale, well-maintained candidate

apps, which have public issue tracking systems

Page 30: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Dataset Collection

191 compatibility issues

Five apps with top number of potential issue-related code

revisions (>1800 revisions)

12

27 popular, large-scale, well-maintained candidate

apps, which have public issue tracking systems

Page 31: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Selected Apps

App Name Category Rating Downloads KLOC #Revisions

CSipSimple Communication 4.3/5.0 1M - 5M 59.2 1,778

AnkiDroid Education 4.5/5.0 1M - 5M 58.1 8,282

K-9 Mail Communication 4.3/5.0 5M - 10M 86.7 6,116

VLC Media & Video 4.3/5.0 10M - 50M 28.3 6,868

AnySoftKeyboard Tools 4.3/5.0 1M - 5M 70.7 2,788

13

Page 32: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Data Analysis

API

Identified the

issue-inducing

APIs

14

Page 33: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Data Analysis

API

Identified the

issue-inducing

APIs

Recovered links

between revisions

and reports

14

Page 34: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Data Analysis

API

Identified the

issue-inducing

APIs

Recovered links

between revisions

and reports

Collected related

discussions from

online forums

14

Page 35: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ1: Issue Type and Root Cause

15

Page 36: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ1: Issue Type and Root Cause

• Device-specific issues• Compatibility issues can only be triggered on

certain device models

• Non-device-specific issue• Compatibility issues can be triggered under certain

API level independent from device model

15

Page 37: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ1: Issue Type and Root Cause

15

59%41%

Device-specific issues

Can only be triggered on

certain device models

Non-device-specific issues

Can be triggered under

certain API level

Page 38: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issue

16

Device-specific Issue59%

Driver

Implementation

29%

OS Customization

19%

Hardware Composition

11%

Page 39: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Problematic driver implementation• Different driver implementation can cause

inconsistent app behavior across devices.

17

Page 40: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Problematic driver implementation• Different driver implementation can cause

inconsistent app behavior across devices.

• OS customization• Manufacturer-customized systems may not fully

comply with the official specifications and thuscause compatibility issues

17

Page 41: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Problematic driver implementation• Different driver implementation can cause

inconsistent app behavior across devices.

• OS customization• Manufacturer-customized systems may not fully

comply with the official specifications and thuscause compatibility issues

• Hardware composition• Diversified hardware composition of different device

models can cause compatibility issues

17

Page 42: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Problematic driver implementation• Different driver implementation can cause

inconsistent app behavior across devices.

Proximity sensor: Report the distance

between device and its surrounding object

18

Page 43: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

19

CSipSimple:

An Android client app for internet calls

Proximity sensor in CSipSimple:

Used to detect the distance between user’s face and the

device.

Page 44: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

19

Near

CSipSimple:

An Android client app for internet calls

Proximity sensor in CSipSimple:

Used to detect the distance between user’s face and the

device.

Page 45: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

CSipSimple issue 353:Samsung SPH-M900’s proximity sensor API reports a value

inversely proportional to the real distance

19

CSipSimple:

An Android client app for internet calls

Proximity sensor in CSipSimple:

Used to detect the distance between user’s face and the

device.

Page 46: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

CSipSimple issue 353:Samsung SPH-M900’s proximity sensor API reports a value

inversely proportional to the real distance

19

CSipSimple:

An Android client app for internet calls

Proximity sensor in CSipSimple:

Used to detect the distance between user’s face and the

device.

Page 47: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

CSipSimple issue 353:Samsung SPH-M900’s proximity sensor API reports a value

inversely proportional to the real distance

19

CSipSimple:

An Android client app for internet calls

Proximity sensor in CSipSimple:

Used to detect the distance between user’s face and the

device.

Page 48: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

CSipSimple issue 353:Samsung SPH-M900’s proximity sensor API reports a value

inversely proportional to the real distance

19

CSipSimple:

An Android client app for internet calls

Proximity sensor in CSipSimple:

Used to detect the distance between user’s face and the

device.

Page 49: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Peculiar hardware composition

SD card variations

20

Page 50: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Peculiar hardware composition

SD card variations

20

Page 51: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Peculiar hardware composition

SD card variations

20

Page 52: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Peculiar hardware composition

SD card variations

20

Page 53: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

• Peculiar hardware composition

SD card variations

Mount points vary across devices20

Page 54: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

VLC:

A popular Android video player

21

SD card in VLC:

VLC can play videos stored in the SD card

Page 55: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Device-Specific Issues

VLC:

A popular Android video player

21

SD card in VLC:

VLC can play videos stored in the SD card

VLC specifically handle the SD card variations to

ensure support of different device models

Page 56: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Non-Device-Specific Issue

22

Non-Device-Specific

Issue41%

API Evolution

35%

Original

System Bug

6%

Page 57: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Non-Device-Specific Issues

• Android platform API evolution• Evolving Android system with API introduction,

deprecation and behavior modification causescompatibility issues

23

Page 58: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Non-Device-Specific Issues

• Android platform API evolution• Evolving Android system with API introduction,

deprecation and behavior modification causescompatibility issues

• Original Android system bugs• Bugs in the system got fixed in newer version while

still existing in older versions can causecompatibility issues.

23

Page 59: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Non-Device-Specific Issues

AnkiDroid pull request 130

24

API (Added in API Level 16):SQLiteDatabase.disableWriteAheadLogging()

Page 60: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Non-Device-Specific Issues

AnkiDroid pull request 130

24

API (Added in API Level 16):SQLiteDatabase.disableWriteAheadLogging()

API Level

< 16

Page 61: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Non-Device-Specific Issues

AnkiDroid pull request 130

24

API (Added in API Level 16):SQLiteDatabase.disableWriteAheadLogging()

API Level

< 16

Page 62: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ2: Issue Fixing

• Patch Complexity

• Common Patching Patterns

25

Page 63: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ2: Issue Fixing

• Patch Complexity• Simple

• Small

26

if (android.os.Build.VERSION.SDK_INT >= 16) {

sqLiteDatabase.disableWriteAheadLogging();

}

1. +

2.

3. +

Page 64: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ2: Issue Fixing

• Patch Complexity• To debug and find a valid fix is not easy

CSipSimple issue 2436:

“HTC has closed source this contact/call log app

which makes things almost impossible to debug for

me."

27

Page 65: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ2: Issue Fixing

• Common patching patterns• Check device information (71.7%)

28

Page 66: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ2: Issue Fixing

• Common patching patterns• Check device information (71.7%)

• Check availability of software and hardwarecomponents (7.3%)

28

Page 67: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ2: Issue Fixing

• Common patching patterns• Check device information (71.7%)

• Check availability of software and hardwarecomponents (7.3%)

• App-specific workarounds

28

Page 68: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

RQ2: Issue Fixing

• Common patching patterns• Check device information (71.7%)

• Check availability of software and hardwarecomponents (7.3%)

• App-specific workarounds

Locating the root cause of compatibility issues is

difficult. Whereas, issue fixes are usually simple

and demonstrate common patterns.

28

Page 69: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Applications of the Empirical Findings

• Prioritize testing efforts

AP

IL

eve

l

Device Model

29

Page 70: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

AP

IL

eve

l

Device Model

Applications of the Empirical Findings

• Prioritize testing efforts

Driv

er-re

late

dA

PI

29

Page 71: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

AP

IL

eve

l

Device Model

Applications of the Empirical Findings

• Prioritize testing efforts

Driv

er-re

late

dA

PI

29

Page 72: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

AP

IL

eve

l

Device Model

Applications of the Empirical Findings

• Detect compatibility issues

30

Page 73: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

API-Context Pair Model

• Common compatibility issue pattern

31

Compatibility issues are triggered by the improper

use of an Android API (issue-inducing API) in a

problematic software or hardware environment

(issue-triggering context)

Page 74: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

API-Context Pair Model

• Common compatibility issue pattern

32

API-Context Pair Model:

Each pattern of compatibility issue is modeled as a pair

of issue-inducing API and issue-triggering context

Page 75: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

API-Context Pair Model

• Common compatibility issue pattern

32

Context: conjunction of device model, device brand or

API level, etc.

API-Context Pair Model:

Each pattern of compatibility issue is modeled as a pair

of issue-inducing API and issue-triggering context

Page 76: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

API-Context Pair Model

• Common compatibility issue pattern

API-Context Pair Model:

Each pattern of compatibility issue is modeled as a pair

of issue-inducing API and issue-triggering context

32

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Page 77: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

FicFinder: Detecting Compatibility Issues

33

FicFinder:

Fragmentation-Induced Compatibility Issue Finder

Page 78: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

FicFinder: Detecting Compatibility Issues

Android app

(.apk

or .class)

List of

API-context pairs

33

Analysis

Report

Page 79: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

FicFinder: Detecting Compatibility Issues

Android app

(.apk or .class)

List of

API-context pairs

Backward slicing analysis

Implemented on top of Soot

25 selected API-context pairs33

Analysis

Report

Page 80: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

34

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Page 81: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"34

Page 82: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"34

Page 83: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

34

Page 84: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

34

Page 85: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

34

Page 86: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

34

Page 87: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

SQLiteDatabase db = getDatabase()

34

Page 88: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

db.disableWriteAheadLogging();

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

SQLiteDatabase db = getDatabase()

34

Page 89: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Example

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

if (isJellyBeanOrLater() || isNookHD) {

db.disableWriteAheadLogging();

}

}

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

boolean isJellyBeanOrLater() {

return android.os.Build.SDK_VERSION >= 16;

}

boolean isNookHD {

return android.os.Build.BRAND.equals("NOOK")

&& android.os.Build.PRODUCT.equals("HDplus")

&& android.os.Build.DEVICE.equals("ovation");

}

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

SQLiteDatabase db = getDatabase()

34

Page 90: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

if (isJellyBeanOrLater() || isNookHD) {db.disableWriteAheadLogging();

}

}

Example

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

boolean isJellyBeanOrLater() {

return android.os.Build.SDK_VERSION >= 16;

}

boolean isNookHD {

return android.os.Build.BRAND.equals("NOOK")

&& android.os.Build.PRODUCT.equals("HDplus")

&& android.os.Build.DEVICE.equals("ovation");

}

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

Slice:

db.disableWriteAheadLogging()

SQLiteDatabase db = getDatabase()

if(isJellyBeanOrLater()||isNookHD)

34

Page 91: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

if (isJellyBeanOrLater() || isNookHD) {db.disableWriteAheadLogging();

}

}

Example

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

Slice:

db.disableWriteAheadLogging()

SQLiteDatabase db = getDatabase()

if(isJellyBeanOrLater()||isNookHD)

return android.os.Build.SDK_VERSION >=

16

return

android.os.Build.BRAND.equals("NOOK")&&

android.os.Build.PRODUCT.equals("HDplus")

&&android.os.Build.DEVICE.equals("ovation")

boolean isJellyBeanOrLater() {

return android.os.Build.SDK_VERSION >= 16;

}

boolean isNookHD {

return android.os.Build.BRAND.equals("NOOK")

&& android.os.Build.PRODUCT.equals("HDplus")

&& android.os.Build.DEVICE.equals("ovation");

}

34

Page 92: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

if (isJellyBeanOrLater() || isNookHD) {db.disableWriteAheadLogging();

}

}

Example

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

Slice:

db.disableWriteAheadLogging()

SQLiteDatabase db = getDatabase()

if(isJellyBeanOrLater()||isNookHD)

return android.os.Build.SDK_VERSION >=

16

return

android.os.Build.BRAND.equals("NOOK")

&&android.os.Build.PRODUCT.equals("HD

plus")&&android.os.Build.DEVICE.equals(

"ovation")

boolean isJellyBeanOrLater() {

return android.os.Build.SDK_VERSION >= 16;

}

boolean isNookHD {

return android.os.Build.BRAND.equals("NOOK")

&& android.os.Build.PRODUCT.equals("HDplus")

&& android.os.Build.DEVICE.equals("ovation");

}

34

Page 93: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

void disableWAL() {

SQLiteDatabase db = getDatabase();

if (db.inTransaction()) {

db.endTransaction();

}

if (isJellyBeanOrLater() || isNookHD) {db.disableWriteAheadLogging();

}

}

Example

API: SQLiteDatabase.disableWriteAheadLogging()

Context: API_level < 16 ∧ Dev_model != "Nook HD"

AndroidManifest.xml<uses-sdk

android:minSdkVersion="15"

/>

Slice:

db.disableWriteAheadLogging()

SQLiteDatabase db = getDatabase()

if(isJellyBeanOrLater()||isNookHD)

return android.os.Build.SDK_VERSION >=

16

return

android.os.Build.BRAND.equals("NOOK")

&&android.os.Build.PRODUCT.equals("HD

plus")&&android.os.Build.DEVICE.equals(

"ovation")

boolean isJellyBeanOrLater() {

return android.os.Build.SDK_VERSION >= 16;

}

boolean isNookHD {

return android.os.Build.BRAND.equals("NOOK")

&& android.os.Build.PRODUCT.equals("HDplus")

&& android.os.Build.DEVICE.equals("ovation");

}

34

Page 94: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Evaluation

• Subject apps: latest version of 27 popular,actively-maintained Android apps• Covering 10 different categories

• At least 5K downloads

App name Category KLOC Rating Downloads

ConnectBot Communication 23.0 4.6 1M – 5M

AntennaPod Media & Video 65.0 4.5 100K – 500K

c:geo Entertainment 78.8 4.4 1M – 5M

AnySoftKeyboard Tools 70.7 4.4 1M – 5M

… … … … …

35

Page 95: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Effectiveness of FicFinder

• Configure FicFinder to report both warningsand good practices

36

Page 96: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Effectiveness of FicFinder

• Configure FicFinder to report both warningsand good practices

• FicFinder reported 51 warnings and 79 goodpractices

36

Page 97: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Effectiveness of FicFinder

• Configure FicFinder to report both warningsand good practices

• FicFinder reported 51 warnings and 79 goodpractices

46 of the 51 warnings are true positives

(Precision: 90.2%)

36

Page 98: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Effectiveness of FicFinder

• Submitted 14 bug reports• Bug reports included issue-related discussions,

API guides and possible fixes in the bug reports to help developers diagnose the issues

37

Page 99: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Effectiveness of FicFinder

• Submitted 14 bug reports• Bug reports included issue-related discussions,

API guides and possible fixes in the bug reports to help developers diagnose the issues

8 of the 14 bug reports were

acknowledged by app developers.

5 issues were quickly fixed.

37

Page 100: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Usefulness of FicFinder

• Knowledge of API-context pairs extracted fromour empirical study can be transferred acrossdifferent apps

38

AnySoftKeyboard Issue 639:

Rule originally extracted from K9 Mail

K9 Mail Issue 1237:

Rule originally extracted from CSipSimple

Page 101: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Usefulness of FicFinder

• 4 of the 5 fixed issues were fixed by adoptingour suggested fixes.

Thanks, we will do it as you proposed in out next

release. :)

Please let us know if you found more of these issues.

iSsO (1Sheeld developer)

39

Page 102: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Usefulness of FicFinder

• 4 of the 5 fixed issues were fixed by adoptingour suggested fixes.

• The other issue was fixed with an alternative patch, which was semantically equivalent to our suggested one.

Thanks, we will do it as you proposed in out next

release. :)

Please let us know if you found more of these issues.

iSsO (1Sheeld developer)

39

Page 103: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Conclusion

• First large-scale empirical study of Androidcompatibility issues at code level

• API-context pair to model compatibility issues

• A static analysis tool, FicFinder, to detectfragmentation-induced compatibility issues

40

Page 104: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Future Work

• Automate API-context pair extraction

• Continue to improve the effectiveness ofFicFinder

41

Page 105: Taming Android Fragmentation: Characterizing and Detecting ...scc/publ/ASE16-FicFinder_Slides.pdf · Taming Android Fragmentation: Characterizing and Detecting Compatibility Issues

Thank you!More information can be found in our paper

Or visit FicFinder’s homepage:

http://sccpu2.cse.ust.hk/ficfinder/

41