44
Revised v4Presenter Android Ecosystem and What’s New Wednesday, November 24, 2010

Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Revised v4PresenterAndroid Ecosystem and What’s New

Wednesday, November 24, 2010

Page 2: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Why Mobile?

Wednesday, November 24, 2010

Page 3: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

1B

2B

3B

4B

5B

Landlines PCs TVs Bank users Mobiles

Wednesday, November 24, 2010

Page 4: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

45M

90M

135M

180M

225M

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Quarters since launch

AOL

Wednesday, November 24, 2010

Page 5: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

45M

90M

135M

180M

225M

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Quarters since launch

AOL i-mode

Wednesday, November 24, 2010

Page 6: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

45M

90M

135M

180M

225M

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Quarters since launch

AOL i-mode Netscape

Wednesday, November 24, 2010

Page 7: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

45M

90M

135M

180M

225M

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Quarters since launch

AOL i-mode NetscapeiOS

Wednesday, November 24, 2010

Page 8: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

45M

90M

135M

180M

225M

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Quarters since launch

AOL i-mode NetscapeiOS Android

Data from Asymco: asymco.com

Wednesday, November 24, 2010

Page 9: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

0

50,000

100,000

150,000

200,000

Feb May Jun Aug Today

New activations per day

Wednesday, November 24, 2010

Page 10: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

0

25,000

50,000

75,000

100,000

Feb May Jun Aug Today

Apps in Android Market

Wednesday, November 24, 2010

Page 11: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

90 devices21 manufacturers

50 carriers49 countries

Wednesday, November 24, 2010

Page 12: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android: What’s InsideDalvik virtual machine

Native code

Linux kernel, Android extensions

Harmonylibraries

Android appframework

JNI

Android SDKapps

Android

NDKapps

Wednesday, November 24, 2010

Page 13: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android: What’s InsideAndroid app framework

ActivityManager

WindowManager

Content Providers

ViewSystem

PackageManager

TelephonyManager

ResourceManager

LocationManager

NotificationManager

OpenGLES

FreeType

WebKit

MediaFramework

SSL

SurfaceManager

SGL

SQLite

libc

... ...

Wednesday, November 24, 2010

Page 14: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android: What’s InsideAndroid SDK app

Android manifest

resourcebundle

Dalvik classes

• Currently, Dalvik classes are produced by compiling & translating code written in the Java language

• Excellent toolchain support

• Community work is under way on enabling other languages to be first class Android citizens

Wednesday, November 24, 2010

Page 15: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android NDK appAndroid manifest

resourcebundle

Dalvik classes

libraries& JNI

Android: What’s Inside• This is mostly done by

game developers

• Pretty well all C/C++ code

• Relatively manual toolchain support

Wednesday, November 24, 2010

Page 16: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

How a Developer Works1. Download SDK manager from developer.android.com

and use it to install SDK versions.

2. Use the Eclipse plug-in, or just build with ant, or program in C/C++ using the NDK.

3. Use tools like ddms and logcat and traceview.

4. Download system source from source.android.com, use it for reference.

5. Register as a developer for US$25.

6. Upload your app to Android Market.

7. There is no Step 7!

Wednesday, November 24, 2010

Page 17: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

What a Developer sees• Activities: Something that’s happening on the screen

• Services: Something important in the background

• Intents: For launching other Activities & Services

• Broadcast Receivers: Quickly respond to an event

• Threads and processes: Familiar Linux model

• Content Providers: Interprocess database wrappers

• Manifest: Declaring your app to the world

• Hardware APIs: Location, Camera, Microphone, Video, Accelerometer, and more

Wednesday, November 24, 2010

Page 18: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Activity• Contains the visual user interface

• Focused on one endeavor

• More than one per application

• One Activity is marked for launch

• Current Activity can starts the next

• Extends Activity base class

Wednesday, November 24, 2010

Page 19: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Activity Example

Wednesday, November 24, 2010

Page 20: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Activity Lifecycle• 3 states: active, paused and stopped

• System can kill if paused or stopped

• Managed by 7 protected methods

• Realizing 3 nested “lifetime” loops

• Entire Lifetime

• Visible Lifetime

• Foreground Lifetime

Wednesday, November 24, 2010

Page 21: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Activity LifecycleonCreate()

onStart() onRestart()

onResume()

onPause()

onStop()

onDestroy()

RUNNING

SHUTDOWN

Visible Lifetime

Foreground Lifetime

EntireLifetime

Wednesday, November 24, 2010

Page 22: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Service• Does not have a visual user interface

• Runs in the background

• System attempts to keep it alive

• Communicate through exposed Interface

• Run in the main thread of application

• Spawn another thread to avoid blocking

• Extends Service base class

Wednesday, November 24, 2010

Page 23: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Service Example

