<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Novoda &#187; Android</title>
	<atom:link href="http://novoda.com/tag/android/feed/" rel="self" type="application/rss+xml" />
	<link>http://novoda.com</link>
	<description>Android mobile development and consultancy</description>
	<lastBuildDate>Wed, 05 Oct 2011 11:15:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Android continuous integration &#8211; Android Maven plugin</title>
		<link>http://novoda.com/2010/08/13/android-continuous-integration-android-maven-plugin/</link>
		<comments>http://novoda.com/2010/08/13/android-continuous-integration-android-maven-plugin/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 11:02:07 +0000</pubDate>
		<dc:creator>Kamil Olesiejuk</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[ci]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://novoda.com/?p=414</guid>
		<description><![CDATA[Continuous feedback on how our changes affect the current code allow us to confidently add  functionality. Documentation around testing on the Android platform continuous or otherwise is scarce so here we explain how to continuously compile your Android project’s tests in a central area for the benefit of the whole team and it’s clients.
The [...]]]></description>
			<content:encoded><![CDATA[<p>Continuous feedback on how our changes affect the current code allow us to confidently add  functionality. Documentation around testing on the Android platform continuous or otherwise is scarce so here we explain how to continuously compile your Android project’s tests in a central area for the benefit of the whole team and it’s clients.</p>
<p>The main components of our continuous integration system are:</p>
<div>
<ul>
<li><a href="http://maven.apache.org/">Maven</a></li>
<li><a href="http://hudson-ci.org/">Hudson</a></li>
<li><a href="http://developer.android.com/sdk/index.html">Android SDK</a></li>
<li><a href="http://code.google.com/p/maven-android-plugin/">Android Maven plugin</a></li>
<li><a href="http://wiki.hudson-ci.org/display/HUDSON/Android+Emulator+Plugin">Android Hudson plugin</a></li>
<li><a href="http://www.github.com/novoda">Github</a></li>
</ul>
</div>
<p>Here we wish to share and  document our set up and explore some capabilities of the android maven plugin. If you are brand new to it you may wish to first check out <a href="http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html">Maven in 5 minutes</a> and maven-android-plugin’s useful <a href="http://code.google.com/p/maven-android-plugin/wiki/GettingStarted">Getting Started </a> guide.</p>
<p>Android maven plugin helps us with the following android deployment tasks:</p>
<div>
<ul>
<li>Building your App</li>
<li>Running Behaviour / Unit Tests</li>
<li>Running Instrumentations</li>
<li>Setting up your test environment</li>
<li>Signing your release</li>
<li>Optimization of .apk files via zipalign</li>
</ul>
</div>
<p>We want to show you a real example of an application built with the help of the maven-android-plugin. It&#8217;s an Avatar Creator app for <a href="http://www.weeworld.com/">WeeWorld</a>.</p>
<p><a href="http://www.weeworld.com/"><img src="http://novoda.com/wp-content/uploads/2010/08/splash_screen.png" alt="WeeMee"/></a><a href="http://novoda.com/wp-content/uploads/2010/08/weeworldQR.png"><img width="200" height="200" src="http://novoda.com/wp-content/uploads/2010/08/weeworldQR.png" alt="WeeWorld"/></a></p>
<p>The app is now on the market, so go ahead and check it out! (0.99$)</p>
<p>If you&#8217;re quite familiar with maven and the android plugin, you might want to jump straight to the Real Life Example at the end of this post and check out the full configuration.</p>
<h3 name="build">
<p>Building your App</p>
</h3>
<p>To buid an apk, your app first needs to cite a version of android platform as a build path dependency in your application&#8217;s pom file (as provided scope). More on <a href="http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html">dependency scope</a>.</p>
<pre class="sh_xml">
&lt;dependency&gt;
&nbsp;&nbsp;&lt;groupId&gt;com.google.android&lt;/groupId&gt;
&nbsp;&nbsp;&lt;artifactId&gt;android&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;version&gt;2.2.1&lt;/version&gt;
&nbsp;&nbsp;&lt;scope&gt;provided&lt;/scope&gt;
&nbsp;&nbsp;&lt;type&gt;jar&lt;/type&gt; &lt;!-- optional --&gt;
&lt;/dependency&gt;
&lt;!--Currently valid values: 1.5_r3,1.6_r2,2.0_r1,2.0.1_r1,2.1_r1,2.2.1--&gt;
&lt;!--Those packages are on the maven central repository--&gt;
</pre>
<p></br></p>
<p>The project must then reference the maven android plugin within the project’s pom along with the android API level targeted, here we cite version 2.2 (api level 8 )</p>
<pre class="sh_xml">
&lt;plugin&gt;
&nbsp;&nbsp;&lt;groupId&gt;com.jayway.maven.plugins.android.generation2&lt;/groupId&gt;
&nbsp;&nbsp;&lt;artifactId&gt;maven-android-plugin&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;configuration&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;sdk&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;platform&gt;8&lt;/platform&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/sdk&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;deleteConflictingFiles&gt;true&lt;/deleteConflictingFiles&gt;
&nbsp;&nbsp;&lt;/configuration&gt;
&nbsp;&nbsp;&lt;extensions&gt;true&lt;/extensions&gt;
&lt;/plugin&gt;
</pre>
<p></br></p>
<p>Reference a java compiler version, since the default source and target values are 1.3 and 1.1 respectively, and android uses annotations conforming to java 5</p>
<pre class="sh_xml">
&lt;plugin&gt;
&nbsp;&nbsp;&lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;configuration&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;source&gt;1.5&lt;/source&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;target&gt;1.5&lt;/target&gt;
&nbsp;&nbsp;&lt;/configuration&gt;
&lt;/plugin&gt;
</pre>
<p></br></p>
<p>If your project uses Any android platform plugins for instance Google maps, additional dependencies will also require referencing in the project’s pom:</p>
<pre class="sh_xml">
&lt;dependency&gt;
&nbsp;&nbsp;&lt;groupId&gt;com.google.android.maps&lt;/groupId&gt;
&nbsp;&nbsp;&lt;artifactId&gt;maps&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;version&gt;8_r1&lt;/version&gt;
&nbsp;&nbsp;&lt;type&gt;jar&lt;/type&gt;
&lt;/dependency&gt;
&lt;!-- Current versions:  3, 4_r2, 7_r1, 8_r1 --&gt;
&lt;!-- NOTE: those are the ones defined by goole and are  NOT in the maven
central repository and need to be installed manually with:
mvn install:install-file wih proper parepeters as decribed here:

http://maven.apache.org/plugins/maven-install-plugin/usage.html

e.g. mvn install:install-file
-Dfile=$ANDROID_HOME/add-ons/addon_google_apis_google_inc_8/libs/maps.jar
-DgroupId=com.google.android.maps -DartifactId=maps -Dversion=8_r1
-Dpackaging=jar --&gt;
</pre>
<p></br></p>
<p>Additionally one should remember to specify the source directory if the folder structure does not follow the default maven structure:</p>
<pre class="sh_xml">
&lt;sourceDirectory&gt;${project.basedir}/src&lt;/sourceDirectory&gt;
</pre>
<p></br></p>
<p>At the same time remember NOT to specify the resource directory, as maven-android-plugin handles Android-specific resources on its own, and we don&#8217;t wnt duplicates.</p>
<p>This will already get your project building, but there’s much more that maven can do for You. Let’s look at some of that now.</p>
<h3 name="instrument1">
<p>Testing your App with an Instrumentation</p>
</h3>
<p>You most hopefully have an accompanying instrumentation test instrumentation project for your Android application and maven can build and run these against your previously compiled project. Maven can build the test project, deploy both the app and the test, and run the instrumentation on an attached device or an emulator.</p>
<p>Within the instrumentation test project it will need the following dependency:</p>
<pre class="sh_xml">
&lt;dependency&gt;
&nbsp;&nbsp; &lt;groupId&gt;com.google.android&lt;/groupId&gt;
&nbsp;&nbsp;&lt;artifactId&gt;android-test&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;version&gt;2.2.1&lt;/version&gt;
&lt;/dependency&gt;
&lt;!-- Allowed values same as for android package --&gt;
 </pre>
<p> </br></p>
<p>If it depends upon the source code of the application which it tests:</p>
<pre class="sh_xml">
&lt;dependency&gt;
&nbsp;&nbsp;&lt;!-- optional: compile time dependency, in this case so that we can --&gt;
&nbsp;&nbsp;&lt;!-- read from the R.java for example. --&gt;
&nbsp;&nbsp;&lt;groupId&gt;my.app.group&lt;/groupId&gt;
&nbsp;&nbsp;&lt;artifactId&gt;myapp&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;version&gt;${project.version}&lt;/version&gt;
&nbsp;&nbsp;&lt;scope&gt;compile&lt;/scope&gt;
&nbsp;&nbsp;&lt;type&gt;jar&lt;/type&gt;
&lt;/dependency&gt;
</pre>
<p></br></p>
<p>Instrumentations are run through a series of interactions within a pseudo environment so you will need to specify the Device/AVD(Android virtual Device) upon which you wish to run tests:</p>
<pre class="sh_xml">&lt;groupId&gt;com.jayway.maven.plugins.android.generation2&lt;/groupId&gt;
&lt;artifactId&gt;maven-android-plugin&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;configuration&gt;
&nbsp;&nbsp;&lt;emulator&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;avd&gt;22&lt;/avd&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- name of the avd to deploy to and run the instrumentation on --&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;wait&gt;150000&lt;/wait&gt; &lt;!-- wait time for the emulator to start --&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;options&gt;-partition-size 128 -wipe-data&lt;/options&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- additional options to run the emulator with--&gt;
&nbsp;&nbsp;&lt;/emulator&gt;
&nbsp;&nbsp;&lt;undeployBeforeDeploy&gt;true&lt;/undeployBeforeDeploy&gt;
&lt;/configuration&gt;
</pre>
<p></br></p>
<p>Devices to deploy to can be specified by a serial number but generic “usb” and “emulator” values are also valid. More detailed documentation can be found <a href="http://maven-android-plugin-m2site.googlecode.com/svn/emulator-start-mojo.html">here</a>.</p>
<h3>
<p>Instrumentation environment</p>
</h3>
<p>Instrumentations can interact at various hook in points during the a devices connected lifecycle. Execution and binding it to a maven lifecycle phase is specified like:</p>
<pre class="sh_xml">
&lt;executions&gt;
&nbsp;&nbsp;&lt;!-- android plugin execution that starts the emulator. --&gt;
&nbsp;&nbsp;&lt;execution&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;startemulator&lt;/id&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;!-- bound to the 'initialize' phase --&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;phase&gt;initialize&lt;/phase&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;goals&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goal&gt;emulator-start&lt;/goal&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/goals&gt;
&nbsp;&nbsp;&lt;/execution&gt;
&lt;/executions&gt;
</pre>
<p></br></p>
<p>The configuration above binds the android plugin’s ‘emulator-start’ goal to the ‘initialize’ phase of the maven lifecycle. This is the equivalent of  manually executing mvn android:emulator-start, from a directory with a pom containing valid configuration for it. Stopping the emulator does not require this and can be run anywhere and anytime with mvn android:emulator-stop.</p>
<p>If we would like to stop the emulator after running the instrumentation tests, we would add the following execution:</p>
<pre class="sh_xml">
&lt;execution&gt;
&nbsp;&nbsp;&lt;!-- android plugin execution that starts the emulator. --&gt;
&nbsp;&nbsp;&lt;id&gt;stopemulator&lt;/id&gt;
&nbsp;&nbsp;&lt;!-- bound to the 'install' phase --&gt;
&nbsp;&nbsp;&lt;phase&gt;install&lt;/phase&gt;
&nbsp;&nbsp;&lt;goals&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;goal&gt;emulator-stop&lt;/goal&gt;
&nbsp;&nbsp;&lt;/goals&gt;
&lt;execution&gt;
</pre>
<p></br></br></p>
<h3>
<p>Signing your release</p>
</h3>
<p>By default, the plugin will sign the apk with the debug key. This can be disabled, producing an unsigned apk.</p>
<pre class="sh_xml">
&lt;configuration&gt;
&nbsp;&nbsp;&lt;sign&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;debug&gt;false&lt;/debug&gt;
&nbsp;&nbsp;&lt;/sign&gt;
&lt;configuration&gt;
</pre>
<p></br></p>
<p>To sign and apk with your key, we will need to use the maven-jarsigner-plugin. Although it’s a different plugin, since it’s very relevant here’s how we did it:</p>
<pre class="sh_xml">
&lt;plugin&gt;
&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
&nbsp;&nbsp;&lt;artifactId&gt;maven-jarsigner-plugin&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;version&gt;1.2&lt;/version&gt;
&nbsp;&nbsp;&lt;executions&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;execution&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;signing&lt;/id&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goals&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goal&gt;sign&lt;/goal&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/goals&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phase&gt;package&lt;/phase&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;inherited&gt;true&lt;/inherited&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;configuration&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;includes&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;include&gt;
${project.build.directory}/target/${project.artifactId}-${project.version}.apk
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/include&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/includes&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;keystore&gt;${keystore.location}&lt;/keystore&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;storepass&gt;${keystore.password}&lt;/storepass&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;keypass&gt;${keystore.keypass}&lt;/keypass&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;alias&gt;${keystore.alias}&lt;/alias&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;verbose&gt;true&lt;/verbose&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/configuration&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/execution&gt;
&nbsp;&nbsp;&lt;/executions&gt;
&lt;/plugin&gt;
</pre>
<p></br></p>
<p>Configures the jarsigner plugin with the files (input, output), and the keystore details. Binds the plugin’s ‘sign’ goal to the ‘package’ phase of the maven lifecycle.</p>
<p>The ${kestore.*} variables above come from the settings.xml file, and look:</p>
<pre class="sh_xml">
&lt;properties&gt;
&nbsp;&nbsp;&lt;keystore.location&gt;path/to/test.keystore&lt;/keystore.location&gt;
&nbsp;&nbsp;&lt;keystore.password&gt;teststorepass&lt;/keystore.password&gt;
&nbsp;&nbsp;&lt;keystore.keypass&gt;testpass&lt;/keystore.keypass&gt;
&nbsp;&nbsp;&lt;keystore.alias&gt;testkey&lt;/keystore.alias&gt;
&lt;/properties&gt;
</pre>
<p></br></br></p>
<h3>Optimization .apk files via zipalign.</h3>
<p>The last stage of a deployment, but also very important is zipaligning the apk after it’s been signed. This aligns archived data in such a way that upon runtime memory can more efficiently store the related data. After this your apk is ready to go to the market. our configuration:</p>
<pre class="sh_xml">&lt;plugin&gt;
&nbsp;&nbsp;&lt;groupId&gt;com.jayway.maven.plugins.android.generation2&lt;/groupId&gt;
&nbsp;&nbsp;&lt;artifactId&gt;maven-android-plugin&lt;/artifactId&gt;
&nbsp;&nbsp;&lt;configuration&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;zipalign&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;verbose&gt;true&lt;/verbose&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;skip&gt;false&lt;/skip&gt;&lt;!-- defaults to true --&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;inputApk&gt;
&nbsp;&nbsp;&nbsp;&nbsp;${project.build.directory}/${project.artifactId}-${project.version}.apk
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/inputApk&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;outputApk&gt;
&nbsp;&nbsp;&nbsp;&nbsp;${project.build.directory}/${project.artifactId}_v${project.version}.apk
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/outputApk&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/zipalign&gt;
&nbsp;&nbsp;&lt;/configuration&gt;
&nbsp;&nbsp;&lt;executions&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;execution&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;id&gt;zipalign&lt;/id&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;phase&gt;verify&lt;/phase&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goals&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;goal&gt;zipalign&lt;/goal&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/goals&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/execution&gt;
&nbsp;&nbsp;&lt;/executions&gt;
&lt;/plugin&gt;
</pre>
<p></br></p>
<p>Configures the plugin for the zipalign goal and binds that goal the the ‘verify’ phase of the maven lifecycle.</p>
<h3>
<p>Real Life Example</p>
</h3>
<p>The above describes taking full control over how maven-android-plugin builds and tests your android application. In reality though, one wouldn’t really use all of the above settings in one pom. Here&#8217;s an example of a fully-configured real-life project using ALL of the above:</p>
<div>
weeworld<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8212; WeeWorld<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8212; <a href="http://gist.github.com/521029#file_pom_app.xml">pom.xml</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8212; WeeWorldTest<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8212; <a href="http://gist.github.com/521029#file_pom_test.xml">pom.xml</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&#8212; <a href="http://gist.github.com/521029#file_pom_parent.xml">pom.xml</a>
</div>
<p></br></br></p>
<p>The project makes use of a parent-child structure and maven profiles to manage both App and Instrumentation projects and handle different cases of builds. Feel free to have a look and se how we&#8217;ve done it. For more guides and tips about android development and continuous integrations check back to our blog &#8211; we&#8217;ll have something here soon!</p>
<p>Topics to expect:</p>
<div>
<ul>
<li>Project relashionships and inheritance</li>
<li>Maven profiles</li>
<li>Hudson configuration</li>
<li>Automatic instrumentation testing on many different AVD&#8217;s using Hudson Android Plugin</li>
</ul>
</div>
<p></br></br></p>
<p><H5>
<p>References:</p>
</h5>
<p><a href="http://maven-android-plugin-m2site.googlecode.com/svn/plugin-info.html">maven-android-plugin site</a>, the <a href="http://code.google.com/p/maven-android-plugin/">Getting Started</a> guide and their <a href="http://code.google.com/p/maven-android-plugin/w/list">wiki page</a>.<br />
<a href="http://maven.apache.org/plugins/maven-install-plugin/usage.html">Installing a specific file into a local maven repository</a><br />
<a href="http://code.google.com/p/maven-android-plugin/wiki/SigningAPKWithMavenJarsigner">Signing apk files with maven</a><br />
<a href="http://www.simpligility.com/2010/06/maven-android-plugin-with-zipalign-and-improved-verification/">Zipalign apk files with maven-android-plugin</a></p>
<h5>
<p>Other relevant and important resources:</p>
</h5>
<p><a href="http://www.sonatype.com/books/mvnref-book/reference/public-book.html">Maven: The complete reference book</a> and it&#8217;s <a href="http://www.sonatype.com/books/mvnref-book/reference/android-dev.html">Android Chapter</a></p>
<script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script><script type="text/javascript" src="/wp-content/plugins/shjs-syntax-hiliter/shjs/lang/sh_xml.js"></script>


Share this post:


	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;partner=sociable" title="Print"><img src="http://novoda.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="mailto:?subject=Android%20continuous%20integration%20-%20Android%20Maven%20plugin&amp;body=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F" title="email"><img src="http://novoda.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;title=Android%20continuous%20integration%20-%20Android%20Maven%20plugin&amp;bodytext=Continuous%20feedback%20on%20how%20our%20changes%20affect%20the%20current%20code%20allow%20us%20to%20confidently%20add%20%20functionality.%20Documentation%20around%20testing%20on%20the%20Android%20platform%20continuous%20or%20otherwise%20is%20scarce%20so%20here%20we%20explain%20how%20to%20continuously%20compile%20your%20Andr" title="Digg"><img src="http://novoda.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;title=Android%20continuous%20integration%20-%20Android%20Maven%20plugin&amp;notes=Continuous%20feedback%20on%20how%20our%20changes%20affect%20the%20current%20code%20allow%20us%20to%20confidently%20add%20%20functionality.%20Documentation%20around%20testing%20on%20the%20Android%20platform%20continuous%20or%20otherwise%20is%20scarce%20so%20here%20we%20explain%20how%20to%20continuously%20compile%20your%20Andr" title="del.icio.us"><img src="http://novoda.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;title=Android%20continuous%20integration%20-%20Android%20Maven%20plugin" title="Reddit"><img src="http://novoda.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Android%20continuous%20integration%20-%20Android%20Maven%20plugin%20-%20http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F" title="Twitter"><img src="http://novoda.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;title=Android%20continuous%20integration%20-%20Android%20Maven%20plugin&amp;annotation=Continuous%20feedback%20on%20how%20our%20changes%20affect%20the%20current%20code%20allow%20us%20to%20confidently%20add%20%20functionality.%20Documentation%20around%20testing%20on%20the%20Android%20platform%20continuous%20or%20otherwise%20is%20scarce%20so%20here%20we%20explain%20how%20to%20continuously%20compile%20your%20Andr" title="Google Bookmarks"><img src="http://novoda.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;t=Android%20continuous%20integration%20-%20Android%20Maven%20plugin" title="Facebook"><img src="http://novoda.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;t=Android%20continuous%20integration%20-%20Android%20Maven%20plugin" title="HackerNews"><img src="http://novoda.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F" title="Technorati"><img src="http://novoda.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Fnovoda.com%2F2010%2F08%2F13%2Fandroid-continuous-integration-android-maven-plugin%2F&amp;partner=sociable" title="PDF"><img src="http://novoda.com/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://novoda.com/2010/08/13/android-continuous-integration-android-maven-plugin/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Observations from Google IO 2009</title>
		<link>http://novoda.com/2009/06/09/observations-from-google-io-2009/</link>
		<comments>http://novoda.com/2009/06/09/observations-from-google-io-2009/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 10:05:21 +0000</pubDate>
		<dc:creator>Kevin McDonagh</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Conference & Events]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[JISC]]></category>

		<guid isPermaLink="false">http://www.novoda.com/blog/?p=115</guid>
		<description><![CDATA[Google IO 2009 was held in sunny San Francisco and Novoda&#8217;s presence acted as a technical bridge for the Royal Veterinary College, London Knowledge Lab and the wider Bloomsbury Colleges as they further explored Google&#8217;s Android platform as a potential tool for the collection of medical &#38; veterinary data. As I was acting on behalf [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_122" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-122" title="googleio" src="http://novoda.co.uk/wp-content/uploads/2009/06/googleio.jpg" alt="" width="450" height="359" /><p class="wp-caption-text"> </p></div>
<p style="margin-top: 15px;">Google IO 2009 was held in sunny San Francisco and Novoda&#8217;s presence acted as a technical bridge for the <a title="Royal vetinary college" href="http://www.rvc.ac.uk/" target="_blank">Royal Veterinary College</a>, <a title="London Knowledge Lab" href="http://www.lkl.ac.uk/cms/" target="_blank">London Knowledge Lab</a> and the wider <a title="Bloomsbury Colleges" href="http://www.bloomsbury.ac.uk/" target="_blank">Bloomsbury Colleges</a> as they further explored Google&#8217;s Android platform as a potential tool for the collection of medical &amp; veterinary data. As I was acting on behalf of Academia the trip was very kindly funded by <a title="JISC" href="http://www.jisc.ac.uk/">JISC</a>, so a big thank you to them.</p>
<p>Google event&#8217;s are renowned for merging developers&#8217; unique personalities with the approachable yet cutting edge image of Google technology. There were <a title="Bean bags" href="http://www.flickr.com/photos/stephaniefalla/3573899725/">brightly coloured bean bags</a>, <a title="QRcode scavenger hunt" href="http://www.flickr.com/photos/phpprincess/3574868263/">qr-code scavenger hunts</a>, make shift Google street view <a title="Holodeck" href="http://www.flickr.com/photos/niallkennedy/3571464961/" target="_blank">holo-chambers</a>, <a title="arcade cabinets" href="http://www.flickr.com/photos/16447282@N00/3572456520/" target="_blank">arcade cabinets</a> and <a title="robot wars" href="http://www.flickr.com/photos/mtantow/3574415005/">robot wars</a> but they were all in aid of furthering the interaction of developers and getting them conversing on areas of tech. As if the fact that all the attendees received free <a href="http://shop.vodafone.co.uk/shop/mobile-phone/htc-magic?WT.srch=1">G2 HTC magic phones</a> was not reason enough for conversation.</p>
<h2 style="margin: 0 0 20px 0;">Talks</h2>
<div id="attachment_135" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-135" title="chris" src="http://novoda.co.uk/wp-content/uploads/2009/06/chris.jpg" alt="" width="450" height="337" /><p class="wp-caption-text"> </p></div>
<p style="margin-top: 15px;">The talks were generally of a very high standard with a whole section dedicated to each Google interest  including mobile (Android). Outside of each speaking area was an alcove where Google advocates were freely available for questioning on the intricacies of each specific technology. Each recorded session lasts about an hour so specifically, I recommend watching the following:</p>
<p><a title="Writing Real-Time Games for Android" href="http://code.google.com/events/io/sessions/WritingRealTimeGamesAndroid.html" target="_self">Writing Real-Time Games for Android w/ Chris Pruett</a> is well delivered with captivating game development content. Chris considers the resource usage on Android from the perspective of a developer used to a similarly constrained C++ mobile environment.</p>
<p><a title="Android Media Framework" href="http://code.google.com/events/io/sessions/MasteringAndroidMediaFramework.html">Android media framework w/ David Sparks</a> contains good graphical representations of media call life cycles from the native system upwards and addresses the techniques while dealing with all forms of media.</p>
<p><a title="Coding for Life -- Battery Life, That Is" href="http://code.google.com/events/io/sessions/CodingLifeBatteryLife.html">Coding for Life &#8212; battery life, that is w/ Jeffrey Sharkey </a> offers a primer on how to be mindful of your applications specific actions how they are affecting a device&#8217;s power consumption.</p>
<p><a title="Supporting Multiple=" href="http://code.google.com/events/io/sessions/SupportingMultipleDevicesBinary.html">Supporting Multiple Devices with One Binary w/ Joe Onorato &amp; Romain guy</a> addresses the problem of standarising the presentation of a UI of multiple &#8216;densities&#8217; on different devices.</p>
<p>Although not based on Android, another talk which is well worth mentioning was the second day&#8217;s big topic of conversation <a title="Google Wave" href="http://www.youtube.com/watch?v=v_UyVmITiYQ">&#8216;Google wave&#8217;</a> which it has to be said is an exciting convergence in persisted communications.</p>
<h2>Attendees &amp; Exhibitors</h2>
<p>It was difficult choosing to not attend talks and venturing away from the Android alcove but there were some worthwhile exhibitors.</p>
<ul class="wp-caption alignleft" style="list-style-type: none; list-style-image: none; list-style-position: outside; width: 125px;">
<li><img class="size-full wp-image-123" title="spotify_logo" src="http://novoda.co.uk/wp-content/uploads/2009/06/spotify_logo.png" alt=" " width="115" height="115" /></li>
<li><img class="alignnone size-full wp-image-124" title="ea" src="http://novoda.co.uk/wp-content/uploads/2009/06/ea.png" alt="" width="115" height="115" /></li>
<li><img class="alignnone size-medium wp-image-125" title="catalista" src="http://novoda.co.uk/wp-content/uploads/2009/06/catalista.png" alt="" width="115" height="58" /></li>
<li><img class="alignnone size-medium wp-image-126" title="illusion" src="http://novoda.co.uk/wp-content/uploads/2009/06/illusion.png" alt="" width="115" height="37" /></li>
<li><a href="http://www.tubaloo.com"><img class="alignnone size-medium wp-image-128" title="tubaloo" src="http://novoda.co.uk/wp-content/uploads/2009/06/tubaloo.png" alt="" width="115" height="66" /></a></li>
</ul>
<p>EA consistently sets a high technical standard on all platforms and the same can be said about their android offerings, <em>Sim city, The Sims, Tetris</em> and <em>Monopoly</em>. Close by them was the extremely nice <a title="Spotiy android application" href="http://www.youtube.com/watch?v=7ALGPknOsiU" target="_blank">Spotify (premium content) app</a> which sports intuitive &amp; innovative UI design. Each of the bottom tabs can be slid upwards to reveal a more detailed selection of options within that tab&#8217;s context which is a nice touch on an already very usable app.</p>
<p>Mobile media company <span style="background-color: #ffffff;"><a title="1Cast" href="http://www.1cast.com/" target="_blank">1Cast</a> were showing off thier app&#8217;s streaming capabilities </span>and the fact that it can search through a huge catalogue of their partners premium content. The very snappy responsiveness signals a mobile media viewing experience which is slowly entering the big leagues.</p>
<p>Swedish Game development company <span style="background-color: #ffffff;"><a title="Illusion labs" href="http://www.illusionlabs.com/" target="_blank">Illusion Labs</a> </span><span style="background-color: #ffffff;">had their games on show including my personal fave &#8216;</span>Labyrinth&#8217;<span style="background-color: #ffffff;">. Labyrinth works the same as the traditional wooden games but the real charm of this particular port is that it provides such pleasant tactile feedback whenever your metal ball hits against the sides of the wooden box. The subtle feedback makes this an exemplar experience for tactile interaction within mobile games.</span></p>
<p><a title="Catalista" href="http://www.mommiworks.com/main.html" target="_blank">Catalista</a> also had a very nice location aware application which allows user to find nearby volunteering opportunities.</p>
<p>Some guys from <a title="Tubaloo" href="www.tubaloo.com" target="_blank">Tubaloo</a> demonstrated a personalised VoIP build of android which they are planning to soon offer the Latin American market. The threat of VoIP to traditional phone services has been looming on the horizon and we&#8217;ve recently seen some movement from Skype onto cellphones but could this signal the start of competition in this market?</p>
<p>Also worth a notable mention even though they weren&#8217;t technically exhibiting was the Czech Republic based company <a title="Inmite" href="http://www.inmite.eu/web/en/projects" target="_blank">Inmite</a> who impressed me with both their development knowledge and their popular <a title="Lokola" href="http://www.lokola.cz/" target="_blank">&#8216;Lokola&#8217;</a> application which finds searches through the online portal&#8217;s directory of resources relative to the device&#8217;s global positioning.</p>
<h2 style="margin: 0 0 20px 0;">Post Google IO</h2>
<div id="attachment_127" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-127" title="lounge" src="http://novoda.co.uk/wp-content/uploads/2009/06/lounge.jpg" alt="" width="450" height="268" /><p class="wp-caption-text"> </p></div>
<p style="margin-top: 15px;">Eager to network with universities, I was surprised to speak with very few groups doing exploratory research on Google Android especially since I encountered such wide acknowledgment of it&#8217;s potential in this area. There were the notable exception of <a href="http://www.sfsu.edu/">San Francisco State University</a> who are just beginning to look into the possibilities of mobile applications within their current work in blood &amp; disease analysis. Hopefully we can soon establish some talks between them and RVC to exchange experiences. If you yourself know of universities working on with the Android platform then <a title="Contact us" href="http://www.novoda.com/blog/?page_id=20" target="_self">please do contact us</a>!</p>
<p>I was lucky enough to spend some time with the developers from the well intentioned <a title="ODK project" href="http://code.google.com/p/open-data-kit/" target="_blank">ODK project</a> who are developing free tools to aid the collection of standard data by providing an easy click through forms interface. They wished to emphasize their eagerness to receive participation and feedback which I hopefully helped them with by suggesting some commercial and academic use cases.</p>
<p>Some of  the world&#8217;s largest media networks for games, music and television were at Google IO to show off their polished offerings to a standard which has until recently has been reserved for the IPhone. This is encouraging because as industry draws attention to the platform, media companies will invest in the relevant training and as a by product we should hopefully see an explosion of free and organisational offerings. <a title="ADC2" href="http://code.google.com/android/adc/">ADC2</a> itself would usually have had entrepreneurial developers inquiring into Google&#8217;s offered cash prize but team this with the fact they have given free devices to their most loyal developer audience ensures that there will soon be fresh activity hitting the Android market.</p>
<blockquote><p>Android SDK at time of writing was: <strong>1.5_r2</strong></p></blockquote>
<h3>Citations &amp; Research</h3>
<ul>
<li><cite><a href="http://www.flickr.com/photos/cvander/3572630723/">Google IO logo sourced from cvander&#8217;s Flickr account</a></cite></li>
</ul>



Share this post:


	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;partner=sociable" title="Print"><img src="http://novoda.com/wp-content/plugins/sociable/images/printfriendly.png" title="Print" alt="Print" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="mailto:?subject=Observations%20from%20Google%20IO%202009&amp;body=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F" title="email"><img src="http://novoda.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;title=Observations%20from%20Google%20IO%202009&amp;bodytext=%0D%0AGoogle%20IO%202009%20was%20held%20in%20sunny%20San%20Francisco%20and%20Novoda%27s%20presence%20acted%20as%20a%20technical%20bridge%20for%20the%20Royal%20Veterinary%20College%2C%20London%20Knowledge%20Lab%20and%20the%20wider%20Bloomsbury%20Colleges%20as%20they%20further%20explored%20Google%27s%20Android%20platform%20as%20a%20potent" title="Digg"><img src="http://novoda.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;title=Observations%20from%20Google%20IO%202009&amp;notes=%0D%0AGoogle%20IO%202009%20was%20held%20in%20sunny%20San%20Francisco%20and%20Novoda%27s%20presence%20acted%20as%20a%20technical%20bridge%20for%20the%20Royal%20Veterinary%20College%2C%20London%20Knowledge%20Lab%20and%20the%20wider%20Bloomsbury%20Colleges%20as%20they%20further%20explored%20Google%27s%20Android%20platform%20as%20a%20potent" title="del.icio.us"><img src="http://novoda.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;title=Observations%20from%20Google%20IO%202009" title="Reddit"><img src="http://novoda.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://twitter.com/home?status=Observations%20from%20Google%20IO%202009%20-%20http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F" title="Twitter"><img src="http://novoda.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;title=Observations%20from%20Google%20IO%202009&amp;annotation=%0D%0AGoogle%20IO%202009%20was%20held%20in%20sunny%20San%20Francisco%20and%20Novoda%27s%20presence%20acted%20as%20a%20technical%20bridge%20for%20the%20Royal%20Veterinary%20College%2C%20London%20Knowledge%20Lab%20and%20the%20wider%20Bloomsbury%20Colleges%20as%20they%20further%20explored%20Google%27s%20Android%20platform%20as%20a%20potent" title="Google Bookmarks"><img src="http://novoda.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;t=Observations%20from%20Google%20IO%202009" title="Facebook"><img src="http://novoda.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://news.ycombinator.com/submitlink?u=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;t=Observations%20from%20Google%20IO%202009" title="HackerNews"><img src="http://novoda.com/wp-content/plugins/sociable/images/hackernews.png" title="HackerNews" alt="HackerNews" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F" title="Technorati"><img src="http://novoda.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.printfriendly.com/print?url=http%3A%2F%2Fnovoda.com%2F2009%2F06%2F09%2Fobservations-from-google-io-2009%2F&amp;partner=sociable" title="PDF"><img src="http://novoda.com/wp-content/plugins/sociable/images/pdf.png" title="PDF" alt="PDF" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://novoda.com/2009/06/09/observations-from-google-io-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

