android boot camp 2012 - slides

79
Marko Gargenta marakana.com ANDROID OVERVIEW

Upload: alpha1001alpha

Post on 28-Oct-2014

743 views

Category:

Documents


12 download

DESCRIPTION

Android Boot Camp 2012

TRANSCRIPT

Page 1: Android Boot Camp 2012 - Slides

Marko Gargenta marakana.com

ANDROID  OVERVIEW  

Page 2: Android Boot Camp 2012 - Slides

About  Marko  Gargenta  

Developer of Android Bootcamp for Marakana.

Instructor for 1,000s of developers on Android at Qualcomm, Cisco, Motorola, DoD and other great orgs.

Author of Learning Android published by O’Reilly.

Speaker at OSCON (3x), ACM, IEEE, SDC, AnDevCon.

Co-Founder of SFAndroid.org

Co-Chair of Android Open conference: AndroidOpen.com

Page 3: Android Boot Camp 2012 - Slides

Agenda  

•  Android  Then  &  Now  •  Android  versions  •  The  Stack  •  Opera<ng  System  Features  

•  Hello  World!  

•  Main  Building  Blocks  •  Architec<ng  an  App  •  Android UI •  Debugging & Logging •  Android  Security  •  Summary  

Page 4: Android Boot Camp 2012 - Slides

ANDROID  THEN  &  NOW  

Page 5: Android Boot Camp 2012 - Slides

History  and  Possible  Future  

2005   Google  buys  Android,  Inc.  Work  on  Dalvik  starts  

2007   Open  Handset  Alliance  announced  Early  SoOware  Development  Kit  

2008-­‐2010   Android  becomes  the  dominant  mobile  plaTorm  

2011   Games,  Tablets,  TVs  

Future?   Beyond  phones  

Page 6: Android Boot Camp 2012 - Slides

Vision  for  Android  

Our goal is not just a single device. Our vision is a mobile platform that runs on many many different devices.

– Eric Schmidt

Page 7: Android Boot Camp 2012 - Slides

PlaTorm  Versions  Version   API  Level   Nickname  

Android  1.0   1   Android  

Android  1.1   2   Android  

Android  1.5   3   Cupcake  

Android  1.6   4   Donut  

Android  2.0   5   Éclair  

Android  2.01   6   Éclair  

Android  2.1   7   Éclair  

Android  2.2   8   FroYo  

Android  2.3   9   Gingerbread  

Android  2.3.3   10   Gingerbread  

Android  3.x   11,  12,  13   Honeycomb  

Android  4.0   14   Ice  Cream  Sandwich  

Page 8: Android Boot Camp 2012 - Slides

Version  Distribu<on  

Source: Android.com

Page 9: Android Boot Camp 2012 - Slides

Historical  Distribu<on  

Source: Android.com

Page 10: Android Boot Camp 2012 - Slides

Add-­‐Ons  

TouchWiz   MotoBlur  SenseUI  

Page 11: Android Boot Camp 2012 - Slides

“With  Google”  

Devices that have “with Google” add-on feature a set of Google’s proprietary applications, such as Maps, Gmail, Gtalk, and many others.

OEMs and carriers typically enter into a licensing agreement with Google in order to distribute Google version of Android.

Page 12: Android Boot Camp 2012 - Slides

ANDROID  STACK  

Page 13: Android Boot Camp 2012 - Slides

The  Stack  

Linux Kernel

Libraries

Application Framework

Applications

Home Contacts Phone Browser Other

Activity Manager

Window Manager

ContentProviders

View System

PackageManager

TelephonyManager

Resource Manager

LocationManager

NotiicationManager

Surface Manager

OpenGL

SGL

Media Framework

FreeType

SSL

SQLite

WebKit

libc

Android Runtime

Core Libs

Dalvik VM

DisplayDriver

KeypadDriver

CameraDriver

WiFiDriver

FlashDriver

AudioDriver

BinderDriver

PowerMgmt

Page 14: Android Boot Camp 2012 - Slides

Linux  Kernel  Android runs on Linux.

Linux provides: Hardware abstraction layer Memory management Process management Networking

Users never see Linux sub system

The adb shell command opens Linux shell

Linux Kernel

Libraries

Application Framework

Applications

Home Contacts Phone Browser Other

Activity Manager

Window Manager

ContentProviders

View System

PackageManager

TelephonyManager

Resource Manager

LocationManager

NotiicationManager

Surface Manager

OpenGL

SGL

Media Framework

FreeType

SSL

SQLite

WebKit

libc

Android Runtime

Core Libs

Dalvik VM

DisplayDriver

KeypadDriver

CameraDriver

WiFiDriver

FlashDriver

AudioDriver

BinderDriver

PowerMgmt

Android™ Stack

Page 15: Android Boot Camp 2012 - Slides