Wednesday, November 24, 2010

Page 24: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Service Lifecycle• 2 states: active and stopped

• Runs in foreground

• Not likely to be killed, but possible

• Managed by 3 public methods

Wednesday, November 24, 2010

Page 25: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Service Lifecycle

onCreate()

onStart()

onDestroy()

RUNNING

SHUTDOWN

ActiveLifetime

EntireLifetime

Wednesday, November 24, 2010

Page 26: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Intents• Has an optional target, an action, a Mime type,

and a category, with optional extra data

• Launch a specific Activity or Service via target

• Omit the target and the system will find the Activity or Service to start

• Activities, Services, and BroadcastReceivers register IntentFilters to say they can handle particular Intents

• How everything in Android is tied together

Wednesday, November 24, 2010

Page 27: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Intents

Back button

Intent launch

Wednesday, November 24, 2010

Page 28: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Intent

Wednesday, November 24, 2010

Page 29: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Broadcast Receiver• Does not have a visual user interface

• Runs in the background

• Reacts to broadcast system messages

• Example: battery charge status

• Extends BroadcastReceiver base class

• Has to complete and exit fast

Wednesday, November 24, 2010

Page 30: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Broadcast Receiver Example

Wednesday, November 24, 2010

Page 31: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Broadcast Receiver Lifecycle• 1 state: active

• Runs in background...

• ... but not for long!

• Not likely to be killed, but possible

• Managed by 1 public method

Wednesday, November 24, 2010

Page 32: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Broadcast Receiver Lifecycle

onReceive()

RUNNING

DONE

ActiveLifetime

Wednesday, November 24, 2010

Page 33: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Content Providers• Makes data available to other apps

• Typically backed by file system or SQLite

• Extends ContentProvider base class

• Examples: Contacts, Phone log, Media files, and more

Wednesday, November 24, 2010

Page 34: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Content Providers

ContentProvider

Wednesday, November 24, 2010

Page 35: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Threading• Semantics are like java.lang.thread

• There’s one “special” thread that owns the UI.

• You have to arrange to do any real work on another thread, to keep things from bogging down.

• Shared mutable state... be careful! Lots of potential for deadlocks and race conditions.

Wednesday, November 24, 2010

Page 36: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Threading private Handler mHandler = new Handler(); // class variable

protected void onCreate(Bundle mumble) { // in UI thread sCallProgress = (ProgressBar) findViewById(R.id.sCallProgress); new Thread(new CopyIn()).start(); // ...

class CopyIn implements Runnable { public void run() { while (calls.moveToNext()) { // in background thread print.println(call.cursorToJSON(calls)); savedCalls += 1; sCallProgress.setProgress((int) (savedCalls / denominator)); } mHandler.post(new Runnable() { // send this to UI thread String msg = getString(R.string.saved) + " " + savedCalls + " " + getString(R.string.calls) + "."; public void run() { cpLabel.setText(msg); } });

Wednesday, November 24, 2010

Page 37: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android Manifest• XML file that declares app components:

Activities, Services, Intent Filters, Broadcast Receivers

• Names any libraries to be included

• Identifies permissions needed

• Identifies hardware required

• Identifies framework versions

Wednesday, November 24, 2010

Page 38: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Other bits & pieces• APIs for all the hardware and sensors; location

services

• System intents for telephony and SMS and Maps and so on

• XML subsystem for doing layouts in multiple resolutions and form factors

• XML subsystem for encoding strings with bilt-in i18n

• Utilities for IPC

• ... and much more.

Wednesday, November 24, 2010

Page 39: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android Releases

Oct ’09: Eclair

May ’10: Froyo

Apr ’09: Cupcake Sep ’09: Donut

Wednesday, November 24, 2010

Page 40: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android Releases

Wednesday, November 24, 2010

Page 41: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android Directions• Performance, performance performance

• New form factors

• Framework improvements

• More languages

Wednesday, November 24, 2010

Page 42: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Android Market Directions• On the Web

• Bigger

• Easier to search

• Easier to buy

• Easier to track

Wednesday, November 24, 2010

Page 43: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Why I chose Android• Open source (GPL + Apache 2)

• Low-friction market and side-loading

• Low barrier to entry; java today, more languages tomorrow

• Straightforward API, light on abstraction

• Nice clean unboxed Intent/Activity/Service architecture, with a back button

• Almost nothing hidden

Wednesday, November 24, 2010

Page 44: Android Ecosystem and What’s Ne · Android NDK app Android manifest resource bundle Dalvik classes libraries & JNI Android: What’s Inside • This is mostly done by game developers

Thank you!feedback: bit.ly/mgddbrTim Bray, Developer [email protected] android-developers.blogspot.com @AndroidDev

Wednesday, November 24, 2010