User scripting on Android using BladeDroid
|
|
|
- Darlene Harvey
- 10 years ago
- Views:
Transcription
1 User scripting on Android using BladeDroid Ravi Bhoraskar, Dominic Langenegger, Pingyang He, Raymond Cheng, Will Scott, and Michael D. Ernst University of Washington {bhora, pingyh, ETH Zurich, Switzerland Abstract Compared to desktop and web applications, mobile applications have so far been developed in an extremely siloed environment. The apps running on our phone are developed by a single entity with operating system protections between sharing of data or code between programs. However, application extensibility is often desired. In the web, a secondary ecosystem flourishes around browser extensions, enabling users to customize the web as they wish. This paper presents BladeDroid, a system enabling user customization of mobile applications, using a novel combination of bytecode rewriting and dynamic class loading. We describe four extensions that we have built to evaluate BladeDroid s usability, robustness, and performance. 1 Introduction In all mobile operating systems today, apps are large binary silos that users can and must install in an all-ornothing proposition. However, users may want to customize the behavior of the app beyond what the developer provides. For example, a user may want to rearrange the user interface to fit their usage patterns. In the current mobile ecosystem, it is difficult to even write a simple ad blocker without root access. In this paper, we introduce BladeDroid, a system that supports custom user scripts, which we call Blades, on unmodified Android phones. While such extensibility has been supported and built into web browsers for decades, a number of unique challenges exist in the mobile space. An extension system must enable custom user scripts without the explicit support of the host operating system. Requiring modification of the operating system would dramatically limit deployability. Likewise, the system must adhere to the existing mobile operating system security model. Unlike web apps where the DOM and client-side JavaScript is fully accessible to other scripts, mobile apps are opaque packaged binaries. An extension system then needs to not only inject code into app store packages without access to source code, but also provide hooks enabling meaningful functionality. By enabling custom user scripts in mobile applications, BladeDroid opens a world of new customization possibilities on smartphones. BladeDroid can be used for debugging and fuzz testing, automating repetitive tasks, hiding promotional content, changing visual layout, or even modifying the default behavior of existing apps. Like with web extensions, one would expect some Blades to be app specific, and others to generalize across several apps. We have written four example Blades that will serve as running examples for the rest of the paper: Ad Blocker: An ad blocker enforces a blacklist of advertising networks, removing relevant UI elements across all applications. Social Media Plugin: A Like or Share button is inserted into every application to share the current app context to a social media platform. For example, a user can like level 10 of Angry Birds during gameplay and post it to their social news feed. Quiz Cheater: A custom script highlights the correct answer in a specific quiz app, helping the user to win the game. Record and Replay: This script creates a visual overlay over the UI and records user interactions. The action log can then be replayed with the same timings to reproduce previous interactions. Record and replay is a valuable debugging tool [9]. Users interact with BladeDroid by installing a BladeManager app from the Android app store, like any other application. At run time, users can choose to inject Blades into other applications from the BladeManager app. BladeDroid uses a novel combination of bytecode rewriting and dynamic class loading to instrument existing applications on the device to accept dynamic Bladeloading. Because a Blade runs in the same sandboxed environment as the app it is injected into, Blades are compatible with the existing Android security model. In fact, the BladeManager app itself requires no more permissions than the Google Play Store. As Blades are developed, we expect the BladeManager app to facilitate discovery and sharing. We believe BladeDroid can be released on existing app stores without modifying the underlying Android OS and security model. In the rest of the paper, we will elaborate on the following contributions: We show how to enable custom user scripts on an unmodified Android phone, using a novel combination of bytecode-rewriting and dynamic class loading. (Sec-
2 tion 3) We implemented BladeManager, a user-level application that hooks into unmodified applications on the phone and injects custom user-scripts (Blades) at runtime. (Section 3) We demonstrate several Blades an ad blocker, social plugin, quiz cheater, and debugger tool to show the range of app extensions that are enabled by our system. Preliminary results show low space and performance overheads. (Section 4) 2 Background Android is an open source mobile operating system (OS). Android applications are written in Java and are compiled to Dalvik bytecode. They are distributed as packages with the bytecode and resource files. The Android OS has a Dalvik virtual machine, which loads and runs the application using a just-in-time compiler [3]. 2.1 Android App Structure Each Android app is organized as a set of screens that users can navigate between, called Activities [1]. Each Activity usually takes up the entire screen and consists of UI elements, known as Views, such as textboxes, buttons, lists, and images. A View can be associated with a callback function that is invoked when a user interacts with the View. The developer defines these callbacks in the Activity s Java class. A new Activity is instantiated using a runtime mechanism called an Intent. 2.2 Android Security Android provides a manifest-based permission system, where applications must explicitly declare permissions for the resources they use. Examples of such permissions include the INTERNET permission to access data on the Internet or the READ EXTERNAL STORAGE permission to access files on the external storage of the device (typically an SD card). Each Android application runs in a sandboxed environment with an isolated file system, and can only communicate with other apps using an interprocess communication mechanism. 3 Design and Implementation BladeDroid was written with the following high-level design goals: Powerful for developers: The Blade API should be useful across arbitrary Android apps, and should not require the Blade developer to understand app-specific code unless the Blade specifically requires it. For example, the same ad-blocker Blade should be able to run on any app that displays an ad. In particular, the Blade API must expose the UI and events of a host app to the Blade such that it is easy to write concise Blades. 1 public interface Blade { void oncreate(activity activity, Bundle savedinstancestate); 3 void onstart(activity activity); void onresume(activity activity); 5 void onpause(activity activity); void onstop(activity activity); 7 void ondestroy(activity activity); boolean onkeydown(activity activity, int keycode, KeyEvent event); 9 boolean onkeylongpress(activity activity, int keycode, KeyEvent event); boolean onkeyup(activity activity, int keycode, KeyEvent event); 11 Listing 1: The Blade Interface, with the methods implemented by all user scripts in order to extend the functionality of existing Android Activities. Easy for users: It must be easy for a non-technical user to dynamically load and run Blades at runtime. BladeDroid needs to fit the user s mental model of installing and running apps, without understanding the technical details of how apps are instrumented to support Blades. Secure: A Blade should run in the same sandbox as the host application it is injected into. As such from a security perspective, the Blade cannot do more than the application can. Furthermore, it must be impossible to inject Blades without the explicit consent of the user. Low Overhead: BladeDroid should impose little to no overhead to the performance of existing applications when no Blades are present. When Blades are injected into an app, the act of loading a blade must have minimal effect on the responsiveness and performance of the application. 3.1 The Blade API Because Android does not inherently expose all UI elements and events in a structured DOM like the web does, we need to create an API against which Blades can be written. Listing 1 shows the Blade interface against which all Blades are written. The Blade class definition may contain a Java annotation BladeScope defining a filter for Activities that it should run on using a regular expression that is matched to the full Activity name. For example, an ad-blocker may run on all activities, whereas a game guide may be tailored to a specific activity. The Blade API design closely mirrors the Android app lifecycle itself. The Blade can register callbacks that are fired when the app is created, destroyed, started, stopped, paused, and resumed. The Blade is also given hooks into physical button events (e.g. Home, Back, Volume). Blades are passed a reference to the current Activity when these callbacks are fired. Blades also have access to all of
3 the Android APIs that the host application has access to, which allows it to programmatically modify the Activity s view and layouts. 3.2 Blade Ecosystem Figure 1: The BladeDroid Ecosystem. (1) App developer submits apps to App Store. (2) User downloads app from app store. (3) Blade Manager uploads app to BladeDroid cloud and reinstalls the Bladeenabled app. (4) Blade Developer submits Blade to Blade-store (5) Blade Manager fetches and manages Blades. Figure 1 shows how we envision BladeDroid would extend the current application distribution. Users continue to install applications from an app store (like Google Play). In order to use BladeDroid, the user must install a BladeManager app. With BladeManager, a user can choose to instrument any existing installed application to be Blade-enabled, which is necessary before any Blades can be injected into that app. In this process, the installed application package (APK) is sent to a BladeDroid cloud, which performs the bytecode-rewriting and recompiles the application with a BladeLoader and BladeExecutor. The device then reinstalls the Blade-enabled application. The BladeManager app a provides a Blade installation interface, allowing the user to download, install, and uninstall Blades from an online BladeStore. The BladeManager provides a nice user interface to let the user choose which of the Blades to run on specific Blade-enabled apps. The BladeManager internally organizes the Blades on the external storage of the Android device, which acts as a shared filesystem across apps. 3.3 Blade Injection Because a mobile app is not directly programmable in bytecode form, it needs to be instrumented so that Blades written using the Blade API may be able to execute within the context of an app. We used bytecode rewriting [10, 11] techniques to add a BladeLoader and a BladeExecutor to an existing application. BladeLoader: The BladeLoader executes when the application first starts and contacts the BladeManager app using the Android interprocess communication mechanism (Binder). The BladeManager responds with a list of Blades to load, as well as the location of the Blades on Figure 2: The workflow of installing and executing Blades. (1)The BladeLoader sends a request to the BladeManager. (2) BladeManager responds with the location of Blade on the shared filesystem. (3) Blade- Loader verifies the Blade and loads it in memory (4)The BladeExecutor executes the Blade on the appropriate events at runtime. external storage. Because all Blades must be signed by the BladeStore, the BladeLoader can verify the signature of each Blade. BladeLoader then uses Android s Dynamic Class Loading to load each Blade into memory. Figure 2 shows the relationship between the BladeLoader and the BladeManager. BladeExecutor: The BladeExecutor forwards all Activity lifecycle and key press events, triggering the respective callback in the Blade when these events fire. Our key observation is that these two techniques Bytecode Rewriting and Dynamic Class Loading when used together, create a powerful mechanism that enables user-side programmability on traditionally unprogrammable apps. 3.4 BladeDroid Cloud The BladeDroid Cloud uses the Soot framework [12] to perform bytecode rewriting, which adds the BladeLoader and BladeExecutor to a given app. Using Soot, we convert an Android application into Soot s intermediate representation, Jimple, which is designed to ease analysis and manipulation. BladeDroid uses Soot s class visitor methods to iterate through all classes in the application, and determine the Activities. For all of the methods corresponding to the ones in the Blade interface (creating them if necessary), BladeDroid inserts code to call the corresponding Blade methods. To read the Blades from external storage, BladeDroid requires the READ EXTERNAL STORAGE permission which it adds to the application during rewriting. In the current implementation, we manually bladeenable applications and sideload them back onto the device. As future work, future versions of the BladeManager should automatically blade-enable applications on installation. 3.5 Security Since Blades run within an existing application context, they naturally run with the same permissions as their host application, and cannot gain additional privileges
4 beyond what already has been received from the system (except External Storage read permission, which is added to enable Blade-loading). Similarly, the Blade is restricted to the same sandbox. By signing Blades, the system prevents the Blade- Loader from arbitrary code. Furthermore because the BladeLoader checks with the BladeManager app when an app is first loaded, it can verify which Blades the user has granted permission to run in the application. Note that the BladeDroid cloud and BladeStore can easily merge with an existing app store, such that the application is simply recompiled to be Blade-enabled at install time. 4 Evaluation This section describes our experience with applying Blade- Droid to multiple mobile applications from the Google Play Store including detailed evaluations on performance and usability. Additionally, we identify the strengths and limitations of the proposed model by evaluating what types of user scripts are possible to implement and which are not. 4.1 User Survey We conducted a user survey to determine the value of BladeDroid as perceived by users. The survey was distributed on the Android subreddit on Reddit 1, where it got 13 responses. We ask the respondents if they would find user-scripting useful on mobile apps, and if so, what some of those Blades would be. Of the 13 participants, 10 knew of multiple mobile applications that they would like to customize. We list the possible Blades suggested by the survey participants. Each of these can be built within the BladeDroid framework. Ad Blocker: An ad blocker was the most named extension in the survey. We explain our implementation of it in Section Game cheating: Either helps the user by e.g. showing her the right answers in a quiz game or directly gives her high scores. We explain our implementation of one such Blade in Section Automate repetitive tasks: Simplify tasks that are done very often, for example automatically poke-back a friend on the Facebook app. Hide promotional content: Hide promotional tweets or posts in the Twitter or Facebook app respectively. The implementation of this Blade would be very similar to the Ad Blocker. App design: Change the user interface by adapting color, element dimensions, or layout. Launch screen change: Starts the app with a different Activity. The survey participant suggested applying this 1 (a) Without Ad Blocker (b) With Ad Blocker Figure 3: Flappy Bird with and without Ad Blocker. Notice that the ad on top of the screen has been removed in the second screenshot. to the OneBusAway application 2 in order to have it start directly in the bookmarks page. Although the data set may not be representative, we conclude that user scripting on mobile platforms is indeed something that users would use, if it s simple enough to do so. The user study also showed us some applications for BladeDroid we had not thought of and allowed us to analyze their feasibility. 4.2 Sample Blades We wrote four Blades for four different applications, and measure the ease and efficacy of using the Blade interface (Section 4.3). The four Blades are described here. We then run them in different apps which are rewritten by BladeDroid, and measure the performance overheads of running them (Section 4.4) Ad Blocker Ad libraries typically provide a custom UI control (View) that app developers include in their app. This View then serves ads at runtime. The Ad Blocker Blade contains a list of known advertisement Views. Once an Activity is created, the Ad Blocker will recursively find all AdView(s) in this Activity, and render them invisible. Figure 3 demonstrates an example of running Ad Blocker Social Media plugin Our social media plugin (called Socialify) adds a virtual like button to every page of the app it is installed in. Hitting the like button posts an update containing the name of the app and contents of the page to the user s Facebook timeline. The Socialify Blade overrides the long press event of the back button, which is then treated as the Like button. Pressing this button gathers the app 2
5 Blade LOC Comment AdBlocker 52 (see section 4.2.1) Social Media Plugin Additional app required (see section 4.2.2) QuizCheater 79 (see section 4.2.3) Record & Replay 292 (see section 4.2.4) Toast Blade 15 Shows a Toast message Log Blade 14 Logs a simple message (a) Without Quiz Cheater (b) With Quiz Cheater Figure 4: Cartoon Quiz with and without Quiz Cheater. Notice that the correct answer is highlighted with surrounding asterisks in the second screenshot. and activity names, and creates an Intent with these as the parameters. It then calls the Socialify app, which is also installed on the phone, with this intent. The app in turn posts the content to the user s Facebook timeline Quiz Cheater Quiz games like DuelClash, QuizUp or Cartoon Quiz [5] give the user multiple possible answers to a question one of which is correct. As a proof of concept implementation of a game-cheater, we developed an app specific Blade for the single player game Cartoon Quiz. The Blade implementation uses the Java Reflection API to access fields on the Activity that are known to contain the answers to the questions displayed. It then modifies the layout of the Activity to highlight the right answer, as shown in Figure Record and Replay Record and Replay allows one to record UI-interactions with an app, and replay them later. It is a valuable technique for debugging, as it allows reproduction of bugs. It may also prove useful for users to navigate through a complicated series of pages, for example to set up low light settings in a Camera app or automate other repetitive tasks (as mentioned in the user survey). Previous work has enabled record and replay by modifying the operating system, to interpose on the I/O event stream [9]. Blade- Droid allows to do this without OS support. The record part of the R&R-Blade adds a listener to the touch event for each View in the layout and logs every interaction with timing information. The replay part reads this log, and performs the same touch events on the corresponding Views, with the same timing delays. Table 1: Lines of code (LOC) for implemented example Blades. 4.3 Ease of writing Blades One of the primary design goals of the Blade API was that writing Blades should be quick and easy, like writing scripts for web apps. We list the entirety of the Ad Blocker blade in the Appendix. For evaluation, we use the number of lines of code as a proxy for ease of writing a Blade. For each of the four Blades described earlier, as well as two other Hello World Blades, we report the lines of code in the Blade class in Table 1. The median LOC is around 40, and even moderately complex Blades like the Quiz Cheater and Ad Blocker have under a hundred lines of code total, thus providing evidence for the ease of use of the Blade API. 4.4 Performance and Overhead Metrics This sections shows measurements to evaluate the overheads of using BladeDroid and discusses its performance. For size overhead, we measure the change in size of an Android package after Blade-enabling it. We use as our dataset 176 randomly chosen apps from a set of apps crawled from the Google Play store in December Figure 5 shows the cumulative distribution function (CDF) of the fraction increase in the size of the APK files due to Blade-enabling. All the apps have less than 12% increase in package size, with the 90 th percentile having an increase of 3.6%. We consider this an acceptable overhead in storage. Next, we measure the latency caused by the time taken to load Blades into an app. To do this, we crated a modified version of the BladeLoader that logs the timing information for loading Blades. This includes the time for extracting the Blade class from the JAR, and loading it into the Dalvik Virtual Machine. We note that this delay happens only when the app is started, and not on Activity transitions, since Blades can reside in the app memory across activities. Figure 6 plots a graph of the load time with an increasing number of Blades. We notice a linearly increasing trend with a rising number of Blades, as expected. Note, however, that even with 20 Blades, the load time is still only 120 ms. An active Mozilla study [7] suggests that the average load time for Android apps is of the order of a few seconds. With an addition of the order of tens of milliseconds, BladeDroid does not cause significant
6 Figure 5: CDF of the fraction increase in APK size, of 176 Blade-enabled apps. We see that 90% of all apps have a size increase of less than 4%. Figure 6: Plot of Blade loading time [ms] with varying number of installed Blades, averaged over 10 runs. This process happens on very application start. overhead. The authors did not perceive an unusual lag in a Blade-enabled app, even with 20 Blades loaded. We note that the Blades themselves contain arbitrary code, which runs within the context of the apps, and thus different Blades themselves could have could have an impact on latency, performance, and energy consumption of apps. 5 Related Work BladeDroid applies many ideas from web and desktop extension frameworks to the mobile context. We also draw on a set of instrumentation techniques in the mobile space to transparently extend applications. 5.1 Web Application User Scripts All major browsers provide extension APIs [2, 4]. These APIs allow code to interact with websites programmatically. GreaseMonkey [6] for Firefox popularized this concept, allowing users to inject JavaScript on pages and share their developed scripts. AdBlock Plus 3 has become one of the most popular browser extensions, preventing websites from displaying advertisements. Unlike these systems, BladeDroid extends applications without platform support or a high-level semantic language. 5.2 Mobile Platform Instrumentation Mobile instrumentation frameworks exist, rewriting applications to provide additional facilities. However, these systems all require changing applications at compile-time. SIF, the Selective Instrumentation Framework [10], performs instrumentation based analyses built from a short description in a custom Java-like language. This description is set at compile time, allowing for more dramatic changes to application logic than Blades. I-ARM- DROID [8] allows users to specify a security policy for Android API methods, and then implements this policy through rewriting. BladeDroid is the first system that we are aware of that allows users to extend applications 3 without OS support or reinstallation. 6 Conclusion We have proposed BladeDroid, a system which enables user-side programmability for traditionally unprogrammable mobile apps, using Blades. We proposed an API against which these Blades can be written, and a novel combination of bytecode rewriting and dynamic class loading that implements this interface on pre-existing apps in the Play Store. We developed a BladeManager app allowing users to easily install and remove Blades. Preliminary results showed that the overhead of BladeDroid is minimal, and is vastly outweighed by the possibilities of writing arbitrary mobile app extensions. With BladeDroid, we have looked forwards to a rich ecosystem of Android extensions. 7 References [1] Android Activity. Activity.html. [2] Chrome Extensions. [3] Dalvik. [4] Firefox Extensions. [5] Google Play Store. [6] GreaseMonkey. [7] Mozilla Eideticker Project. [8] B. Davis, B. Sanders, A. Khodaverdian, and H. Chen. I-ARM-Droid: A Rewriting Framework for Reference Monitors for Android Applications. In MoST, [9] L. Gomez, I. Neamtiu, T. Azim, and T. Millstein. Reran: Timing- and touch-sensitive record and replay for android. In ICSE, [10] S. Hao, D. Li, W. G. Halfond, and R. Govindan. SIF: A Selective Instrumentation Framework for Mobile Applications. In MobiSys, [11] L. Ravindranath, J. Padhye, S. Agarwal, R. Mahajan, I. Obermiller, and S. Shayandeh. Appinsight: Mobile app performance monitoring in the wild. In OSDI, [12] R. Valle-Rai, P. Co, E. Gagnon, L. J. Hendren, P. Lam, and V. Sundaresan. Soot - a Java bytecode optimization framework. In IBM CASC, 1999.
7 APPENDIX 1 public class AdsBlocker extends AbstractBlade { 3 private static HashSet<String> adviews = new HashSet<String>(Arrays.asList( "com.google.ads.adview", 5 "com.google.android.gms.ads.adview", "com.mopub.mobileads.mopubview")); 7 public void oncreate(activity activity, Bundle savedinstancestate) { 9 hidealladviews(activity.findviewbyid(android.r.id.content)); 11 private void hidealladviews(view inputview) { 13 ViewGroup viewgroup = (ViewGroup) inputview; int childcount = viewgroup.getchildcount(); 15 for (int i = 0; i < childcount; i++) { View v = viewgroup.getchildat(i); 17 try { String viewname = v.getclass().getname(); 19 if (adviews.contains(viewname)) { v.setvisibility(view.invisible); 21 continue; 23 catch (Exception e) { 25 if (v instanceof ViewGroup) { hidealladviews(v); Listing 2: Code for the Ad Blocker Blade. On activity creation, it finds views with IDs of known advertisements, and hides them from view.
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
WebView addjavascriptinterface Remote Code Execution 23/09/2013
MWR InfoSecurity Advisory WebView addjavascriptinterface Remote Code Execution 23/09/2013 Package Name Date Affected Versions Google Android Webkit WebView 23/09/2013 All Android applications built with
Homework 9 Android App for Weather Forecast
1. Objectives Homework 9 Android App for Weather Forecast Become familiar with Android Studio, Android App development and Facebook SDK for Android. Build a good-looking Android app using the Android SDK.
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
Lecture 17: Mobile Computing Platforms: Android. Mythili Vutukuru CS 653 Spring 2014 March 24, Monday
Lecture 17: Mobile Computing Platforms: Android Mythili Vutukuru CS 653 Spring 2014 March 24, Monday Mobile applications vs. traditional applications Traditional model of computing: an OS (Linux / Windows),
Adobe Flash Player and Adobe AIR security
Adobe Flash Player and Adobe AIR security Both Adobe Flash Platform runtimes Flash Player and AIR include built-in security and privacy features to provide strong protection for your data and privacy,
Mobile Performance Management Tools Prasanna Gawade, Infosys April 2014
Mobile Performance Management Tools Prasanna Gawade, Infosys April 2014 Computer Measurement Group, India 1 Contents Introduction Mobile Performance Optimization Developer Tools Purpose and Overview Mobile
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
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
Practical Android Projects Lucas Jordan Pieter Greyling
Practical Android Projects Lucas Jordan Pieter Greyling Apress s w«^* ; i - -i.. ; Contents at a Glance Contents --v About the Authors x About the Technical Reviewer xi PAcknowiedgments xii Preface xiii
Developing and deploying mobile apps
Developing and deploying mobile apps 1 Overview HTML5: write once, run anywhere for developing mobile applications 2 Native app alternative Android -- Java ios -- Objective-C Windows Mobile -- MS tools
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
Issues of Hybrid Mobile Application Development with PhoneGap: a Case Study of Insurance Mobile Application
DATABASES AND INFORMATION SYSTEMS H.-M. Haav, A. Kalja and T. Robal (Eds.) Proc. of the 11th International Baltic Conference, Baltic DB&IS 2014 TUT Press, 2014 215 Issues of Hybrid Mobile Application Development
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
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
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
All Your Code Belongs To Us Dismantling Android Secrets With CodeInspect. Steven Arzt. 04.10.2015 Secure Software Engineering Group Steven Arzt 1
All Your Code Belongs To Us Dismantling Android Secrets With CodeInspect Steven Arzt 04.10.2015 Secure Software Engineering Group Steven Arzt 1 04.10.2015 Secure Software Engineering Group Steven Arzt
Redpaper Axel Buecker Kenny Chow Jenny Wong
Redpaper Axel Buecker Kenny Chow Jenny Wong A Guide to Authentication Services in IBM Security Access Manager for Enterprise Single Sign-On Introduction IBM Security Access Manager for Enterprise Single
Introduction (Apps and the Android platform)
Introduction (Apps and the Android platform) CE881: Mobile and Social Application Programming Simon Lucas & Spyros Samothrakis January 13, 2015 1 / 38 1 2 3 4 2 / 38 Course Structure 10 weeks Each week:
Example of Standard API
16 Example of Standard API System Call Implementation Typically, a number associated with each system call System call interface maintains a table indexed according to these numbers The system call interface
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
Introduction to Android Development. Jeff Avery CS349, Mar 2013
Introduction to Android Development Jeff Avery CS349, Mar 2013 Overview What is Android? Android Architecture Overview Application Components Activity Lifecycle Android Developer Tools Installing Android
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/
Addressing Mobile Load Testing Challenges. A Neotys White Paper
Addressing Mobile Load Testing Challenges A Neotys White Paper Contents Introduction... 3 Mobile load testing basics... 3 Recording mobile load testing scenarios... 4 Recording tests for native apps...
Legal notices. Legal notices. For legal notices, see http://help.adobe.com/en_us/legalnotices/index.html.
ADOBE AIR Security Legal notices Legal notices For legal notices, see http://help.adobe.com/en_us/legalnotices/index.html. iii Contents Installing and updating desktop applications...........................................................................
AUTOMATED CONFERENCE CD-ROM BUILDER AN OPEN SOURCE APPROACH Stefan Karastanev
International Journal "Information Technologies & Knowledge" Vol.5 / 2011 319 AUTOMATED CONFERENCE CD-ROM BUILDER AN OPEN SOURCE APPROACH Stefan Karastanev Abstract: This paper presents a new approach
Smartphone Security for Android Applications
Smartphone Security for Android Applications Steven Arzt Siegfried Rasthofer (Eric Bodden) 17.09.2013 Secure Software Engineering Group Steven Arzt and Siegfried Rasthofer 1 About Us PhD-Students at the
Publishing to TIZEN Using the Automated Conversion/Repackaging of Existing Android Apps. Hyeokgon Ryu, Infraware Technology, Ltd.
Publishing to TIZEN Using the Automated Conversion/Repackaging of Existing Android Apps Hyeokgon Ryu, Infraware Technology, Ltd. Talking about Needs of Automated Converting from Android To Tizen Introduce
Introduction to Android
Introduction to Android 26 October 2015 Lecture 1 26 October 2015 SE 435: Development in the Android Environment 1 Topics for Today What is Android? Terminology and Technical Terms Ownership, Distribution,
VMware Server 2.0 Essentials. Virtualization Deployment and Management
VMware Server 2.0 Essentials Virtualization Deployment and Management . This PDF is provided for personal use only. Unauthorized use, reproduction and/or distribution strictly prohibited. All rights reserved.
Store & Share Quick Start
Store & Share Quick Start What is Store & Share? Store & Share is a service that allows you to upload all of your content (documents, music, video, executable files) into a centralized cloud storage. You
Enterprise Mobile Application Development: Native or Hybrid?
Enterprise Mobile Application Development: Native or Hybrid? Enterprise Mobile Application Development: Native or Hybrid? SevenTablets 855-285-2322 [email protected] http://www.seventablets.com
Elgg 1.8 Social Networking
Elgg 1.8 Social Networking Create, customize, and deploy your very networking site with Elgg own social Cash Costello PACKT PUBLISHING open source* community experience distilled - BIRMINGHAM MUMBAI Preface
Sizmek Formats. IAB Mobile Pull. Build Guide
Sizmek Formats IAB Mobile Pull Build Guide Table of Contents Overview...3 Supported Platforms... 6 Demos/Downloads... 6 Known Issues... 6 Implementing a IAB Mobile Pull Format...6 Included Template Files...
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
Mocean Android SDK Developer Guide
Mocean Android SDK Developer Guide For Android SDK Version 3.2 136 Baxter St, New York, NY 10013 Page 1 Table of Contents Table of Contents... 2 Overview... 3 Section 1 Setup... 3 What changed in 3.2:...
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
Overview. The Android operating system is like a cake consisting of various layers.
The Android Stack Overview The Android operating system is like a cake consisting of various layers. Each layer has its own characteristics and purpose but the layers are not always cleanly separated and
SAIP 2012 Performance Engineering
SAIP 2012 Performance Engineering Author: Jens Edlef Møller ([email protected]) Instructions for installation, setup and use of tools. Introduction For the project assignment a number of tools will be used.
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
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
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
Simply type the id# in the search mechanism of ACS Skills Online to access the learning assets outlined below.
Programming Practices Learning assets Simply type the id# in the search mechanism of ACS Skills Online to access the learning assets outlined below. Titles Debugging: Attach the Visual Studio Debugger
Draft Response for delivering DITA.xml.org DITAweb. Written by Mark Poston, Senior Technical Consultant, Mekon Ltd.
Draft Response for delivering DITA.xml.org DITAweb Written by Mark Poston, Senior Technical Consultant, Mekon Ltd. Contents Contents... 2 Background... 4 Introduction... 4 Mekon DITAweb... 5 Overview of
How to Run Your Existing Android APK on the Tizen Platform. Chandra Bajpai Matt O Keefe OpenMobile World Wide www.openmobileww.com
How to Run Your Existing Android APK on the Tizen Platform Chandra Bajpai Matt O Keefe OpenMobile World Wide www.openmobileww.com OpenMobile Speakers Chandra Bajpai Vice President of New Technologies Matthew
THEODORA TITONIS VERACODE Vice President Mobile
THEODORA TITONIS VERACODE Vice President Mobile MOBILE SECURITY Increasing Threat MOBILE RISK 64% 34% 47% Companies with no BYOD policy. 3 Companies with no app security program. 4 614% Nearly half of
Mobile App Development Using App Inventor
Mobile App Development Using App Inventor October 2013 Mahsa Mohaghegh and Mobile Development Team @ Unitec The Post-PC Era 2007: Apple releases ios on the iphone 2008: Google releases Android on the HTC
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
Automation using Selenium
Table of Contents 1. A view on Automation Testing... 3 2. Automation Testing Tools... 3 2.1 Licensed Tools... 3 2.1.1 Market Growth & Productivity... 4 2.1.2 Current Scenario... 4 2.2 Open Source Tools...
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,
Mobile App Testing Guide. Basics of Mobile App Testing
2015 Mobile App Testing Guide Basics of Mobile App Testing Introduction Technology is on peek, where each and every day we set a new benchmark. Those days are gone when computers were just a machine and
Programming IoT Gateways With macchina.io
Programming IoT Gateways With macchina.io Günter Obiltschnig Applied Informatics Software Engineering GmbH Maria Elend 143 9182 Maria Elend Austria [email protected] This article shows how
Developing Microsoft SharePoint Server 2013 Core Solutions
Course 20488B: Developing Microsoft SharePoint Server 2013 Core Solutions Course Details Course Outline Module 1: SharePoint as a Developer Platform This module examines different approaches that can be
HTML5 Data Visualization and Manipulation Tool Colorado School of Mines Field Session Summer 2013
HTML5 Data Visualization and Manipulation Tool Colorado School of Mines Field Session Summer 2013 Riley Moses Bri Fidder Jon Lewis Introduction & Product Vision BIMShift is a company that provides all
Mobility Introduction Android. Duration 16 Working days Start Date 1 st Oct 2013
Mobility Introduction Android Duration 16 Working days Start Date 1 st Oct 2013 Day 1 1. Introduction to Mobility 1.1. Mobility Paradigm 1.2. Desktop to Mobile 1.3. Evolution of the Mobile 1.4. Smart phone
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
Category: Business Process and Integration Solution for Small Business and the Enterprise
Home About us Contact us Careers Online Resources Site Map Products Demo Center Support Customers Resources News Download Article in PDF Version Download Diagrams in PDF Version Microsoft Partner Conference
White Paper. Java Security. What You Need to Know, and How to Protect Yourself. 800.266.7798 www.inductiveautomation.com
White Paper Java Security What You Need to Know, and How to Protect Yourself Java Security: What You Need to Know, and How to Protect Yourself Ignition HMI, SCADA and MES software by Inductive Automation
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
System Planning, Deployment, and Best Practices Guide
www.novell.com/documentation System Planning, Deployment, and Best Practices Guide ZENworks Application Virtualization 9.0 February 22, 2012 Legal Notices Novell, Inc., makes no representations or warranties
Progressive Enhancement With GQuery and GWT. Ray Cromwell [email protected]
Progressive Enhancement With GQuery and GWT Ray Cromwell [email protected] Web Application Models Web 1.0, 1 Interaction = 1 Page Refresh Pure JS, No Navigation Away from Page Mixed Model, Page Reloads
Inventory and Analytics for Browser-based Applications in the Enterprise
Inventory and Analytics for Browser-based Applications in the Enterprise Introduction Times are changing. Desktop and client/server business applications (collectively referred to as native applications
Security challenges for internet technologies on mobile devices
Security challenges for internet technologies on mobile devices - Geir Olsen [[email protected]], Senior Program Manager for Security Windows Mobile, Microsoft Corp. - Anil Dhawan [[email protected]],
Automated testing for Mobility New age applications require New age Mobility solutions
Automated testing for Mobility New age applications require New age Mobility solutions Executive Summary Today, mobile phone has transformed from its former role as a mere medium of communication to that
Data Visualization Frameworks: D3.js vs. Flot vs. Highcharts by Igor Zalutsky, JavaScript Developer at Altoros
Data Visualization Frameworks: D3.js vs. Flot vs. Highcharts by Igor Zalutsky, JavaScript Developer at Altoros 2013 Altoros, Any unauthorized republishing, rewriting or use of this material is prohibited.
Load and Performance Load Testing. RadView Software October 2015 www.radview.com
Load and Performance Load Testing RadView Software October 2015 www.radview.com Contents Introduction... 3 Key Components and Architecture... 4 Creating Load Tests... 5 Mobile Load Testing... 9 Test Execution...
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
Chapter 2 Getting Started
Welcome to Android Chapter 2 Getting Started Android SDK contains: API Libraries Developer Tools Documentation Sample Code Best development environment is Eclipse with the Android Developer Tool (ADT)
Google Web Toolkit. Introduction to GWT Development. Ilkka Rinne & Sampo Savolainen / Spatineo Oy
Google Web Toolkit Introduction to GWT Development Ilkka Rinne & Sampo Savolainen / Spatineo Oy GeoMashup CodeCamp 2011 University of Helsinki Department of Computer Science Google Web Toolkit Google Web
Step One Check for Internet Connection
Connecting to Websites Programmatically with Android Brent Ward Hello! My name is Brent Ward, and I am one of the three developers of HU Pal. HU Pal is an application we developed for Android phones which
APPLICATION VIRTUALIZATION TECHNOLOGIES WHITEPAPER
APPLICATION VIRTUALIZATION TECHNOLOGIES WHITEPAPER Oct 2013 INTRODUCTION TWO TECHNOLOGY CATEGORIES Application virtualization technologies can be divided into two main categories: those that require an
CA Nimsoft Monitor. Probe Guide for E2E Application Response Monitoring. e2e_appmon v2.2 series
CA Nimsoft Monitor Probe Guide for E2E Application Response Monitoring e2e_appmon v2.2 series Copyright Notice This online help system (the "System") is for your informational purposes only and is subject
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
Statement of Direction
Mobile First: Taking Mobile CRM to the Next Level 1 January 2013 Mobile First: Taking Mobile CRM to the Next Level Whitepaper Mobile First: Taking Mobile CRM to the Next Level 2 Table of Contents Notes...
A Beginners Guide To Responsive, Mobile & Native Websites 2013 Enhance.ie.All Rights Reserved.
A Beginners Guide To Responsive, Mobile & Native Websites 2013 Enhance.ie.All Rights Reserved. 1 The Mobile Web refers to access to the world wide web, i.e. the use of browser-based Internet services,
Database Application Developer Tools Using Static Analysis and Dynamic Profiling
Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract
AppUse - Android Pentest Platform Unified
AppUse - Android Pentest Platform Unified Standalone Environment AppUse is designed to be a weaponized environment for Android application penetration testing. It is a unique, free, and rich platform aimed
place/business fetch details, 184 185 removefromfavorite () function, 189 search button handler bind, 190 191 B BlackBerry build environment
Index A addtofavorite() method, 175 177, 188 189 Android ADT Plugin for Eclipse installation, 22 24 application, GWT Build Path, 244 device info, 247 directory structure, 244, 245 Eclipse classpath, 244
LoadRunner and Performance Center v11.52 Technical Awareness Webinar Training
LoadRunner and Performance Center v11.52 Technical Awareness Webinar Training Tony Wong 1 Copyright Copyright 2012 2012 Hewlett-Packard Development Development Company, Company, L.P. The L.P. information
QUIRE: : Lightweight Provenance for Smart Phone Operating Systems
QUIRE: : Lightweight Provenance for Smart Phone Operating Systems Dan S. Wallach Rice University Joint work with Mike Dietz, Yuliy Pisetsky, Shashi Shekhar, and Anhei Shu Android's security is awesome
QUICK START GUIDE. Cloud based Web Load, Stress and Functional Testing
QUICK START GUIDE Cloud based Web Load, Stress and Functional Testing Performance testing for the Web is vital for ensuring commercial success. JAR:Load is a Web Load Testing Solution delivered from the
Installation & User Guide
SharePoint List Filter Plus Web Part Installation & User Guide Copyright 2005-2011 KWizCom Corporation. All rights reserved. Company Headquarters KWizCom 50 McIntosh Drive, Unit 109 Markham, Ontario ON
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Structured Content: the Key to Agile. Web Experience Management. Introduction
Structured Content: the Key to Agile CONTENTS Introduction....................... 1 Structured Content Defined...2 Structured Content is Intelligent...2 Structured Content and Customer Experience...3 Structured
WEARIT DEVELOPER DOCUMENTATION 0.2 preliminary release July 20 th, 2013
WEARIT DEVELOPER DOCUMENTATION 0.2 preliminary release July 20 th, 2013 The informations contained in this document are subject to change without notice and should not be construed as a commitment by Si14
Adobe Summit 2015 Lab 718: Managing Mobile Apps: A PhoneGap Enterprise Introduction for Marketers
Adobe Summit 2015 Lab 718: Managing Mobile Apps: A PhoneGap Enterprise Introduction for Marketers 1 INTRODUCTION GOAL OBJECTIVES MODULE 1 AEM & PHONEGAP ENTERPRISE INTRODUCTION LESSON 1- AEM BASICS OVERVIEW
Automation of Smartphone Traffic Generation in a Virtualized Environment. Tanya Jha Rashmi Shetty
Automation of Smartphone Traffic Generation in a Virtualized Environment Tanya Jha Rashmi Shetty Abstract Scalable and comprehensive analysis of rapidly evolving mobile device application traffic is extremely
How Programmers Use Internet Resources to Aid Programming
How Programmers Use Internet Resources to Aid Programming Jeffrey Stylos Brad A. Myers Computer Science Department and Human-Computer Interaction Institute Carnegie Mellon University 5000 Forbes Ave Pittsburgh,
Installation & User Guide
SharePoint List Filter Plus Web Part Installation & User Guide Copyright 2005-2009 KWizCom Corporation. All rights reserved. Company Headquarters P.O. Box #38514 North York, Ontario M2K 2Y5 Canada E-mail:
White Paper. How Streaming Data Analytics Enables Real-Time Decisions
White Paper How Streaming Data Analytics Enables Real-Time Decisions Contents Introduction... 1 What Is Streaming Analytics?... 1 How Does SAS Event Stream Processing Work?... 2 Overview...2 Event Stream
HP Business Process Monitor
HP Business Process Monitor For the Windows operating system Software Version: 9.23 BPM Monitoring Solutions Best Practices Document Release Date: December 2013 Software Release Date: December 2013 Legal
Hey, We Catch You: Dynamic Analysis of Android Applications. Wenjun Hu(MindMac) PacSec, Tokyo 2014.11
Hey, We Catch You: Dynamic Analysis of Android Applications Wenjun Hu(MindMac) PacSec, Tokyo 2014.11 Recent years witness the colossal growth of Android malware Vanja Svajcer, SophosLabs, Sophos Mobile
Multivariate Testing of Native Mobile Applications
Multivariate Testing of Native Mobile Applications Clemens Holzmann University of Applied Sciences Upper Austria Department of Mobile Computing Softwarepark 11, 4232 Hagenberg, Austria [email protected]