Na<ve  Libraries  Pieces borrowed from other open source projects:

Bionic, a super fast and small license-friendly libc library optimized for Android

WebKit library for fast HTML rendering

OpenGL for graphics

Media codecs offer support for major audio/video codecs

SQLite database

Much more…

Linux Kernel

Libraries

Application Framework

Applications

Home Contacts Phone Browser Other

Activity Manager

Window Manager

ContentProviders

View System

PackageManager

TelephonyManager

Resource Manager

LocationManager

NotiicationManager

Surface Manager

OpenGL

SGL

Media Framework

FreeType

SSL

SQLite

WebKit

libc

Android Runtime

Core Libs

Dalvik VM

DisplayDriver

KeypadDriver

CameraDriver

WiFiDriver

FlashDriver

AudioDriver

BinderDriver

PowerMgmt

Page 16: Android Boot Camp 2012 - Slides

Dalvik  Dalvik VM is Android implementation of Java VM

Dalvik is optimized for mobile devices: •  Battery consumption •  CPU capabilities

Key Dalvik differences: •  Register-based versus stack-based VM •  Dalvik runs .dex files •  More efficient and compact implementation •  Different set of Java libraries than JDK

Page 17: Android Boot Camp 2012 - Slides

Applica<on  Framework  The rich set of system services wrapped in an intuitive Java API.

This ecosystem that developers can easily tap into is what makes writing apps for Android easy.

Location, web, telephony, WiFi, Bluetooth, notifications, media, camera, just to name a few.

Linux Kernel

Libraries

Application Framework

Applications

Home Contacts Phone Browser Other

Activity Manager

Window Manager

ContentProviders

View System

PackageManager

TelephonyManager

Resource Manager

LocationManager

NotiicationManager

Surface Manager

OpenGL

SGL

Media Framework

FreeType

SSL

SQLite

WebKit

libc

Android Runtime

Core Libs

Dalvik VM

DisplayDriver

KeypadDriver

CameraDriver

WiFiDriver

FlashDriver

AudioDriver

BinderDriver

PowerMgmt

Page 18: Android Boot Camp 2012 - Slides

Applica<ons  

Dalvik Executable + Resources = APK Must be signed (but debug key is okay for development) Many markets with different policies

Page 19: Android Boot Camp 2012 - Slides

App  Distribu<on  

•  One  of  the  markets  •  Side  loading  •  Internal  app  directory  

Page 20: Android Boot Camp 2012 - Slides

Markets  

•  Google  Android  Market  •  Amazon  Android  Market  

•  Other  emerging  markets  

Page 21: Android Boot Camp 2012 - Slides

Side  Loading  

Page 22: Android Boot Camp 2012 - Slides

Internal  App  Directory  

Page 23: Android Boot Camp 2012 - Slides

OPERATING  SYSTEM  FEATURES    

Page 24: Android Boot Camp 2012 - Slides

Mul<media  AudioPlayer lets you simply specify the audio resource and play it.

VideoView is a View that you can drop anywhere in your activity, point to a video file and play it.

XML: <VideoView android:id="@+id/video" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center” />

Java: player = (VideoView) findViewById(R.id.video); player.setVideoPath("/sdcard/samplevideo.3gp"); player.start();

Page 25: Android Boot Camp 2012 - Slides

Supported  Media  Formats  Audio   AAC  LC/LTP,  HE-­‐AACv1  (AAC+),  HE-­‐

AACv2,  AMR-­‐NB,  AMR-­‐WB,  MP3,  MIDI,  RTTTL/RTX,  Ogg,  PCM/WAVE  

Video   H.263,  H.264,  MPEG-­‐4,  VP8  

Image   JPEG,  GIF,  PNG,  BMP  

RTSP and HTTP progressive streaming. HTTP live streaming coming soon. More native support in the works.

Native support available via Khronos OpenMax IL

Page 26: Android Boot Camp 2012 - Slides

Cloud  to  Device  Push  

Big deal for many pull-based apps. Will make devices use less battery.

Page 27: Android Boot Camp 2012 - Slides

C2DM  –  The  Big  Picture  

Page 28: Android Boot Camp 2012 - Slides

Device  Administra<on  

New in FroYo: Android Device Admin API.

Administrator can set: Enable passwords Set password quality Max failed logins Prompt for new password Remotely wipe device data Lock the device

App requests Device Admin permissions. If granted, admin policies apply. If not, app doesn’t work.

Policies could be hard-coded or dynamic.

Third-party enterprise solutions use this framework to build DM policies.

Page 29: Android Boot Camp 2012 - Slides

File  System  The file system has three main mount points. One for system, one for the apps, and one for whatever.

Each app has its own sandbox easily accessible to it. No one else can access its data. The sandbox is in /data/data/com.marakana.yamba/

