Testing Android Apps Through Symbolic Execution
|
|
|
- Christine Morrison
- 10 years ago
- Views:
Transcription
1 Testing Android Apps Through Symbolic Execution Nariman Mirzaei *, Sam Malek *, Corina S. Păsăreanu, Naeem Esfahani *, Riyadh Mahmood * * Department of Computer Science George Mason University {nmirzaei, smalek, nesfaha2, [email protected] NASA Ames Research Center [email protected] ABSTRACT There is a growing need for automated testing techniques aimed at Android apps. A critical challenge is the systematic generation of test cases. One method of systematically generating test cases for Java programs is symbolic execution. But applying symbolic execution tools, such as Symbolic Pathfinder (SPF), to generate test cases for Android apps is challenged by the fact that Android apps run on Dalvik Virtual Machine (DVM) instead of JVM. In addition, Android apps are event driven and susceptible to pathdivergence due to their reliance on an application development framework. This paper provides an overview of a two-pronged approach to alleviate these issues. First, we have developed a model of Android libraries in Java Pathfinder (JPF) to enable execution of Android apps in a way that addresses the issues of incompatibility with JVM and path-divergence. Second, we have leveraged program analysis techniques to correlate events with their handlers for automatically generating Android-specific drivers that simulate all valid events. Keywords Java Pathfinder, Symbolic Pathfinder, Android, Testing 1. INTRODUCTION In 2008, Google and Open Handset Alliance launched Android Platform for mobile devices. Android is a comprehensive software framework for mobile communication devices including smartphones and PDAs. Android has had a meteoric rise since its inception partly due its vibrant app market that currently provisions over half a million apps, with thousands added and updated on a daily basis. Not surprisingly there is an increasing demand by developers, consumers, and market operators for automated testing techniques applicable to Android apps. A promising automated testing technique is symbolic execution [12], a program-analysis technique that uses symbolic values, rather than actual values, as program inputs. It gathers the constraints on those values along each path of the program and with the help of a solver generates inputs for all reachable paths. Although Android apps are developed in Java, they introduce three challenges for symbolic execution tools targeted at Java, namely Symbolic PathFinder (SPF) [22]. First challenge is that Android apps depend on a proprietary set of libraries that are not available outside the device or emulator. Android code runs on Dalvik Virtual Machine (DVM) [6] instead of the traditional Java Virtual Machine (JVM). Thus, Android apps are complied into Dalvik byte-code rather than Java bytecode. For using SPF to symbolically executed Android apps, they need to be transformed into the corresponding Java bye code representation. The second challenge is that Android programs dependence on framework libraries makes them prone to path-divergence problem, and more so than traditional Java programs. In general, path-divergence problem may occur when a symbolic value flows outside the context of the program that is being symbolically executed and to the context of the bounding framework or any external library. In Android, however, path-divergence is the norm, rather than the exception. A typical Android app is composed of multiple Activities and Services, playing the role of software components, which communicate extensively with one another using Intents, Android s messaging system. An Intent is used to carry over a value to another Activity/Service and as a result that value leaves the boundaries of the app and is passed through Android libraries before it is retrieved in the new Activity/Service. Finally, Android is an event driven system and extracting program input values is highly dependent on user action most of the times, meaning that the symbolic execution engine has to wait for the user to interact with the system and tap on a button or initiate some other type of event for the program to continue the execution of a certain path. Furthermore, the system itself or a third application can initiate an event and cause the app to behave in a certain way. Such events are far more frequent in smartphone apps than traditional software systems, due to the context sensitive nature of smartphones. Current techniques for dealing with traditional event based systems either use Capture-replay or model driven approaches. In Capture-replay approaches [1, 16, 17], user records her interaction sequences with the GUI, which are replayed in time of testing. Model driven techniques [15, 24] require user to provide a model of the software system s usages. Both Capture-replay and model driven approaches depend on manual effort, thus not very convenient, and prone to missing ways in which an app could be engaged that are not readily known. In fact, in the context of security testing, an app may intentionally incorporate hidden ways in which it can be engaged. There have also been efforts to extract directed graph models automatically by crawling the GUI [1, 16, 17], and use those graphs to generate test sequences, but again may fail to identify other ways in which a system can be engaged. In this paper, we provide an overview of a multi-faceted approach to tackle these challenges. We describe an extension to SPF that provides stubs modeling Android libraries. These models enable us to compile Android apps on JVM, and run them on Java PathFinder (JPF) to address the first challenge, i.e., incompatibility of DVM and JVM. In addition, we provide the logic in certain stubs to simulate the behavior of Android library classes to address the problem of path-divergence. Finally, we leverage both our knowledge of Android specification and a specialized call-graph model of the app to correlate the events with their handlers [13]. Using this model we can automatically generate drivers for extracting the user input values and generating the sequence of valid events for exercising an app. Drivers address the last challenge by guiding the generation of event sequences aimed at simulating an actual user s behavior. The resulting extended version of SPF enables us to symbolically execute Android apps to generate test cases that achieve high code 1
2 coverage. This paper is organized as follows. Section 2 provides the background on Symbolic PathFinder and Android. Section 3 presents an Android app that is used for illustrating the research. Section 4 outlines an overview of our approach. Section 5 provides a detailed view of how we model Android libraries, while Sections 6 provide the details of our approach in generating the drivers for Android apps. The paper concludes with an overview of the related research in Section 7, and a discussion of our future work in Section BACKGROUND In this section we first provide a brief background on SPF, followed by a more detailed overview of Android framework. 2.1 Symbolic PathFinder JPF [11] is a general purpose model checker for Java programs that uses its own Virtual Machine rather than traditional JVM. Symbolic Pathfinder (JPF-Symbc) is built on top of JPF as an extension implementing a non-standard interpretation of Java bytecode using a modified JPF JVM [5]. SPF analyzes Java bytecode and can handle mixed integer and real constraints, as well as complex mathematical constraints via heuristic solving. SPF can be used for test input generation and for finding counterexamples to safety properties [23]. We are extending SPF to model Android apps and leverage it to generate inputs and test cases for them. 2.2 Android Android is a comprehensive software framework for mobile communication devices including smartphones and PDAs. The Android framework includes a full Linux operating system based on the ARM processor, system libraries, middleware, and a suite of pre-installed applications. Google Android platform is based on DVM for executing and containing programs written in Java. Android also comes with an application development framework, which provides an environment for application development and includes services for building GUI applications, data access, and other component types. The framework is designed to simplify the reuse and integration of components. Each Android app has a mandatory manifest file. This is a required XML file for every app and provides essential information for managing the life cycle of an app in the Android platform. Examples of the kinds of information included in a manifest file are descriptions of the application s Activities, Services, Broadcast Receivers, and Content Providers among other architectural and configuration properties. An Activity is a screen that is presented to the user and contains a set of layouts (e.g., LinearLayout that organizes items within the screen horizontally or vertically). The layouts contain GUI controls, known as view widgets (e.g., TextView for viewing text and EditText for text inputs). The layouts and its controls are usually described in a configuration XML file with each layout and control having a unique identifier. A Service is a component that runs in the background and performs long running tasks, such as playing music. Unlike an Activity, a Service does not present the user with a screen for interaction. A Content Provider manages structured data stored on the file system or database, such as contact information. A Broadcast Receiver responds to system wide announcement messages, such as the screen has turned off or the battery is low. Activities, Services, and Broadcast Receivers are activated via Intent messages. An Intent message is an event for an action to be performed along with the data that supports that action. Intent messaging allows for late run-time binding between components, where the calls are not explicit in the code, rather connected through event messaging. Activity and Service are required to follow pre-specified lifecycles [3]. For instance, Figure 1 shows the events in the lifecycle of an Activity: oncreate(), onstart(), onresume(), onpause(), onstop(), onrestart(), and ondestroy(). These lifecycle events play an important role in our research as explained later. In addition to these components, a typical application utilizes many resources. These resources include animation files, graphics files, layout files, menu files, string constants, styles for user interface controls. Most of these are described using XML files. An example, as mentioned before are layouts. The layout XML files define the user interface controls that are used by Activities. The resources each have a unique identifier that is used to distinguish and get a reference to them in the application code. 3. ILLUSTRATIVE EXAMPLE For illustrating the approach, we will use a Driving Directions app, a subset of a software system, called Emergency Deployment System (EDS) [14]. EDS is intended to allow a search and rescue crew to share and obtain an assessment of the situation in realtime (e.g., interactive overlay on maps), coordinate with one another (e.g., send reports, chat, and share video streams), and engage the headquarters (e.g., request resources). Driving Directions app can be used to calculate off-road driving directions between two geographic points, while considering cost objectives such as distance, time, and safety. It also provides the user with the closest dispatches to source, destination or on the route. Figure 2 depicts the GUI of this Android app. The input boxes are for latitude/longitude pair and the buttons for alternative ways of computing the directions. The latitude/longitude coordinates can be typed in or selected from a map. The resulting turn-by-turn directions are shown in a separate text box, and optionally displayed on a map. 4. APPROACH OVERVIEW The main objective of our tool is to automatically generate test inputs for Android apps using SPF. In order to do so, we first need to generate the Java byte-code of the app that can be executed on JVM. Hence, we have to compile the app s source code with Java compiler, instead of Android s Software Development Kit (SDK). This is achieved by first replacing platform-specific parts of the Android libraries that are needed for Figure 1. Lifecycle of Activity in Android. Figure 2. Screen shot of the Driving Directions app. 2
3 each app with our models. These models are essentially stubs that are created in a way that each component s composition and callback behavior is preserved. This allows us to execute an Android app on JPF without modifying the app s implementation. In addition, we have to take into account the fact that a typical app is composed of multiple components (i.e., Activities and Services) that communicate using Android s Intent messages. Pathdivergence issue arises when an Intent is used to pass a symbolic value to another Activity or Service. To solve this problem, we have implemented the appropriate logic for simulating how Android platform mediates the event-based interaction of components, and incorporated that logic in the Activity, Service, and Intent stubs. We refer to these enhanced stubs as mock classes, as they emulate how the corresponding Android constructs behave. This way we are able to address the pathdivergence problem caused by the basic mechanism in which Android components communicate with one another. The second step in our approach is to generate drivers for an app using its call graph model. Unlike traditional Java programs, Android apps do not contain a main class that becomes the root node of the call graph, where the program is always initiated. Android apps are event driven, meaning that the thread of execution constantly changes context between the application logic, system, and user. Therefore, instead of a connected call graph that represents the complete control flow of the application, an Android app is composed of a set of disconnected sub-call graphs that collectively represent the app s logic. These sub-call graphs correspond to all the ways in which an app can be initiated, accessed by the user or Android platform. Figure 3 illustrates a hypothetical call graph model for an Android app, where A, B and C are each a sub-call graph with root nodes a, b, and c, while the black circle represents the start of the app. Following the generation of the sub-call graphs, we parse the source code, the resources and configuration information, including the manifest file, to find the event handlers. This allows us to automatically connect sub-call graphs in order to construct the call graph model of the system. Figure 3 illustrates a subset of the Driving Directions app s call graph model. The dotted arrows that connect two sub-graphs illustrate the initiation of an event either by the user or the system. The call graph model represents all possible method invocation sequences (execution traces) within an app, which is depicted by black arrows in the figure. Finally, we use the call graph model to derive a Context Free Grammar (CFG) that is used to generate drivers. A driver is a sequence of events that simulate user s interaction with the app. Figure 3. a subset of the call graph model for Driving Directions app. Since the root node of each sub-graph represents an event being handled, every valid combination of the root nodes represents a scenario of user interaction with the app. For instance, based on the call graph model in Figure 3, {a,c and {a,c,b are two possible event sequences. We monitor the code coverage from the execution of tests using EMMA [7], an open source toolkit that monitors and reports Java code coverage. We start with a single event driver and continue generating derivers with more event sequences iteratively. The testing stops when we hit a pre-specified code coverage threshold. We describe the approach in more detail in the next two sections. 5. MODELING ANDROID LIBRARIES The conventional technique to tackle the path-divergence problem, which occurs when a Java program depends on external libraries, is to provide stubs for those libraries. We explored three possible techniques for developing stubs for supporting Android apps as describe below. The first and probably the most straightforward approach for us would have been to leverage the implementation of Android s library classes. Android platform provides a set of library classes that apps use to access the resources on the phone. These library classes contain native methods and Java Native Interface (JNI) calls that are platform dependent and cannot be executed outside of an actual phone. To support the development activity, Google provides android.jar with Android s Software Development Kit, which allows developers to resolve the dependencies and compile apps in the development environment. At first blush, it may seem that this jar file could be used to execute apps on top of JPF. However, upon further inspection, we found that Google has stripped the library classes in this jar file, and replaced all the method bodies to throw an exception. A second approach we explored was similar to that employed in Robolectric [20], a framework for running Android unit tests outside of Android emulator and on top of JVM. In this approach, one would use shadow classes, which are mock classes that are accessed through reflection. Shadow classes simulate the behavior of the actual Android library classes, and override the calls to them through reflection. This approach may be useful for running test cases on JVM, but not feasible for use with JPF, because currently JPF is not capable of handling reflection. Finally, a third approach, and the one that we have adopted in our implementation is to provide our own custom built stub and mock classes. The stub classes are used to compile Android apps into JVM byte-code, while mock classes are used to deal with the path-divergence problem. We developed stubs that return random values, when the return type of a method is primitive, and return empty instances of the object, when the return type is a complex data type. Dealing with Android platform, not only we need to provide stub classes to resolve the byte-code incompatibility with JVM, but we also need to address the lack of Android logic outside the phone environment. Android uses its library classes as bolts and nuts that connect the different pieces of an app together. For example, and as shown in Listing 1, in Driving Directions app, DirectionsActivity uses the startactivity 3
4 method of the Android library class Activity.java to start the app s DisplayRouteActivity that displays the shortest route. It creates an Intent in which the source and destination activities along with the values to be carried are specified. In this case we provide the appropriate logic for startactivity mock, such that when a new instance of DisplayRouteAcitivity is created the control flow moves to its oncreate method. Moreover, we create a mock for the Intent.class to address the path-divergence problem. As shown in Listing 1, an instance of Intent is passed to startactivity. This Intent encapsulates symbolic values of sourcelong, sourcelat, destlong and destlat, and causes path-divergence. To deal with this issue, we provided our own implementation of putextra and getextra methods in the mock implementation of Intent.java, such that the symbolic value of those variables is preserved. Android uses a hashmap<string, Object> to store and retrieve the values stored in an Intent, making it difficult to reason about a value stored as Object symbolically. To solve this problem, we provide our model of a hash map that holds primitive values. Consequently, in our implementation of the putextra and getextra methods we use our own model of hash map to enable JPF to symbolically reason about values that are exchanged using the Intent messages. 6. GENERATING DRIVERS The second part of our approach is a technique for generation of drivers that simulate different ways in which an Android app can be engaged. We do that by generating models of app behavior. We parse the app s source code using MoDisco [19] and extract the app s call graph model as shown in Figure 3. The call graph model contains a set of call trees showing the different possible invocation sequences within a given application. Each yellow box in Figure 3 represents a method, and the lines represent the sequence of invocations. The link between sub-graph A and subgraph B is implicit, and hence, shown as a dotted arrow. Initially, implicit links are not present in the model, as MoDisco cannot retrieve the invocation sequences due to the handling of Intent messages. Below we describe how these implicit links are determined in our approach. To generate the drivers, we need to be able to navigate within the app to determine all the ways in which it receives user inputs, system notifications, starts/stops/resumes activities and services, interacts using Intents, etc. Note that unlike Activity, which only accepts GUI inputs, Services may receive inputs from other sources (e.g., system), which are also part of the input surface. We observe the root node of each tree is a method call that no other part of the application logic explicitly calls. Recall from Figure 1 that the lifecycle methods are called by the Android framework only. When these lifecycle methods are overridden in an app s implementation, they form the root nodes of that app s call graph model. Similarly, the event methods of a Service, oncreate() and onbind() for example, would also be root nodes. Some of these root nodes are the initiating points, where input may be supplied to the app from within or outside. Additionally, the controls on an Activity have handlers for their events. For example, a Button often has a click event associated with it. This event is handled by a class that implements the OnClickListener interface and overrides the onclick() method. We expect these sorts of handlers to be in the root nodes of our call trees as well, since Android is event driven and the event handlers are called by the Android system as opposed to the application logic. In the case of Driving Directions, we see that sub-graph A s root is the oncreate() public class DirectionsActivity extends Activity { public String findshortestroute(double sourcelong, double sourcelat, double destlong, double destlat){ Intent intent = new Intent(this,DisplayRouteActivity.class); intent.putextra("value", sourcelong); startactivity(intent); Listing 1. Code snippet from DirectionsActivity.java event handler, and sub-graph B s root node is the onclick() event handler (Figure 3). In order to resolve all of the implicit links in the app, we traverse the call graph starting with the oncreate() root node of the main Activity (the starting point of the app). We continue down the graph and identify implicit method calls in order to link the different sub-graphs. We know that the links would have to be to other root nodes of trees, and achieved through setting event handlers, starting other activities, sending Intent messages, and handling system events. System event handlers deal with notification events, such as when a call is received, network is disconnected, or the battery is running low. As each new sub-graph is linked and connected, we traverse them in a similar fashion. By doing so, we are able to connect the entire call graph of the application, from beginning to end. The call graph model is updated with the newly found information. Using the call graph model we can determine all the valid sequences in which an app can be engaged. This is critical, because one of the shortcomings of symbolic execution is the fact that it is not possible to reason about sequences of actions/events symbolically [10]. The last step is to use the call graph model and create a Context Free Grammar (CFG) that generates all possible sequences of events. We take all the root nodes in our sub-call graphs to be the non-terminals (i.e., alphabets) in the CFG, which are depicted as a, b, and c in the call graph of Figure 3. Each sub-call graph is represented by a variable in the CFG, i.e., A, B and C in Figure 3. We take S to be the start variable. Thus, the CFG for the call graph model in Figure 3 is as follows: (1) S aa (2) A bb cc ε (3) B A ε (4) C A ε The production rule (2) captures the implicit calls from the activity to the event handlers, while productions rules (3) and (4) capture the return of the control flow to the activity where the call is intitiated after an event is handeled. It is clear that if the app is comprised of more than one Activity and many events, the production rules would subsequenlty become more complex. Since infinite number of sequences can be generated from a grammar such as this, we can generate drivers with all kinds of valid combinations of event sequences. We start with drivers that public static void main(string[] args) { try { View v = new View(null); DirectionsActivity da = new DirectionsActivity(); ShortestRoute shortestbutton = da.new ShortestRoute(); da.oncreate(); shortestbutton.onclick(v); catch (Exception e) { e.printstacktrace(); Listing 2. Sample Driver for Driving Directions App 4
5 have a single event and iteratively generate more complex drivers. By symbolically executing the apps using the generated drivers and monitoring the code coverage using EMMA [7], we obtain an accurate assessment of code coverage. This iterative process of generating drivers and testing would continue until a pre-specified code coverage threshold has been reached. Listing 2 illustrates a sample driver for Driving Directions app generated using this method and using the sample call graph model in Figure 3. It contains two sequence of events, i.e., creating a DirectionsActivity object by calling its constructor that triggers the start of the app and calling shortestbutton.onclick that simulates the action of user tapping on the Shortest button. That triggers findshortestroute(double srclong, double srclat, double dstlong, double dstlat) method of Listing 1, which is specified to be executed with symbolic values. 7. RELATED WORK The Android development environment ships with a powerful testing framework [4] that is built on top of JUnit. Robolectric [20] is another framework that separates the test cases from the device or emulator and provides the ability to run them directly by referencing their library files. While these frameworks automate the execution of the tests, the test cases themselves still have to be written by the engineers. Traditionally, testing tools use random inputs, but modern approaches utilize grammars for representing mutations of possible inputs [9, 21] or achieve white-box fuzz testing using symbolic execution and dynamic test generation[8]. None of these methods provide a fully automatic while comprehensive technique to generate test inputs for applications developed on an event driven framework, such as Android. While approaches presented in [16, 18] use GUI crawling techniques to automatically extract directed graph models to model user interaction and generate test sequences, we look in the source code and use program analysis to derive the test generation and by targeting our framework to Android, we are able to achieve significant automation. Our research is related to the approaches described in [2, 10] for testing Android apps. In [10], a new testing framework that integrates evolutionary testing and symbolic execution is proposed to address the weaknesses of symbolic execution in generating event sequences. [2] presents an approach based on concolic testing for generating event sequences for Android apps. While the first approach does not address the problem of event sequence generation for frameworks, such as Android, the second one only works for testing screen tap events and does not address the problem of handling input values. 8. CONCLUSION We have provided an overview of what we believe to be the first approach for symbolic execution of Android apps. We have extended SPF and used it together with the system s call graph model to generate test cases for Android apps. The key contributions of our work are (1) creating stubs that let us compile and run Android apps on JPF, (2) creating mock classes for Android library classes to address path-divergence, and (3) automatically generating drivers that simulate the user s behavior based on the valid use cases obtained from analyzing the system s source code. In our on going work, we are developing support for a larger subset of Android library classes by implementing the appropriate stubs and mock classes. We are also planning to integrate the extended SPF tool suite with our cloud-based Android testing infrastructure, described in [13], to detect both functional and security vulnerabilities. 9. ACKNOWLEDGMENTS This research is supported by grant D11AP00282 from Defense Advanced Research Projects Agency. 10. REFERENCES [1] Amalfitano, D. et al A GUI Crawling-Based Technique for Android Mobile Application Testing. Software Testing, Verification and Validation Workshops (ICSTW), 2011 IEEE Fourth International Conference on (2011). [2] Anand, S. et al Automated Concolic Testing of Smartphone Apps. ACM Symposium on Foundations of Software Engineering (FSE 12), (2012). [3] Android Developers Guide: [4] Android Testing Framework: [5] Cadar, C. et al Symbolic execution for software testing in practice: preliminary assessment. International Conference on Software Engineering (ICSE), (2011). [6] Dalvik - Code and documentation from Android s VM team: [7] EMMA: [8] Godefroid, P. et al Automated whitebox fuzz testing. Network and Distributed System Security Sym. (2008). [9] Godefroid, P. et al Grammar-based whitebox fuzzing. ACM SIGPLAN Notices (2008), [10] Inkumsah, K. and Xie, T Improving structural testing of object-oriented programs via integrating evolutionary testing and symbolic execution. 23rd IEEE/ACM Int'l Conf. on Automated Software Engineering (ASE '08) (2008). [11] Java PathFinder: [12] King, J A new approach to program testing. Programming Methodology. (1975), [13] Mahmood, R. et al A whitebox approach for automated security testing of Android applications on the cloud. Int'l Wrkshp. on Automation of Soft. Test. (Jun. 2012). [14] Malek, S. et al A Style-Aware Architectural Middleware for Resource-Constrained, Distributed Systems. IEEE Trans. Softw. Eng. 31, 3 (Mar. 2005), [15] Mehlitz, P. et al Jpf-awt: Model checking gui applications. Automated Software Engineering (ASE), th IEEE/ACM International Conference on (2011). [16] Memon, A. et al GUI ripping: Reverse engineering of graphical user interfaces for testing. proceedings of the 10th working conf. on reverse engineering (WCRE 03) (2003). [17] Memon, A.M. et al Automated test oracles for GUIs. ACM SIGSOFT Software Engineering Notes (2000), [18] Memon, A.M. and Xie, Q Studying the fault-detection effectiveness of GUI test cases for rapidly evolving software. Software Engineering, IEEE Transactions on. 31, 10 (2005). [19] MoDisco: [20] Robolectric: [21] Sen, K. et al CUTE: A concolic unit testing engine for C. ACM. [22] Symbolic PathFinder: [23] Visser, W. et al Test input generation with Java PathFinder. ACM SIGSOFT Soft. Eng. Notes. 29, 4 (2004). [24] White, L. and Almezen, H Generating test cases for GUI responsibilities using complete interaction sequences. Software Reliability Engineering, ISSRE Proceedings. 11th International Symposium on (2000). 5
Detecting privacy leaks in Android Apps
Detecting privacy leaks in Android Apps Li Li, Alexandre Bartel, Jacques Klein, and Yves le Traon University of Luxembourg - SnT, Luxembourg {li.li,alexandre.bartel,jacques.klein,yves.letraon}@uni.lu Abstract.
EvoDroid: Segmented Evolutionary Testing of Android Apps
EvoDroid: Segmented Evolutionary Testing of Android Apps Riyadh Mahmood Computer Science Dept. George Mason University Fairfax, VA, USA [email protected] Nariman Mirzaei Computer Science Dept. George Mason
AndroLIFT: A Tool for Android Application Life Cycles
AndroLIFT: A Tool for Android Application Life Cycles Dominik Franke, Tobias Royé, and Stefan Kowalewski Embedded Software Laboratory Ahornstraße 55, 52074 Aachen, Germany { franke, roye, kowalewski}@embedded.rwth-aachen.de
Android Basics. Xin Yang 2016-05-06
Android Basics Xin Yang 2016-05-06 1 Outline of Lectures Lecture 1 (45mins) Android Basics Programming environment Components of an Android app Activity, lifecycle, intent Android anatomy Lecture 2 (45mins)
INTRODUCTION TO ANDROID CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 11 02/15/2011
INTRODUCTION TO ANDROID CSCI 4448/5448: OBJECT-ORIENTED ANALYSIS & DESIGN LECTURE 11 02/15/2011 1 Goals of the Lecture Present an introduction to the Android Framework Coverage of the framework will be
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder Matt Department of Computer Science and Engineering University of Minnesota [email protected] Abstract We present
An Introduction to Android Application Development. Serdar Akın, Haluk Tüfekçi
An Introduction to Android Application Serdar Akın, Haluk Tüfekçi ARDIC ARGE http://www.ardictech.com April 2011 Environment Programming Languages Java (Officially supported) C (Android NDK Needed) C++
Execution and Property Specifications for JPF-Android
Execution and Property Specifications for JPF-Android Heila van der Merwe, Brink van der Merwe and Willem Visser Dept. of Computer Science University of Stellenbosch, South Africa {hvdmerwe, abvdm, wvisser}@cs.sun.ac.za
Industrial Adoption of Automatically Extracted GUI Models for Testing
Industrial Adoption of Automatically Extracted GUI Models for Testing Pekka Aho 1,2 [email protected], Matias Suarez 3 [email protected], Teemu Kanstrén 1,4 [email protected], and Atif M. Memon
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months
Specialized Android APP Development Program with Java (SAADPJ) Duration 2 months Our program is a practical knowledge oriented program aimed at making innovative and attractive applications for mobile
Overview of CS 282 & Android
Overview of CS 282 & Android Douglas C. Schmidt [email protected] www.dre.vanderbilt.edu/~schmidt Institute for Software Integrated Systems Vanderbilt University Nashville, Tennessee, USA CS 282
Android Development. Marc Mc Loughlin
Android Development Marc Mc Loughlin Android Development Android Developer Website:h:p://developer.android.com/ Dev Guide Reference Resources Video / Blog SeCng up the SDK h:p://developer.android.com/sdk/
A GUI Crawling-based technique for Android Mobile Application Testing
3th International Workshop on TESTing Techniques & Experimentation Benchmarks for Event-Driven Software Berlin, Germany March 21, 2011 A GUI Crawling-based technique for Android Mobile Application Testing
4. The Android System
4. The Android System 4. The Android System System-on-Chip Emulator Overview of the Android System Stack Anatomy of an Android Application 73 / 303 4. The Android System Help Yourself Android Java Development
Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University
Introduction to Android: Hello, Android! 26 Mar 2010 CMPT166 Dr. Sean Ho Trinity Western University Android OS Open-source mobile OS (mostly Apache licence) Developed by Google + Open Handset Alliance
Graduate presentation for CSCI 5448. By Janakiram Vantipalli ( [email protected] )
Graduate presentation for CSCI 5448 By Janakiram Vantipalli ( [email protected] ) Content What is Android?? Versions and statistics Android Architecture Application Components Inter Application
Generating Test Cases With High Branch Coverage for Web Applications
Generating Test Cases With High Branch Coverage for Web Applications Andrey Zakonov and Anatoly Shalyto National Research University of Information Technologies, Mechanics and Optics, Saint-Petersburg,
A Modular Approach to Teaching Mobile APPS Development
2014 Hawaii University International Conferences Science, Technology, Engineering, Math & Education June 16, 17, & 18 2014 Ala Moana Hotel, Honolulu, Hawaii A Modular Approach to Teaching Mobile APPS Development
Programming with Android: System Architecture. Dipartimento di Scienze dell Informazione Università di Bologna
Programming with Android: System Architecture Luca Bedogni Marco Di Felice Dipartimento di Scienze dell Informazione Università di Bologna Outline Android Architecture: An Overview Android Dalvik Java
Presenting Android Development in the CS Curriculum
Presenting Android Development in the CS Curriculum Mao Zheng Hao Fan Department of Computer Science International School of Software University of Wisconsin-La Crosse Wuhan University La Crosse WI, 54601
Introduction to Android. CSG250 Wireless Networks Fall, 2008
Introduction to Android CSG250 Wireless Networks Fall, 2008 Outline Overview of Android Programming basics Tools & Tricks An example Q&A Android Overview Advanced operating system Complete software stack
Developing NFC Applications on the Android Platform. The Definitive Resource
Developing NFC Applications on the Android Platform The Definitive Resource Part 1 By Kyle Lampert Introduction This guide will use examples from Mac OS X, but the steps are easily adaptable for modern
An Android-based Instant Message Application
An Android-based Instant Message Application Qi Lai, Mao Zheng and Tom Gendreau Department of Computer Science University of Wisconsin - La Crosse La Crosse, WI 54601 [email protected] Abstract One of the
ANDROID PROGRAMMING - INTRODUCTION. Roberto Beraldi
ANDROID PROGRAMMING - INTRODUCTION Roberto Beraldi Introduction Android is built on top of more than 100 open projects, including linux kernel To increase security, each application runs with a distinct
Industrial Adoption of Automatically Extracted GUI Models for Testing
Industrial Adoption of Automatically Extracted GUI Models for Testing Pekka Aho, VTT Technical Research Centre of Finland International Workshop on Experiences and Empirical Studies in Software Modelling
Hacking your Droid ADITYA GUPTA
Hacking your Droid ADITYA GUPTA adityagupta1991 [at] gmail [dot] com facebook[dot]com/aditya1391 Twitter : @adi1391 INTRODUCTION After the recent developments in the smart phones, they are no longer used
ITG Software Engineering
Basic Android Development Course ID: Page 1 Last Updated 12/15/2014 Basic Android Development ITG Software Engineering Course Overview: This 5 day course gives students the fundamental basics of Android
Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53
Preface xvi Part I Introduction and System Engineering 1 Chapter 1 Introduction 2 1.1 What Is Software Engineering? 2 1.2 Why Software Engineering? 3 1.3 Software Life-Cycle Activities 4 1.3.1 Software
GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS
Embedded Systems White Paper GETTING STARTED WITH ANDROID DEVELOPMENT FOR EMBEDDED SYSTEMS September 2009 ABSTRACT Android is an open source platform built by Google that includes an operating system,
Introduction to Android
Introduction to Android Poll How many have an Android phone? How many have downloaded & installed the Android SDK? How many have developed an Android application? How many have deployed an Android application
Frameworks & Android. Programmeertechnieken, Tim Cocx
Frameworks & Android Programmeertechnieken, Tim Cocx Discover thediscover world atthe Leiden world University at Leiden University Software maken is hergebruiken The majority of programming activities
Android Application Development - Exam Sample
Android Application Development - Exam Sample 1 Which of these is not recommended in the Android Developer's Guide as a method of creating an individual View? a Create by extending the android.view.view
How To Develop Android On Your Computer Or Tablet Or Phone
AN INTRODUCTION TO ANDROID DEVELOPMENT CS231M Alejandro Troccoli Outline Overview of the Android Operating System Development tools Deploying application packages Step-by-step application development The
ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android
Why Android? ECWM511 MOBILE APPLICATION DEVELOPMENT Lecture 1: Introduction to Android Dr Dimitris C. Dracopoulos A truly open, free development platform based on Linux and open source A component-based
Android Application Development
Android Application Development Self Study Self Study Guide Content: Course Prerequisite Course Content Android SDK Lab Installation Guide Start Training Be Certified Exam sample Course Prerequisite The
A Short Introduction to Android
A Short Introduction to Android Notes taken from Google s Android SDK and Google s Android Application Fundamentals 1 Plan For Today Lecture on Core Android Three U-Tube Videos: - Architecture Overview
Instrumentation Software Profiling
Instrumentation Software Profiling Software Profiling Instrumentation of a program so that data related to runtime performance (e.g execution time, memory usage) is gathered for one or more pieces of the
Creating and Using Databases for Android Applications
Creating and Using Databases for Android Applications Sunguk Lee * 1 Research Institute of Industrial Science and Technology Pohang, Korea [email protected] *Correspondent Author: Sunguk Lee* ([email protected])
Introduction to Android Programming (CS5248 Fall 2015)
Introduction to Android Programming (CS5248 Fall 2015) Aditya Kulkarni ([email protected]) August 26, 2015 *Based on slides from Paresh Mayami (Google Inc.) Contents Introduction Android
Mobile Application Development Android
Mobile Application Development Android MTAT.03.262 Satish Srirama [email protected] Goal Give you an idea of how to start developing Android applications Introduce major Android application concepts
Lecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY
ANDROID BASED MOBILE APPLICATION DEVELOPMENT and its SECURITY Suhas Holla #1, Mahima M Katti #2 # Department of Information Science & Engg, R V College of Engineering Bangalore, India Abstract In the advancing
Running a Program on an AVD
Running a Program on an AVD Now that you have a project that builds an application, and an AVD with a system image compatible with the application s build target and API level requirements, you can run
Android Development Tools for Eclipse
Android Development Tools for Eclipse Sanjay Shah Khirulnizam Abd Rahman Chapter No. 1 "Installing Eclipse, ADT, and SDK" In this package, you will find: A Biography of the author of the book A preview
Android For Java Developers. Marko Gargenta Marakana
Android For Java Developers Marko Gargenta Marakana Agenda Android History Android and Java Android SDK Hello World! Main Building Blocks Debugging Summary History 2005 Google buys Android, Inc. Work on
ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)
ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Who am I? Lo Chi Wing, Peter Lecture 1: Introduction to Android Development Email: [email protected] Facebook: http://www.facebook.com/peterlo111
Environment Modeling for Automated Testing of Cloud Applications
Environment Modeling for Automated Testing of Cloud Applications Linghao Zhang, Tao Xie, Nikolai Tillmann, Peli de Halleux, Xiaoxing Ma, Jian Lv {lzhang25, txie}@ncsu.edu, {nikolait, jhalleux}@microsoft.com,
Introduction to Android
Introduction to Android Android Smartphone Programming Matthias Keil Institute for Computer Science Faculty of Engineering October 19, 2015 Outline 1 What is Android? 2 Development on Android 3 Applications:
Automated Testing with Targeted Event Sequence Generation
Automated Testing with Targeted Event Sequence Generation Casper S. Jensen, Aarhus University [email protected] Mukul R. Prasad Fujitsu Laboratories of America [email protected] Anders Møller Aarhus University
How to develop your own app
How to develop your own app It s important that everything on the hardware side and also on the software side of our Android-to-serial converter should be as simple as possible. We have the advantage that
TUTORIALS AND QUIZ ANDROID APPLICATION SANDEEP REDDY PAKKER. B. Tech in Aurora's Engineering College, 2013 A REPORT
TUTORIALS AND QUIZ ANDROID APPLICATION by SANDEEP REDDY PAKKER B. Tech in Aurora's Engineering College, 2013 A REPORT submitted in partial fulfillment of the requirements for the degree MASTER OF SCIENCE
Oracle Service Bus Examples and Tutorials
March 2011 Contents 1 Oracle Service Bus Examples... 2 2 Introduction to the Oracle Service Bus Tutorials... 5 3 Getting Started with the Oracle Service Bus Tutorials... 12 4 Tutorial 1. Routing a Loan
Mobile App Design and Development
Mobile App Design and Development The course includes following topics: Apps Development 101 Introduction to mobile devices and administrative: Mobile devices vs. desktop devices ARM and intel architectures
Synthesis for Developing Apps on Mobile Platforms
Synthesis for Developing Apps on Mobile Platforms Jeff Foster University of Maryland, College Park Armando Solar-Lezama Massachusetts Institute of Technology Schedule for session Jeff Foster and Armando
Android Mobile App Building Tutorial
Android Mobile App Building Tutorial Seidenberg-CSIS, Pace University This mobile app building tutorial is for high school and college students to participate in Mobile App Development Contest Workshop.
Experimental Comparison of Concolic and Random Testing for Java Card Applets
Experimental Comparison of Concolic and Random Testing for Java Card Applets Kari Kähkönen, Roland Kindermann, Keijo Heljanko, and Ilkka Niemelä Aalto University, Department of Information and Computer
Android Application Development Course Program
Android Application Development Course Program Part I Introduction to Programming 1. Introduction to programming. Compilers, interpreters, virtual machines. Primitive data types, variables, basic operators,
The Android Platform
The Android Platform F. Mallet [email protected] Université Nice Sophia Antipolis A software stack for mobile devices The Android Platform OS kernel, system libraries, application frameworks & key
By sending messages into a queue, we can time these messages to exit the cue and call specific functions.
Mobile App Tutorial Deploying a Handler and Runnable for Timed Events Creating a Counter Description: Given that Android Java is event driven, any action or function call within an Activity Class must
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
Workshop on Android and Applications Development
Workshop on Android and Applications Development Duration: 2 Days (8 hrs/day) Introduction: With over one billion devices activated, Android is an exciting space to make apps to help you communicate, organize,
Android Developer Fundamental 1
Android Developer Fundamental 1 I. Why Learn Android? Technology for life. Deep interaction with our daily life. Mobile, Simple & Practical. Biggest user base (see statistics) Open Source, Control & Flexibility
Jordan Jozwiak November 13, 2011
Jordan Jozwiak November 13, 2011 Agenda Why Android? Application framework Getting started UI and widgets Application distribution External libraries Demo Why Android? Why Android? Open source That means
A model driven approach for Android applications development
A model driven approach for Android applications development Abilio G. Parada, Lisane B. de Brisolara Grupo de Arquitetura e Circuitos Integrados (GACI) Centro de Desenvolvimento Tecnológico (CDTec) Universidade
Android Fundamentals 1
Android Fundamentals 1 What is Android? Android is a lightweight OS aimed at mobile devices. It is essentially a software stack built on top of the Linux kernel. Libraries have been provided to make tasks
Middleware- Driven Mobile Applications
Middleware- Driven Mobile Applications A motwin White Paper When Launching New Mobile Services, Middleware Offers the Fastest, Most Flexible Development Path for Sophisticated Apps 1 Executive Summary
Q1. What method you should override to use Android menu system?
AND-401 Exam Sample: Q1. What method you should override to use Android menu system? a. oncreateoptionsmenu() b. oncreatemenu() c. onmenucreated() d. oncreatecontextmenu() Answer: A Q2. What Activity method
Getting started with Android and App Engine
Getting started with Android and App Engine About us Tim Roes Software Developer (Mobile/Web Solutions) at inovex GmbH www.timroes.de www.timroes.de/+ About us Daniel Bälz Student/Android Developer at
ANDROID A Workshop on Android Application Development Organized by Computer Science & Engg Dept Lingaya s University
ANDROID A Workshop on Android Application Development Organized by Computer Science & Engg Dept Lingaya s University 2nd, 3rd March 2012 With the experts of i3indya Technologies (A unit of I THREE INFOTECH
Introduction to Android SDK Jordi Linares
Introduction to Android SDK Introduction to Android SDK http://www.android.com Introduction to Android SDK Google -> OHA (Open Handset Alliance) The first truly open and comprehensive platform for mobile
Android Environment SDK
Part 2-a Android Environment SDK Victor Matos Cleveland State University Notes are based on: Android Developers http://developer.android.com/index.html 1 2A. Android Environment: Eclipse & ADT The Android
Android Application Development Lecture Notes INDEX
Android Application Development Lecture Notes INDEX Lesson 1. Introduction 1-2 Mobile Phone Evolution 1-3 Hardware: What is inside a Smart Cellular Phone? 1-4 Hardware: Reusing Cell Phone Frequencies 1-5
Android Geek Night. Application framework
Android Geek Night Application framework Agenda 1. Presentation 1. Trifork 2. JAOO 2010 2. Google Android headlines 3. Introduction to an Android application 4. New project using ADT 5. Main building blocks
Reminders. Lab opens from today. Many students want to use the extra I/O pins on
Reminders Lab opens from today Wednesday 4:00-5:30pm, Friday 1:00-2:30pm Location: MK228 Each student checks out one sensor mote for your Lab 1 The TA will be there to help your lab work Many students
INTERMEDIATE ANDROID DEVELOPMENT Course Syllabus
6111 E. Skelly Drive P. O. Box 477200 Tulsa, OK 74147-7200 INTERMEDIATE ANDROID DEVELOPMENT Course Syllabus Course Number: APD-0248 OHLAP Credit: No OCAS Code: None Course Length: 120 Hours Career Cluster:
An Exception Monitoring System for Java
An Exception Monitoring System for Java Heejung Ohe and Byeong-Mo Chang Department of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea {lutino, [email protected] Abstract. Exception
MODEL DRIVEN DEVELOPMENT OF BUSINESS PROCESS MONITORING AND CONTROL SYSTEMS
MODEL DRIVEN DEVELOPMENT OF BUSINESS PROCESS MONITORING AND CONTROL SYSTEMS Tao Yu Department of Computer Science, University of California at Irvine, USA Email: [email protected] Jun-Jang Jeng IBM T.J. Watson
06 Team Project: Android Development Crash Course; Project Introduction
M. Kranz, P. Lindemann, A. Riener 340.301 UE Principles of Interaction, 2014S 06 Team Project: Android Development Crash Course; Project Introduction April 11, 2014 Priv.-Doz. Dipl.-Ing. Dr. Andreas Riener
So today we shall continue our discussion on the search engines and web crawlers. (Refer Slide Time: 01:02)
Internet Technology Prof. Indranil Sengupta Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur Lecture No #39 Search Engines and Web Crawler :: Part 2 So today we
Programming with Android
Praktikum Mobile und Verteilte Systeme Programming with Android Prof. Dr. Claudia Linnhoff-Popien Philipp Marcus, Mirco Schönfeld http://www.mobile.ifi.lmu.de Sommersemester 2015 Programming with Android
UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP)
Android Syllabus Pre-requisite: C, C++, Java Programming JAVA Concepts OOPs Concepts Inheritance in detail Exception handling Packages & interfaces JVM &.jar file extension Collections HashTable,Vector,,List,
ANDROID. Programming basics
ANDROID Programming basics Overview Mobile Hardware History Android evolution Android smartphone overview Hardware components at high level Operative system Android App development Why Android Apps? History
Android Java Live and In Action
Android Java Live and In Action Norman McEntire Founder, Servin Corp UCSD Extension Instructor [email protected] Copyright (c) 2013 Servin Corp 1 Opening Remarks Welcome! Thank you! My promise
AppIntent: Analyzing Sensitive Data Transmission in Android for Privacy Leakage Detection
AppIntent: Analyzing Sensitive Data Transmission in Android for Privacy Leakage Detection Zhemin Yang Fudan University [email protected] Guofei Gu Texas A&M University [email protected] Min Yang
Admin. Mobile Software Development Framework: Android Activity, View/ViewGroup, External Resources. Recap: TinyOS. Recap: J2ME Framework
Admin. Mobile Software Development Framework: Android Activity, View/ViewGroup, External Resources Homework 2 questions 10/9/2012 Y. Richard Yang 1 2 Recap: TinyOS Hardware components motivated design
Understanding Android s Security Framework
Understanding Android s Security Framework William Enck and Patrick McDaniel Tutorial October 2008 Systems and Internet Infrastructure Security Laboratory (SIIS) 1 2 Telecommunications Nets. The telecommunications
Analysis of advanced issues in mobile security in android operating system
Available online atwww.scholarsresearchlibrary.com Archives of Applied Science Research, 2015, 7 (2):34-38 (http://scholarsresearchlibrary.com/archive.html) ISSN 0975-508X CODEN (USA) AASRC9 Analysis of
How to Create an Android Application using Eclipse on Windows 7
How to Create an Android Application using Eclipse on Windows 7 Kevin Gleason 11/11/11 This application note is design to teach the reader how to setup an Android Development Environment on a Windows 7
Android Concepts and Programming TUTORIAL 1
Android Concepts and Programming TUTORIAL 1 Kartik Sankaran [email protected] CS4222 Wireless and Sensor Networks [2 nd Semester 2013-14] 20 th January 2014 Agenda PART 1: Introduction to Android - Simple
How To Write A Composition Engine In A Microsoft Ip System
Service composition in IMS using Java EE SIP servlet containers Torsten Dinsing, Göran AP Eriksson, Ioannis Fikouras, Kristoffer Gronowski, Roman Levenshteyn, Per Pettersson and Patrik Wiss The IP Multimedia
OpenCV on Android Platforms
OpenCV on Android Platforms Marco Moltisanti Image Processing Lab http://iplab.dmi.unict.it [email protected] http://www.dmi.unict.it/~moltisanti Outline Intro System setup Write and build an Android
EVALUATION. WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration COPY. Developer
WA1844 WebSphere Process Server 7.0 Programming Using WebSphere Integration Developer Web Age Solutions Inc. USA: 1-877-517-6540 Canada: 1-866-206-4644 Web: http://www.webagesolutions.com Chapter 6 - Introduction
Developing Google Android Mobile Clients for Web Services: a Case Study
tesi di laurea Developing Google Android Mobile Clients for Web Services: a Case Study Anno Accademico 2007/2008 relatore Ch.mo prof. Stefano Russo correlatore Ing. Marcello Cinque candidato Vito Daniele
