Advanced Android
Advanced Android
Duration: 3 Days
Overview Android Stack
Android Linux Kernel Layer Android User-Space Native Layer Android Application Framework Layer Android Applications Layer What is in NDK? Why NDK? Java Native Interface (JNI) Using NDK Fibonacci Example Overview NDKs Stable APIs Lab: NDK Why IPC? What is Binder? What is AIDL? Building a Binder-based Service and Client FibonacciCommon - Define AIDL Interface and Custom Types FibonacciService - Implement AIDL Interface and Expose It To Our Clients Implement AIDL Interface Expose our AIDL-defined Service Implementation to Clients FibonacciClient - Using AIDL-defined Binder-based Services Async-IPC via Binder Lab: Binder-based Service with AIDL Overview Android Security Architecture Application Signing User IDs File Access Using Permissions Permission Enforcement Declaring Custom Permissions Requiring Permissions Enforcing Permissions Dynamically ContentProvider URI Permissions
Android Security
Public vs. Private Components Intent Broadcast Permissions Pending Intents Lab Encryption Rooting an Android device Security of Memory Tap-Jacking on Android Android Device Administration Anti-malware Other Security Concerns Why Build Android From Source? Setting up the Build Environment Downloading the Source Tree Android Source Code Structure Android Build System Initializing the Build Environment Choosing the Build Target Compiling Android Examining the Built Images Running Custom Android Build on Emulator Running Custom Android Build on Real Hardware Building the Linux Kernel Getting the Kernel Bootloading the Kernel Androids init Startup Zygote Startup System Server Startup Vibrator Power Service WiFi Service Telephony Location Service Audio Service Android Media Framework Surface Flinger Camera Service
Android Startup
Android Services
Customizing Android
Setting up the Directory Structure Registering our Device with Androids Build System Adding the Makefile Plumbing for our Device Adding a Custom Kernel to our Device Adding a Custom Native Library and Executable to our Device Using our Native Library via a Custom Daemon Exposing our Native Library via Java (i.e. JNI) Consuming our a Custom Java/JNI?Native Library via a Custom App (Optional) Exposing our Custom Library via a Custom IPC/Binder Service Building a Custom App Using a Custom Service Manager Creating a Custom SDK Add-on (Optional) Android USB Support Mobile Web Landscape Why PhoneGap? Web Apps versus Native Apps versus Hybrid Apps Web -> native conversion Device APIs PhoneGap Implementation PhoneGap and Appcelerator Titanium What is the gap in PhoneGap? Phonegap and Apache Exercise
PhoneGap APIs
Accelerometer Compass Device Geolocation Storage Camera Connection Events Media Capture Contacts File Notification Exercise:
UI Frameworks
NFC
Mobile overview jQuery Mobile intro jQuery Mobile Theme Roller Media Queries Exercise
Implement a PhoneGap app that uses jQuery Mobile and change the theme