SDCard is expected to always be there. It’s a good place for large files, such as movies and music. Everyone can access it.

System partition is where the entire Android operating system is, customized by OEM or not.

Page 30: Android Boot Camp 2012 - Slides

HELLO  WORLD!  

Page 31: Android Boot Camp 2012 - Slides

Android  SDK  -­‐  What’s  In  The  Box  

SDK

Tools Docs Platforms

Data Skins Images Samples

Add-ons Google

Page 32: Android Boot Camp 2012 - Slides

Create  New  Project  Use the Eclipse tool to create a new Android project.

Here are some key constructs:

Project   Eclipse  construct  

Target   minimum  to  run  

App  name   whatever  

Package   Java  package  

Ac<vity   Java  class  

Page 33: Android Boot Camp 2012 - Slides

Anatomy  of  An  App  

Java Code +

XML and Other Resources

+ Manifest File

= Android App

Page 34: Android Boot Camp 2012 - Slides

Running  on  Emulator  

Emulator, not a simulator

Page 35: Android Boot Camp 2012 - Slides

MAIN  BUILDING  BLOCKS  

Page 36: Android Boot Camp 2012 - Slides

Yamba  Demo  

Let’s see a real-world medium complexity Android app in action:

Yamba: Yet Another Micro Blogging App

Page 37: Android Boot Camp 2012 - Slides

Ac<vi<es  

Android Application

Main Activity AnotherActivity

AnotherActivity

An Activity represents a screen or a window. Sort of.

Page 38: Android Boot Camp 2012 - Slides

Ac<vity  Lifecycle  Activities have a well-defined lifecycle. The Android OS manages your activity by changing its state. You fill in the blanks.

Page 39: Android Boot Camp 2012 - Slides

Intents  

Intents represent events or actions.

They are to Android apps what hyperlinks are to websites. Sort of.

Intents can be implicit or explicit.

Page 40: Android Boot Camp 2012 - Slides

Services  

Services are code that runs in the background. They can be started and stopped. Services doesn’t have UI.

Page 41: Android Boot Camp 2012 - Slides

Service  Lifecycle  

Service also has a lifecycle, but it’s much simpler than activity’s.

An activity typically starts and stops a service to do some work for it in the background, such as play music, check for new tweets, etc.

Services can be bound or unbound.

Page 42: Android Boot Camp 2012 - Slides

Remote  Services  

Page 43: Android Boot Camp 2012 - Slides

Content  Providers  

Content Providers share content with applications across application boundaries. Examples of built-in Content Providers are: Contacts, MediaStore, Settings and more.

Page 44: Android Boot Camp 2012 - Slides

Content  Provider  Example  

Page 45: Android Boot Camp 2012 - Slides

Broadcast  Receivers  

An Intent-based publish-subscribe mechanism. Great for listening system events such as SMS messages.

Page 46: Android Boot Camp 2012 - Slides

Architecture  of  An  App  

An Android application is a collection of many different building blocks. They are loosely coupled and can be reconfigured by the developer easily, or at least that’s the intention.

Let’s look at 7 stages of Yamba next.

Page 47: Android Boot Camp 2012 - Slides

Yamba  Part  1  

Page 48: Android Boot Camp 2012 - Slides

Yamba  Part  2  

Page 49: Android Boot Camp 2012 - Slides

Yamba  Part  3  

Page 50: Android Boot Camp 2012 - Slides

Yamba  Part  4  

Page 51: Android Boot Camp 2012 - Slides

Yamba  Part  5  

Page 52: Android Boot Camp 2012 - Slides

Yamba  Part  6  

Page 53: Android Boot Camp 2012 - Slides

Yamba  Part  7  

Page 54: Android Boot Camp 2012 - Slides

ANDROID  USER  INTERFACE  

Page 55: Android Boot Camp 2012 - Slides

Two  UI  Approaches  

Procedural   DeclaraKve  

You  write  Java  code  Similar  to  Swing  or  AWT  

You  write  XML  code  Similar  to  HTML  of  a  web  page  

You can mix and match both styles. Best practice:

•  Start with XML and declare most of UI •  Switch to Java and implement the UI logic

Page 56: Android Boot Camp 2012 - Slides

XML-­‐Based  User  Interface  

Use WYSIWYG tools to build powerful XML-based UI. Easily customize it from Java. Separate concerns.

Page 57: Android Boot Camp 2012 - Slides

Views  and  Layouts  

Layouts contain widgets and other layouts forming a “composite” pattern.

Page 58: Android Boot Camp 2012 - Slides

Linear  Layout  

One of the most commonly used layouts. It lays its children next to each other, either horizontally or vertically.

Page 59: Android Boot Camp 2012 - Slides

Rela<ve  Layout  

Children of relative layout are placed in relationship to each other. This layout is efficient.

