Android App Development Training
This 5-day class will give you a 360° developer's view of Android. You will learn how to build your own Android Apps using Google's SDK as well as master tricks of the trade. Topics covered include:
  • API
  • SDK
  • Activities
  • Intents
  • Lifecycle Management
  • Manifest File
  • Background Services
  • Native Applications
  • Remote Admin
  • REST
  • NDK
  • Internals
This class is given either by Mark Murphy, author of CommonsWare's Android Development, or, Karim J. Yaghmour, author of O'Reilly's Embedded Android and Building Embedded Linux Systems.
Montreal, Canada:
  • July 11-15
-- Contact us for an on-site session quote
  • Motorola
  • Intel
  • Panasonic
  • Sony
  • IBM
  • BAE Systems
  • Cisco
  • ST Micro
  • Conexant

You will learn how to:

  • Design, implement and ship a broad range of Android Apps
  • Develop and debug applications using the JDK, ADB, the Android Emulator and the Eclipse environment
  • Use Android's SDK for creating, building and shipping Android packages (.apk)
  • Master the use of core components such as Activities, Services, Content Providers and Broadcast Receivers
  • Generate the required Manifest files for your applications, including Intent filters and Permissions
  • Build user interfaces using Views, Menus and Notifications
  • Handle the multiple form-factors and geometries available on Android devices
  • Store and retrieve data both from the local filesystem and SQLite database
  • Communicate with REST-based services
  • Use the NDK, JNI and the Android Native API to develop Native Applications
  • Understand how Android is and/or can be customized by 3rd parties, including Mobile Network Operators
  • Decide whether it's best to use alternatives to Google's framework


  • What is and isn't Android
  • Where does Android come from
  • App model (vs. “classic” applications)
  • User experience
  • SDK set up and use
  • Fundamental concepts
  • Alternative dev frameworks intro
  • Alternative app marketplaces intro
  • Phones vs. Tablets
  • Countering “fragmentation”

Essential APIs and Techniques

  • Activities
  • Lifecycle Management
  • User interface essentials
  • Fragments
  • Action Bar
  • Dealing with different screen sizes
  • Notifications
  • Manifest File
  • Resources
  • Services
  • Intents
  • Data storage
  • Security and Permissions
  • Packaging and distribution

Task-Specific APIs and Techniques

  • Broadcast Receivers
  • Binder IPC
  • Content Providers
  • Advanced user interface elements
  • Graphics
  • WebKit-based Apps
  • REST-based applications
  • Audio and Video
  • Location and Maps
  • Widgets
  • NFC
  • Sensors
  • Administration
  • Internationalization
  • Alarm Management

Native Development

  • NDK set up and use
  • JNI
  • Native Andoid APIs
  • Native Linux development
  • Porting apps to Android


  • Android Open Source Project (AOSP)
  • System startup
  • Linux kernel "Androidisms"
  • Android Architecture

The above is an "exploded" outline used to illustrate the class' full content. Actual sections and modules differ from the above. Also, note that class content and order of material presented is subject to slight changes, depending on attendee needs and interest. Topics labeled as "intro" are covered in sufficient depth to allow students to start navigating the topic with ease but would typically warrant an entirely separate discussion. Writing a Linux device driver for instance, while a necessary part of adding hardware support to Android, is a vast topic more adequately covered by our Linux Device Drivers class.

This class is intended for developers who want to:

  • Develop Apps for the Android Market
  • Deliver Mobile Versions of Web/Enterprise Applications
  • Port Applications to Android

Requirements, the short version:

  • Java, a healthy dose of it. Make sure you can easily work your way through a Java codebase and are relatively comfortable developing your own Java applications. Usually this means 2+ years of experience.

Requirements, the full story:

  • Google has anchored Android's development environment around Java. You must therefore at the very least have a functional understanding of Java. As others have said, that doesn't mean that you need to be an expert Java developer. Google has in fact gone to great lengths to make Android development easy to approach. Nevertheless, you should be comfortable enough with Java to follow explanations and code exercises without requiring assistance with the language's basics.
  • Even if you do know Java, note that:
    • While Android is based on Java, Google has created an entirely new framework for developing Android applications. Hence, while your existing knowledge of Java class libraries (java.*) is a good asset, you will need to immerse yourself in Android's framework (android.*) to fully benefit from Android's capabilities. This is one of the goals of this class.
    • Android is a very deep software stack and the lower layers are mostly C and C++ based. If you intend to push the limits of what can be done with Android, by using the Native Development Kit, for example, you will need to look beyond Java to achieve your goals.
  • Q: What if I don't know Java?
    A: We strongly encourage you to familiarize yourself with the language before registering for this class. If you are a C# developer, for example, you should be able to pick up Java relatively easily; a lot of both languages' concepts overlap. If you are familiar with another object-oriented language such as C++, for example, you shouldn't be too far off either. No matter your background, you can pick up one of the slew of titles on learning Java. You should try to get yourself into a position where you can painlessly follow others' Java projects and can easily code on your own. Have a look on your favorite online bookstore for Java titles. We've seen good reviews of O'Reilly's Head First Java for example.
  • Note that despite Java being the "official" programming language for the Android framework, other programming languages and development frameworks are available for creating Android applications. Appcelerator's Titanium, for example, allows you to create Android applications using CSS, HTML and JavaScript. Whether or not this type of development environment is appropriate for your target application will be yours to decide. However, one of the goals of this class is to introduce you to such development alternatives.

