Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3213846.3213857acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

CiD: automating the detection of API-related compatibility issues in Android apps

Published: 12 July 2018 Publication History
  • Get Citation Alerts
  • Abstract

    The Android Application Programming Interface provides the necessary building blocks for app developers to harness the functionalities of the Android devices, including for interacting with services and accessing hardware. This API thus evolves rapidly to meet new requirements for security, performance and advanced features, creating a race for developers to update apps. Unfortunately, given the extent of the API and the lack of automated alerts on important changes, Android apps are suffered from API-related compatibility issues. These issues can manifest themselves as runtime crashes creating a poor user experience. We propose in this paper an automated approach named CiD for systematically modelling the lifecycle of the Android APIs and analysing app bytecode to flag usages that can lead to potential compatibility issues. We demonstrate the usefulness of CiD by helping developers repair their apps, and we validate that our tool outperforms the state-of-the-art on benchmark apps that take into account several challenges for automatic detection.

    References

    [1]
    Li Li, Alexandre Bartel, Tegawendé F Bissyandé, Jacques Klein, Yves Le Traon, Steven Arzt, Siegfried Rasthofer, Eric Bodden, Damien Octeau, and Patrick Mcdaniel. IccTA: Detecting Inter-Component Privacy Leaks in Android Apps. In ICSE, 2015.
    [2]
    Li Li, Alexandre Bartel, Tegawendé F Bissyandé, Jacques Klein, and Yves Le Traon. ApkCombiner: Combining Multiple Android Apps to Support Inter-App Analysis. In The 30th IFIP International Conference on ICT Systems Security and Privacy Protection (SEC), 2015.
    [3]
    Android platform frameworks base. https://github.com/android/platform_ frameworks_base. Accessed: 2017-02-10.
    [4]
    Issue 225647: Nosuchmethoderror in forwardinglistener. https://code.google. com/p/android/issues/detail?id=225647. Accessed: 2017-02-10.
    [5]
    java.lang.nosuchmethoderror: android.graphics.canvas.drawoval#22. https:// github.com/googlesamples/android-vision/issues/22. Accessed: 2017-02-10.
    [6]
    Haoyu Wang, Zhe Liu, Yao Guo, Xiangqun Chen, Miao Zhang, Guoai Xu, and Jason Hong. An explorative study of the mobile app ecosystem from app developers’ perspective. In Proceedings of the 26th International Conference on World Wide Web, WWW ’17, pages 163–172, 2017.
    [7]
    F-droid âĂŞ free and open source android app repository. https://f-droid.org. Accessed: 2017-02-10.
    [8]
    Li Li, Tegawendé F Bissyandé, Yves Le Traon, and Jacques Klein. Accessing inaccessible android apis: An empirical study. In The 32nd International Conference on Software Maintenance and Evolution (ICSME 2016), 2016.
    [9]
    Lili Wei, Yepang Liu, and Shing-Chi Cheung. Taming android fragmentation: Characterizing and detecting compatibility issues for android apps. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, ASE 2016, pages 226–237, 2016.
    [10]
    Patrick Mutchler, Yeganeh Safaei, Adam Doupé, and John Mitchell. Target fragmentation in android apps. In Security and Privacy Workshops (SPW), 2016 IEEE, pages 204–213. IEEE, 2016.
    [11]
    Tao Zhang, Jerry Gao, Jing Cheng, and Tadahiro Uehara. Compatibility testing service for mobile applications. In Service-Oriented System Engineering (SOSE), 2015 IEEE Symposium on, pages 179–186. IEEE, 2015.
    [12]
    Hyung Kil Ham and Young Bom Park. Mobile application compatibility test system design for android fragmentation. In International Conference on Advanced Software Engineering and Its Applications, pages 314–320. Springer, 2011.
    [13]
    Android version history. https://en.wikipedia.org/wiki/Android_version_history. Accessed: 2017-02-10.
    [14]
    Kevin Moran, Mario Linares-Vásquez, Carlos Bernal-Cárdenas, Christopher Vendome, and Denys Poshyvanyk. Automatically discovering, reporting and reproducing android application crashes. In Software Testing, Verification and Validation (ICST), 2016 IEEE International Conference on, pages 33–44. IEEE, 2016.
    [15]
    Android maxsdkversion. https://developer.android.com/guide/topics/manifest/ uses-sdk-element.html. Accessed: 2017-02-10.
    [16]
    Application forward compatibility. https://developer.android.com/guide/topics/ manifest/uses-sdk-element.html#fc. Accessed: 2017-02-10.
    [17]
    Application backward compatibility. https://developer.android.com/guide/topics/ manifest/uses-sdk-element.html#bc. Accessed: 2017-02-10.
    [18]
    Getting mac address in android 6.0. http://stackoverflow.com/questions/33159224/ getting-mac-address-in-android-6-0. Accessed: 2017-02-10.
    [19]
    Yasfa1: Yet another simple forms app. https://github.com/IanEH/YASFA1. Accessed: 2017-02-10.
    [20]
    Li Li, Tegawendé Bissyandé, Damien Octeau, and Jacques Klein. Droidra: Taming reflection to support whole-program analysis of android apps. In ISSTA, 2016.
    [21]
    Henry B Mann and Donald R Whitney. On a test of whether one of two random variables is stochastically larger than the other. The annals of mathematical statistics, pages 50–60, 1947.
    [22]
    Li Li, Jun Gao, Médéric Hurier, Pingfan Kong, Tegawendé F Bissyandé, Alexandre Bartel, Jacques Klein, and Yves Le Traon. Androzoo++: Collecting millions of android apps and their metadata for the research community. arXiv preprint arXiv:1709.05281, 2017.
    [23]
    Android developers: Opendatabase. https://developer.android.com/reference/ android/database/sqlite/SQLiteDatabase.html#openDatabase(java.lang.String, %20android.database.sqlite.SQLiteDatabase.CursorFactory,%20int). Accessed: 2017-02-10.
    [24]
    Meiyappan Nagappan and Emad Shihab. Future trends in software engineering research for mobile apps. In Software Analysis, Evolution, and Reengineering (SANER), 2016 IEEE 23rd International Conference on, volume 5, pages 21–32. IEEE, 2016.
    [25]
    William Martin, Federica Sarro, Yue Jia, Yuanyuan Zhang, and Mark Harman. A survey of app store analysis for software engineering. IEEE Transactions on Software Engineering, 2016.
    [26]
    Li Li, Jun Gao, Tegawendé F Bissyandé, Lei Ma, Xin Xia, and Jacques Klein. Characterising deprecated android apis. In The 15th International Conference on Mining Software Repositories (MSR 2018), 2018.
    [27]
    Li Li, Tegawendé F Bissyandé, Jacques Klein, and Yves Le Traon. An investigation into the use of common libraries in android apps. In The 23rd IEEE International Conference on Software Analysis, Evolution, and Reengineering (SANER 2016), 2016.
    [28]
    Ziang Ma, Haoyu Wang, Yao Guo, and Xiangqun Chen. Libradar: fast and accurate detection of third-party libraries in android apps. In Proceedings of the 38th International Conference on Software Engineering Companion, pages 653–656. ACM, 2016.
    [29]
    Haoyu Wang, Hao Li, Li Li, Yao Guo, and Guoai Xu. Why are android apps removed from google play? a large-scale empirical study. In The 15th International Conference on Mining Software Repositories (MSR 2018), 2018.
    [30]
    Gabriele Bavota, Mario Linares-Vasquez, Carlos Eduardo Bernal-Cardenas, Massimiliano Di Penta, Rocco Oliveto, and Denys Poshyvanyk. The impact of api change-and fault-proneness on the user ratings of android apps. IEEE Transactions on Software Engineering, 41(4):384–407, 2015.
    [31]
    Mario Linares-Vásquez, Gabriele Bavota, Carlos Bernal-Cárdenas, Massimiliano Di Penta, Rocco Oliveto, and Denys Poshyvanyk. Api change and fault proneness: a threat to the success of android apps. In Proceedings of the 2013 9th joint meeting on foundations of software engineering, pages 477–487. ACM, 2013.
    [32]
    Mario Linares-Vásquez, Gabriele Bavota, Massimiliano Di Penta, Rocco Oliveto, and Denys Poshyvanyk. How do api changes trigger stack overflow discussions? a study on the android sdk. In proceedings of the 22nd International Conference on Program Comprehension, pages 83–94. ACM, 2014.
    [33]
    Tyler McDonnell, Baishakhi Ray, and Miryung Kim. An empirical study of api stability and adoption in the android ecosystem. In Software Maintenance (ICSM), 2013 29th IEEE International Conference on, pages 70–79. IEEE, 2013.
    [34]
    John Businge, Alexander Serebrenik, and Mark van den Brand. Survival of eclipse third-party plug-ins. In Software Maintenance (ICSM), 2012 28th IEEE International Conference on, pages 368–377. IEEE, 2012.
    [35]
    John Businge, Alexander Serebrenik, and Mark van den Brand. Analyzing the eclipse api usage: Putting the developer in the loop. In Software Maintenance and Reengineering (CSMR), 2013 17th European Conference on, pages 37–46. IEEE, 2013.
    [36]
    John Businge, Alexander Serebrenik, and Mark GJ van den Brand. Eclipse api usage: the good and the bad. Software Quality Journal, 23(1):107–141, 2015.
    [37]
    André Hora, Romain Robbes, Nicolas Anquetil, Anne Etien, Stéphane Ducasse, and Marco Tulio Valente. How do developers react to api evolution? the pharo ecosystem case. In Software Maintenance and Evolution (ICSME), 2015 IEEE International Conference on, pages 251–260. IEEE, 2015.
    [38]
    Dan Han, Chenlei Zhang, Xiaochao Fan, Abram Hindle, Kenny Wong, and Eleni Stroulia. Understanding android fragmentation with topic analysis of vendorspecific bugs. In Reverse Engineering (WCRE), 2012 19th Working Conference on, pages 83–92. IEEE, 2012.
    [39]
    Huoran Li, Xuan Lu, Xuanzhe Liu, Tao Xie, Kaigui Bian, Felix Xiaozhu Lin, Qiaozhu Mei, and Feng Feng. Characterizing smartphone usage patterns from millions of android users. In Proceedings of the 2015 ACM Conference on Internet Measurement Conference, pages 459–472. ACM, 2015.
    [40]
    Xiaoyong Zhou, Yeonjoon Lee, Nan Zhang, Muhammad Naveed, and XiaoFeng Wang. The peril of fragmentation: Security hazards in android device driver customizations. In Security and Privacy (SP), 2014 IEEE Symposium on, pages 409–423. IEEE, 2014.
    [41]
    Lei Wu, Michael Grace, Yajin Zhou, Chiachih Wu, and Xuxian Jiang. The impact of vendor customizations on android security. In Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security, pages 623–634. ACM, 2013.
    [42]
    Hammad Khalid, Meiyappan Nagappan, Emad Shihab, and Ahmed E Hassan. Prioritizing the devices to test your app on: A case study of android game apps. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 610–620. ACM, 2014.
    [43]
    Li Li, Tegawendé F Bissyandé, Mike Papadakis, Siegfried Rasthofer, Alexandre Bartel, Damien Octeau, Jacques Klein, and Yves Le Traon. Static analysis of android apps: A systematic literature review. Information and Software Technology, 2017.
    [44]
    Yepang Liu, Chang Xu, and Shing-Chi Cheung. Characterizing and detecting performance bugs for smartphone applications. In Proceedings of the 36th International Conference on Software Engineering, pages 1013–1024. ACM, 2014.
    [45]
    Fatih Nayebi, Jean-Marc Desharnais, and Alain Abran. The state of the art of mobile application usability evaluation. In Electrical & Computer Engineering (CCECE), 2012 25th IEEE Canadian Conference on, pages 1–4. IEEE, 2012.

    Cited By

    View all
    • (2024)FILO: Automated FIx-LOcus Identification for Android Framework Compatibility IssuesInformation10.3390/info1508042315:8(423)Online publication date: 23-Jul-2024
    • (2024)Issues and Their Causes in WebAssembly Applications: An Empirical StudyProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661227(170-180)Online publication date: 18-Jun-2024
    • (2024)APICIA: An API Change Impact Analyzer for Android AppsProceedings of the 2024 IEEE/ACM 46th International Conference on Software Engineering: Companion Proceedings10.1145/3639478.3640041(99-103)Online publication date: 14-Apr-2024
    • Show More Cited By

    Index Terms

    1. CiD: automating the detection of API-related compatibility issues in Android apps

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image ACM Conferences
      ISSTA 2018: Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis
      July 2018
      379 pages
      ISBN:9781450356992
      DOI:10.1145/3213846
      • General Chair:
      • Frank Tip,
      • Program Chair:
      • Eric Bodden
      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

      Sponsors

      In-Cooperation

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 12 July 2018

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. API-related Compatibility Issue
      2. Android
      3. CiD
      4. Framework Base

      Qualifiers

      • Research-article

      Conference

      ISSTA '18
      Sponsor:

      Acceptance Rates

      Overall Acceptance Rate 58 of 213 submissions, 27%

      Upcoming Conference

      ISSTA '24

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)88
      • Downloads (Last 6 weeks)9
      Reflects downloads up to

      Other Metrics

      Citations

      Cited By

      View all
      • (2024)FILO: Automated FIx-LOcus Identification for Android Framework Compatibility IssuesInformation10.3390/info1508042315:8(423)Online publication date: 23-Jul-2024
      • (2024)Issues and Their Causes in WebAssembly Applications: An Empirical StudyProceedings of the 28th International Conference on Evaluation and Assessment in Software Engineering10.1145/3661167.3661227(170-180)Online publication date: 18-Jun-2024
      • (2024)APICIA: An API Change Impact Analyzer for Android AppsProceedings of the 2024 IEEE/ACM 46th International Conference on Software Engineering: Companion Proceedings10.1145/3639478.3640041(99-103)Online publication date: 14-Apr-2024
      • (2024)Managing API Evolution in Microservice ArchitectureProceedings of the 2024 IEEE/ACM 46th International Conference on Software Engineering: Companion Proceedings10.1145/3639478.3639800(195-197)Online publication date: 14-Apr-2024
      • (2024)Measuring and Characterizing (Mis)compliance of the Android Permission SystemIEEE Transactions on Software Engineering10.1109/TSE.2024.336292150:4(742-764)Online publication date: Apr-2024
      • (2024)Understanding Android OS Forward Compatibility Support for Legacy Apps: A Data-Driven Analysis2024 IEEE International Conference on Software Analysis, Evolution and Reengineering (SANER)10.1109/SANER60148.2024.00029(216-226)Online publication date: 12-Mar-2024
      • (2024)Efficient Fuel Delivery at Your Fingertips: Developing a Seamless On-Demand Fuel Delivery App with FlutterCognitive Computing and Cyber Physical Systems10.1007/978-3-031-48891-7_11(134-147)Online publication date: 5-Jan-2024
      • (2023)Automatically Detecting Incompatible Android APIsACM Transactions on Software Engineering and Methodology10.1145/362473733:1(1-33)Online publication date: 23-Nov-2023
      • (2023)Towards Efficient Record and Replay: A Case Study in WeChatProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3613880(1681-1692)Online publication date: 30-Nov-2023
      • (2023)LazyCow: A Lightweight Crowdsourced Testing Tool for Taming Android FragmentationProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3613098(2127-2131)Online publication date: 30-Nov-2023
      • Show More Cited By

      View Options

      Get Access

      Login options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media