31
Android Tools for Eclipse EclipseDay at Googleplex 2010 August 26th, 2010 Xavier Ducrohet - Google Inc.

Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Android Tools for Eclipse

EclipseDay at Googleplex 2010August 26th, 2010

Xavier Ducrohet - Google Inc.

Page 2: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Android plug-ins for Eclipse

Provide familiar workflowbuildlaunch configurationdebug

Hide the android-specific soupAndroid build is non standardDebugger setup rely on other toolsDeal with the external tools

Page 3: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Current State

ADT 0.9.7 is public (05/2010)SDK Tools, revision 6

Next: ADT 0.9.8SDK Tools, revision 7Entirely developed in the openIn stabilization (tools_r7 branch)Released "soon"

Working on next version in master branchSDK tools, revision 8ADT ?.?.?

Page 4: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Android Projects

3 types of projectsregular app project

code + resourcesgenerate APK

Test ProjectGenerate test APK

Library projectcode + resourcesused by regular app projects

Page 5: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Android Library Projects

Goal is reusing code and resourceslibrary code accesses library resources.

Typical use casesFree and paid versionsCustom widget reused by 2+ apps

ProblemResources are accessed using integer IDs.IDs are generated from resources (R.java)Only one pool of resources per applicationLibrary Projects should work on earlier versions of Android

Page 6: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Building applications with Libraries

aapt generates R.java from all resourcesapp project + librariesno namespace => specific order for overriding values

New problemJava constants are inlined.=> Can't compile library code before generating final R.java

Solutioncompile library resources in the application projectLimitation: Library projects are source only.

Page 7: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Android Library Projects

ContainsManifest (unused for now)Source codeResources

Build steps of the Library ProjectCompile resourcesCompile aidlCompile Java Code

Actually, no usable outputCompilation done for verification only.Application Manifest must manually declare what the library(ies) declares.

Page 8: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)
Page 9: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)
Page 10: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Android Application Projects

application: com.example.myapplibrary: com.example.mylibrary

Build process:compile resources and generate 2 identical R.java

com.example.myapp.Rcom.example.mylibrary.R

compile library code and app code.linked source folder.use gen folder of the main application

Page 11: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Library Projects Setup

All configuration done in default.propertiesplatform version targetisLibrary flaglibrary dependencies

No Eclipse project references in the build path.

Why? Single configuration file compatible with Ant.Mix Eclipse / Ant users in a Team.Develop with Eclipse, automated build release with Ant.

Page 12: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Library Projects

Demo

Page 13: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Library Projects

Introduced in r6 / ADT 0.9.7

New in r7 / ADT 0.9.8Library project with library dependenciesFix a lot of issues related to linked folder in Eclipse

much more robustsupport for any name in the source folderssupport for 2+ source folders

What's next?Manifest mergeFix issue related to custom view attributesIssue with duplicate error/warning, refresh, ...

Page 14: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Editing Android files

Java is handled by JDTXML files

Android ManifestValues (strings, colors, ...)LayoutsMenu definitionSettings definition

9-patch bitmaps

not yet integrated into ADT

Page 15: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Editor

Lots of challengesRendering fidelityComplex user interactivityUI for a lot of attributes

Page 16: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Rendering: Architecture

Page 17: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Rendering: layoutlib

Library bundled with the SDKOne per platform version (1.5, 1.6, 2.1, 2.2, ...)100% Java Loaded dynamically by ADTStateless

Android View System 2D Drawing API reimplemented on top of Java2D

Resource Manager API used by View System

Query Resources Resolve Theme/reference

Resources parsed by ADT

Page 18: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layoutlib challenges

Catching upsupport for all drawing modes

added gradients in 2.1a lot more to doback port to previous versions?

Keeping up with frameworks changesnew dependencies not part of layoutlibnew options that changes the interactivity

Page 19: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Rendering: layoutlib

Page 20: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Editor - Custom Views

Support with some limitationsConstructor, onDrawDon't access platform-only API

databasesensorstart thread, ...

View.isInEditMode

Page 21: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Editor

Current Public versionRenderingProperty View for attributesVery basic drag and drop (palette => layout)

Next versionNew canvas / interactivityFull drag and drop support

palette to layoutlayout to layout

base framework doneneed to work on visual cluetune interactivity

Developed in parallel with current version

Page 22: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Editor

Demo

Page 23: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Layout Editor

Longer term:new palettenew properties panenew resource selectorlayout-opt integration

Incremental changes directly in each ADT release.

Page 24: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Testing

android.jar has no codeCannot run tests on the desktop JVM

Android Instrumentation Framework

Runs JUnit tests on the deviceBasic command line: adb shell am instrument ...Text output

Integration into Eclipse

Page 25: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Running JUnit Tests

Page 26: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Running JUnit Tests

Demo

Page 27: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Profiling

TraceViewStandalone Tool (SWT) to see traces

hprof filesNon standard, but converter available

Both now controlled through DDMS and integrated in ADT.

Page 28: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Profiling Layout

HierarchyViewerConnect to device to get runtime layout.Display layout tree.Pixel perfect display, loupe.

Originally wrote in Swing.

New version being rewritten in SWT with planned integration in Eclipse as a plug-in.

Page 29: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

The Future is open

SDK Tools, rev 7 / ADT 0.9.8developed in the open.No internal changes (mirror only).Builds coming from the tools_r7 branch (announced on android-contrib).

SDK Tools, rev 8 / ADT ?.?.? development ongoing in the open in master branch.

Page 30: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

External contributions

Already accepting contributions, butThey come out of nowhere.They don't follow style.We don't know about the feature before the full patch is uploaded.

What needs to happen?publish roadmap / todo list.publish clear guidelines on contributing to the tools.use the external bug tracker exclusively.use android-contrib for all discussions.

Page 31: Android Tools for Eclipsewiki.eclipse.org/images/3/32/Android_Tools_Eclipse... · 2010-08-30 · SDK Tools, rev 7 / ADT 0.9.8 developed in the open. No internal changes (mirror only)

Useful Links

http://developer.android.comSDK / ADT downloadDev Guide, API referenceandroid-developers mailing listhttp://stackoverflow.com/

http://source.android.com

Android source codeDev Tools source codeandroid-contrib mailing list.