The objective of the course is to be able to write, build, debug Android native components. Having completed the training the participant should be able to describe the key architectures of the Android platform, be able to describe the differences of Android application development and native development.

Intended audience
The intended audience for this training course is system programmers and architects who already understand the basics of Android software development and have Java, C and C++ programming experience but are new to Android native development.

Skills acquired
Upon completing the course you will be able to:

  • Pick the right implementation model for right purpose (JNI, native library, Java)
  • Describe the parts of the system which are manufacturer dependent and which are not
  • Understand the Android boot sequence in detail  
  • Can analyze the structure of the Android platform
  • Can debug Android platform code with gdb (ddd)
  • Build system images
  • Write simple JNI code that call back Java code
  • Implement simple HAL modules
  • Make justifiable decisions on when to implement something with native code
  • Use some basic Linux OS utilities such as procrank and ps
  • Debug difficult to find bugs such as null pointer exceptions in native code
  • Describe the differences between application development and platform development and recognize the skills needed for each

Course duration
5 days

Course format
The course has 30% of lectures and 70% of hands-on exercises.

Good knowledge of basic system programming concepts such as threads and processes. Understanding of C, C++ and Java programming languages.