Page 60: Android Boot Camp 2012 - Slides

Table  Layout  

Table layout puts its children into table rows and columns. It is similar to an HTML table.

Page 61: Android Boot Camp 2012 - Slides

Frame  Layout  

Frame layout places its children on top of each other, like a deck of cards. It is useful for widgets such as tabs or as a placeholder for views added programmatically.

Page 62: Android Boot Camp 2012 - Slides

Common  UI  Components  

Android UI includes many common modern UI widgets, such as Buttons, Tabs, Progress Bars, Date and Time Pickers, etc.

Page 63: Android Boot Camp 2012 - Slides

Selec<on  Components  

Some UI widgets may be linked to zillion pieces of data. Examples are ListView and Spinners (pull-downs).

Page 64: Android Boot Camp 2012 - Slides

Adapters  

To make sure they run smoothly, Android uses Adapters to connect them to their data sources. A typical data source is an Array or a Database.

Data Source

Adapter

Page 65: Android Boot Camp 2012 - Slides

Complex  Components  

Certain high-level components are simply available just like Views. Adding a Map or a Video to your application is almost like adding a Button or a piece of text.

Page 66: Android Boot Camp 2012 - Slides

Menus  and  Dialogs  

Page 67: Android Boot Camp 2012 - Slides

Graphics  &  Anima<on  

Android has rich support for 2D graphics. You can draw & animate from XML. You can use OpenGL for 3D graphics.

Page 68: Android Boot Camp 2012 - Slides

Mul<media  AudioPlayer lets you simply specify the audio resource and play it.

VideoView is a View that you can drop anywhere in your activity, point to a video file and play it.

XML: <VideoView android:id="@+id/video" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center” />

Java: player = (VideoView) findViewById(R.id.video); player.setVideoPath("/sdcard/samplevideo.3gp"); player.start();

Page 69: Android Boot Camp 2012 - Slides

DEBUGGING    ANDROID  APPS  

Page 70: Android Boot Camp 2012 - Slides

LogCat  

The universal, most versatile way to track what is going on in your app.

Can be viewed via command line or Eclipse.

Logs can be generated both from SDK Java code, or low-level C code via Bionic libc extension.

Page 71: Android Boot Camp 2012 - Slides

Debugger  

Your standard debugger is included in SDK, with all the usual bells & whistles.

Page 72: Android Boot Camp 2012 - Slides

TraceView  

TraceView helps you profile you application and find bottlenecks. It shows execution of various calls through the entire stack. You can zoom into specific calls.

Page 73: Android Boot Camp 2012 - Slides

Hierarchy  Viewer  

Hierarchy Viewer helps you analyze your User Interface.

Base UI tends to be the most “expensive” part of your application, this tool is very useful.

Page 74: Android Boot Camp 2012 - Slides

ANDROID  SECURITY  

Page 75: Android Boot Camp 2012 - Slides

Security  Overview  No app can adversely impact other apps, user, or OS

Cannot read/write user’s private data Cannot read other app’s data Cannot perform network access Cannot keep device awake, and so on

Each application is its own sandbox To share resources, apps need to request permissions User must grant permissions at install time

Linux manages security Not up to Dalvik (Java) but outsourced to Linux Native code (NDK) also adheres to sandboxing

Page 76: Android Boot Camp 2012 - Slides

Applica<on  Sandboxing  An application is an island on its own.

It contains any number of Activities, Services, Receivers and Providers.

It has its own file system, database, place to store native libraries.

No other app can access any of its data without prior permission.

Page 77: Android Boot Camp 2012 - Slides

Permissions  

A component that does something potentially dangerous can require callers to have permission to access it.

App that wants to use it must have user grant it permission.

Permissions are granted at install time. All or nothing. Forever.

Page 78: Android Boot Camp 2012 - Slides

Some  System  Permissions  ACCESS_COARSE_LOCATION   ACCESS_FINE_LOCATION  

ACCESS_NETWORK_STATE   ACCESS_WIFI_STATE  

BATTERY_STATS   BLUETOOTH  

CALL_PHONE   CALL_PRIVILEGED  

CAMERA   DEVICE_POWER  

GET_ACCOUNTS   GET_TASKS  

INSTALL_PACKAGES   INTERNET  

KILL_BACKGROUND_PROCESSES   NFC  

READ_CALENDAR   READ_CONTACTS  

RECEIVE_SMS   RECORD_AUDIO  

WRITE_EXTERNAL_STORAGE   WRITE_SETTINGS  

Page 79: Android Boot Camp 2012 - Slides

Summary  

Android is open and complete system for mobile development. It is based on Java and augmented with XML.

It takes about 3-5 days of intensive training to learn Android application development for someone who has basic Java (or similar) experience.

Marko Gargenta, Marakana.com [email protected] +1-415-647-7000