Mark Murphy

Mark Murphy is the founder of CommonsWare and the author of The Busy Coder’s Guide to Android Development. He is active in supporting the Android developer community, from answering questions on StackOverflow to publishing sample code and reusable components as open source.

A three-time entrepreneur, his experience ranges from consulting on open source and collaborative development for the Fortune 500 to application development on just about anything smaller than a mainframe. He has been a software developer for nearly three decades, from the TRS-80 to the latest crop of mobile devices. A polished speaker, Mr. Murphy has delivered conference presentations and training sessions on a wide array of topics internationally.

Karim Yaghmour

Karim J. Yaghmour is part serial entrepreneur part unrepentant geek. His experience combines a unique mix of mobile, embedded and kernel background with enterprise and web2.0/consumer-oriented Rich Internet Application development. Karim is the author of O'Reilly's Embedded Android and Building Embedded Linux Systems, which sold tens of thousands of copies worldwide and has been translated into several different languages.

Karim has provided training to companies such as: Motorola, Panasonic, NSA, BAE Systems, Conexant, Symbol, Scientific-Atlanta, and Karl Suss Gmbh. Some of Karim's recent mandates include leading development teams delivering products based on a variety of different platforms (.NET/Windows, BlackBerry, Linux, Drupal, Lotus Notes), technologies (Ajax, SQLite, PostgreSQL, CSS/HTML, jQuery/jQueryUI, ActiveDirectory/LDAP, MAPI, WebBrowser object) and programming languages (C#, Java, PHP, JavaScript, Perl, Python, Ruby on Rails, C++).

Having been an early believer in the power of open source, Karim pioneered the world of Linux tracing by introducing the Linux Trace Toolkit (LTT) in the late '90s. He continued maintaining LTT through 2005 and was joined in this effort by developers from several companies, including IBM, HP, and Intel. LTT users included: Google, IBM, HP, Oracle, Alcatel, Nortel, Ericsson, Qualcomm, NASA, Boeing, Airbus, Sony, Samsung, NEC, Fujitsu, SGI, RedHat, Thales, Oerlikon, Bull, Motorola, ARM, ST Micro, Infineon, WindRiver, MontaVista, Scientific-Atlanta, Wipro and Autodesk. Other contributions include relayfs and Adeos.

Karim has presented and published as part of a number of peer-reviewed scientific conferences, magazines and online publications, including Usenix, the Linux Kernel Summit, the Embedded Linux Conference, the Android Builders Summit, AnDevCon, the Embedded Systems Conference, AndroidOpen, the Ottawa Linux Symposium, LinuxJournal, the O'Reilly Network and the Real-Time Linux Workshop. Some of Karim's projects can be found in our Community section. Karim holds Masters and Bachelors degrees in Computer Engineering from the École Polytechnique de Montréal.

Courseware used by some of our instructors is available under a CC-BY-SA 3.0 license. Why?

  • First, we believe that the value of a class is derived from providing instructors recognised as leading experts in their field, not the courseware. Our instructors are not only recognised for their technical achievements, but they are active public speakers at international conferences and forums with an exceptional ability and passion for sharing their knowledge. Our instructors' value is especially prized during our class' hands-on sessions, which occupy more than half of class time, since they are able to pull on their vast experience in assisting attendees in isolating the source of issues they encounter and explaining the underlying theory and wider context pertaining to that topic.
  • Second, we think it's great for past students to continue having access to the latest version of the courseware they used. Whether it be for keeping up-to-date or explore new material, future versions of our class material will always be available to you.
  • Third, our company was built on and lives in the open source ecosystem. Sharing is fundamental to what we do every day.

We, of course, welcome any comments or updates you may have on our courseware. Please send feedback to

Slides: PDF | Beamer files tarball
Exercises: PDF | ODT

Note that some of our instructors might choose to use their own courseware for the sessions they teach. In those cases, the content will differ from the material distributed here but the topics covered will be the same.

Pricing: 2,395$/student. Contact us for an on-site session quote.
Attendance: 12 students max.
Although we do sometimes accept to train larger groups in on-site settings, we believe that a 12 student cap ensures an optimal instructor/attendee ratio in the context of a public session.
Location: No public sessions are presently scheduled
  • Students must bring their own laptops. Please have a look at Google's list of requirements for setting up a proper Android development environment.
  • During the hands-on sessions, we use Google's Android Emulator. You can, nevertheless, test and develop most applications on any Android device.
Courseware: All our courseware is available under CC-BY-SA 3.0; just click on the above "Courseware" thumbnail to download it.
Schedule: Classes run from 9 to 5, with breaks in the morning, at lunch and in the afternoon.
Payment: Opersys accepts all major credit cards, wire transfers and corporate checks drawn on US banks in US funds.
Policies: Students must register and pay all tuition fees prior to class start. Registrations cannot be canceled, though we will do our best to accommodate your situation. Class cancellations are very uncommon (and have never happened as of this writing), but, were they to occur, you would be notified as soon as possible and your tuition fees would be refunded in full.

This class can be given on-site and can be customized to your organization's needs. In addition to English, this class can also be taught in French. For more information regarding this class' logistics or to schedule an on-site session, please contact us.