<?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>Opgenorth.NET &#187; Android</title>
	<atom:link href="http://www.opgenorth.net/category/programming/android-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.opgenorth.net</link>
	<description>Mindless missives of a .NET developer from the North</description>
	<lastBuildDate>Sat, 28 Aug 2010 15:58:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>New Version of YEG Buildings up</title>
		<link>http://www.opgenorth.net/2010/08/28/new-version-of-yeg-buildings-up/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=new-version-of-yeg-buildings-up</link>
		<comments>http://www.opgenorth.net/2010/08/28/new-version-of-yeg-buildings-up/#comments</comments>
		<pubDate>Sat, 28 Aug 2010 15:56:04 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/08/28/new-build-of-yeg-buildings-up/</guid>
		<description><![CDATA[Last night I pushed a new build of YEG Buildings out to the Android Market. The two changes with this one: Rather than showing the latitude/longitude of were you are, the application will try to translate that into a more human-friendly address.&#160; Note that the address might not be 100% accurate.&#160; It depends on how [...]]]></description>
			<content:encoded><![CDATA[<p>Last night I pushed a new build of <a href="http://www.androidzoom.com/android_applications/reference/yeg-buildings_icyx.html">YEG Buildings</a> out to the Android Market. The two changes with this one:</p>
<ul>
<li>Rather than showing the latitude/longitude of were you are, the application will try to translate that into a more human-friendly address.&#160; Note that the address might not be 100% accurate.&#160; It depends on how much accuracy the GPS has.</li>
<li>The application no longer uses Google Maps and a KML feed when show where all the historical buildings in Edmonton are.&#160; The map of Edmonton is now rendered locally, and all </li>
</ul>
<p>Just for fun, I also <a href="http://contest.apps4edmonton.ca/apps/21">submitted YEG Buildings</a> as part of the <a href="http://contest.apps4edmonton.ca/">Apps4Edmonton contest</a>.&#160; So, feel free to check out the contest page – there are a lot of neat applications there.&#160; Also feel free to vote mine up.&#160; <img src='http://www.opgenorth.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>If you are using or have used YEG Buildings, feel free to let me know your thoughts.&#160; If you find a bug, let me know.&#160; If you have a feature you’d like to see, I’d love to hear about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/08/28/new-version-of-yeg-buildings-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Version of YEG Buildings (formerly Historical Buildings)</title>
		<link>http://www.opgenorth.net/2010/08/26/new-version-of-yeg-buildings-formerly-historical-buildings/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=new-version-of-yeg-buildings-formerly-historical-buildings</link>
		<comments>http://www.opgenorth.net/2010/08/26/new-version-of-yeg-buildings-formerly-historical-buildings/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 23:34:00 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/08/26/new-version-of-yeg-buildings-formerly-historical-buildings/</guid>
		<description><![CDATA[After a few months of neglect, I put a new version of my Edmonton Historical Buildings application up on the Android Market.&#160; I’ve renamed it to just YEG Buildings, as I’d like to eventually include buildings that aren’t historical, but interesting in general for some reason.&#160; The previous version had a nasty bug that would [...]]]></description>
			<content:encoded><![CDATA[<p>After a few months of neglect, I put a new version of my Edmonton Historical Buildings application up on the Android Market.&#160; I’ve renamed it to just <a href="http://www.androidzoom.com/android_applications/reference/yeg-buildings_icyx.html">YEG Buildings</a>, as I’d like to eventually include buildings that aren’t historical, but interesting in general for some reason.&#160; The previous version had a nasty bug that would crash when you tried to view the location of a building on the map.&#160; Was one of those curious things where it worked in the emulator but not on a real device.&#160; I’ve tried it out on my HTC Dream running <a href="http://www.cyanogenmod.com/">Cyanogen 6.0 RC3</a> (this is Android 2.2), and it seemed to work.&#160; </p>
<p>I’ve also added a feature where you could see all the Historical Buildings from the <a href="http://data.edmonton.ca">City Of Edmonton’s Data Catalogue</a> at once in Google Maps.&#160; It’s a bit slow (mostly for reasons beyond my control at this point), but it basically works.</p>
<p>You can download it from the Android Market, or via this <a href="http://www.androidzoom.com/android_applications/reference/yeg-buildings_icyx_download.html">handy page</a> at <a href="http://www.androidzoom.com">AndroidZoom</a>.&#160; You’ll need Android 1.6 or higher.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/08/26/new-version-of-yeg-buildings-formerly-historical-buildings/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using IntelliJ for Android Development &#8211; the Sequel</title>
		<link>http://www.opgenorth.net/2010/08/24/using-intellij-for-android-development-the-sequel/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=using-intellij-for-android-development-the-sequel</link>
		<comments>http://www.opgenorth.net/2010/08/24/using-intellij-for-android-development-the-sequel/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 21:26:00 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/08/24/using-intellij-for-android-development-the-sequel/</guid>
		<description><![CDATA[A while ago, I posted a blog article about using IntelliJ for Android development.&#160; Given that was a year ago, and one version of IntelliJ later, I thought I would do a follow up post.&#160; Long story short (and to sound like a TV commercial):&#160; I liked IntelliJ IDEA 9 so much, I bought a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, I posted a blog article about <a href="http://www.opgenorth.net/2009/06/19/using-intellij-for-android-development-2/">using IntelliJ for Android development</a>.&#160; Given that was a year ago, and one version of IntelliJ later, I thought I would do a follow up post.&#160; Long story short (and to sound like a TV commercial):&#160; I liked IntelliJ IDEA 9 so much, I bought a license.</p>
<p>Since I blogged last year, the Android plug-in for IntelliJ has really matured.&#160; I guess the only draw back to it is that you only get the Android plug-in when you buy the Unlimited Edition of IntelliJ – it’s not in the Community Edition.&#160; Here are some general comments/thoughts/observations of mine:</p>
<ul>
<li>It’s cool to have IntelliSense in the XML files.&#160; One of the biggest failings of Android (perhaps Java in general?) is the painful lack of a surface designer for a user interface.&#160; <a href="http://www.droiddraw.org/">DroidDraw</a> is tolerable with enough <a href="http://www.malts.com/index.php/Gateway-en">scotch</a>.&#160; One could say say the same thing about the UI “designer” that comes with the <a href="http://developer.android.com/sdk/eclipse-adt.html">ADT</a>.&#160; So, much of the time I find myself just plugging away at the UI in XML.&#160; Sub-optimal, but I don’t have the resources to write a nice designer for the Android layout files, so I’ll just pour another double of Talisker and carry on.&#160; <img src='http://www.opgenorth.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>I like the fact that, as a Resharper junkie, IntelliJ seems very natural to me to use.&#160; The keyboard mappings are not 100% between IntelliJ and Resharper, but that is merely semantics. I find that within about 30 minutes or so I’ve recovered from the differences and that I don’t suffer to much of a penalty switching between the two.</li>
<li>I’m a bit more structured when it comes to deplopyment.&#160; I don’t like how IntelliJ wraps all the deployment magic for me.&#160; Don’t get me wrong – it’s handy as all hell for development and getting an APK on my phone real quick.&#160; For production level stuff though, I’m finding that Rake more than handles what I need done.</li>
</ul>
<p>Of course, with <a href="http://www.monodroid.net/">Monodroid</a> now in a closed beta and looming in the future, perhaps IntelliJ will be redundant to me?&#160; Can I actually just write my Android applications in C# and forget about Java? As <a href="http://www.monodroid.net/">Monodroid</a> is in a closed beta, I can’t really comment much about it at this point in time.&#160; I think I can say, without the <a href="www.go-mono.com">Mono</a> gods smiting me from above with hail, thunder, and lightening, that I’m cautiously optimistic that Monodroid will be appealing to those who want to target mobile devices.</p>
<p>So, over-all impression:&#160; </p>
<ul>
<li>I like IntelliJ better than Eclipse for Android development. </li>
<li>I’d say that IntelliJ is worth the money I spent on the unlimited license.&#160; </li>
</ul>
<p><em>This claim may not be valid in all states.&#160; It is also void where prohibited by law.&#160; There is a good chance that it may not apply in Quebec.&#160; This definitely does not include batteries.&#160; YMMV.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/08/24/using-intellij-for-android-development-the-sequel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android, MapView, and your Google apiKey: Part 2</title>
		<link>http://www.opgenorth.net/2010/08/09/android-mapview-and-your-google-apikey-part-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=android-mapview-and-your-google-apikey-part-2</link>
		<comments>http://www.opgenorth.net/2010/08/09/android-mapview-and-your-google-apikey-part-2/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 22:11:00 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=263</guid>
		<description><![CDATA[Just to follow up on my last post about embedding Google Maps into your Android application (this part is kind of anti-climatic). So, by now you’ve signed your application.  This is the “hardest” (i.e. busiest part) of the whole process.  The next part, getting your Goggle apiKey, is the easy part.  First you  need to [...]]]></description>
			<content:encoded><![CDATA[<p>Just to follow up on my <a href="http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/">last post</a> about embedding Google Maps into your Android application (this part is kind of anti-climatic).</p>
<p>So, by now you’ve signed your application.  This is the “hardest” (i.e. busiest part) of the whole process.  The next part, getting your Goggle apiKey, is the easy part.  First you  need to get the MD5 fingerprint of your keystore:</p>
<p>keytool -list -alias androiddebugkey -keystore &lt;path_to_debug_keystore&gt;.keystore -storepass android -keypass android</p>
<p>Once that is done, you and register for a <a href="http://code.google. com/android/maps-api-signup.html">Google Maps API key</a>.  You need a Google account, and have to agree to some terms of service legal mumbo-jumbo, but it’s pretty simple.  Once you click “Generate API Key”, you will get your key string.  You then simply add the Maps API key to your MapView in your application.  There are a couple of ways to do this, heres how you would do it if you were using the XML layout files:</p>
<p>Of course, after all this is done, the next trick is managing these keys.  You see, when you are working locally, your application is automatically signed using a debug key.  This is fine and dandy for most development.  However, when you deploy your application, you sign the application using your keystore that you created in <a href="http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/">Step 1</a>.  You may have a brief moment of clarity here and realize that the apiKey from your debug keystore and your deployment keystore are different.  I’ve got some ideas on how to deal with that that, but that will be for another day.</p>
<p><a href="http://code.google.com/android/add-ons/google-apis/mapkey.html">Full documentation</a> for all this can be found on the Android developer’s website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/08/09/android-mapview-and-your-google-apikey-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Induction Into the Android Army &#8211; the Aftermath</title>
		<link>http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=induction-into-the-android-army-the-aftermath</link>
		<comments>http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 23:27:10 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/</guid>
		<description><![CDATA[Thanks to all who attended my “Induction into the Android Army” talk this afternoon at the monthly Edmonton Java User’s Group meeting.&#160; I’d say it was a good turn out, especially when one considers that this is only the second monthly meeting for EJUG.&#160; It was a pretty basic talk, and didn’t dive to deeply [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to all who attended my “Induction into the Android Army” talk this afternoon at the monthly <a href="http://groups.google.com/group/ejug">Edmonton Java User’s Group</a> meeting.&#160; I’d say it was a good turn out, especially when one considers that this is only the second monthly meeting for EJUG.&#160; It was a pretty basic talk, and didn’t dive to deeply into the “fun” Android stuff.&#160; If anybody from EJUG wants a follow up presentation that’s a bit more in depth, give a shout out on the EJUG mailing list.&#160; If there is enough interest, I’d be happy to put something together.
<p>If you want to <a href="http://developer.android.com/resources/samples/NotePad/index.html">browse the code</a> and don’t want to download the Android SDK, you can do so at the Android website.&#160; Otherwise if you have downloaded the SDK,&#160; you can the samples/Notepad folder.&#160; For those who want the PowerPoint slide deck, please hang tight and I’ll get a link to that shortly.&#160; Basil already has a copy of it, and he’ll probably post it to the Google Group shortly as well.</p>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/06/GoogleAndroidarmy.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="Google-Android-army" border="0" alt="Google-Android-army" src="http://www.opgenorth.net/wp-content/uploads/2010/06/GoogleAndroidarmy_thumb.jpg" width="244" height="152" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/06/15/induction-into-the-android-army-the-aftermath/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android at the Edmonton Java User Group</title>
		<link>http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=android-at-the-edmonton-java-user-group</link>
		<comments>http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 03:51:42 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/</guid>
		<description><![CDATA[Just a heads up for those interested:&#160; On Tuesday, June 15th the Edmonton Java User’s Group is having it’s monthly meeting at noon at the Canadian Western Bank Building.&#160; The speaker is none other than yours truly.&#160; I’ll be giving a brief introduction to application development to Android, using my trusty G1 and IntelliJ. It’s [...]]]></description>
			<content:encoded><![CDATA[<p>Just a heads up for those interested:&#160; On Tuesday, June 15th the Edmonton Java User’s Group is having it’s monthly meeting at noon at the Canadian Western Bank Building.&#160; The speaker is none other than yours truly.&#160; I’ll be giving a brief introduction to application development to Android, using my trusty G1 and IntelliJ.</p>
<p>It’s free to attend, so stop by if you’re so inclined.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/06/11/android-at-the-edmonton-java-user-group/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gotta Love JetBrains</title>
		<link>http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=gotta-love-jetbrains</link>
		<comments>http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/#comments</comments>
		<pubDate>Sun, 23 May 2010 03:22:29 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/</guid>
		<description><![CDATA[Gotta love companies that &#8220;get it&#8221;.  Late last night I was hacking away on some Android stuff using IntelliJ 9.0.2 (on Ubuntu 10.04). For reasons unknown to me, none of my breakpoints seemed to be working.  In fact, IntelliJ just didn&#8217;t seem to be working.  I narrowed it down to the breakpoints I was setting [...]]]></description>
			<content:encoded><![CDATA[<p>Gotta love companies that &#8220;get it&#8221;.  Late last night I was hacking away on some Android stuff using IntelliJ 9.0.2 (on Ubuntu 10.04). For reasons unknown to me, none of my breakpoints seemed to be working.  In fact, IntelliJ just didn&#8217;t seem to be working.  I narrowed it down to the breakpoints I was setting &#8211; it seemed that every time the breakpoints were being hit.  I managed to narrow it down to this error:</p>
<blockquote><p><span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="border-collapse: collapse; color: #444444; font-family: arial,sans-serif; font-size: 13px;">[ 166030]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; null<br />
java.lang.UnsupportedOperationException<br />
at com.sun.tools.jdi.ReferenceTypeImpl.sourceDebugExtension(ReferenceTypeImpl.java:774)<br />
at org.jetbrains.plugins.ruby.jruby.debug.JRubyPositionManager.getPath(JRubyPositionManager.java:141)<br />
at org.jetbrains.plugins.ruby.jruby.debug.JRubyPositionManager.getPsiFileByLocation(JRubyPositionManager.java:156)<br />
at org.jetbrains.plugins.ruby.jruby.debug.JRubyPositionManager.getSourcePosition(JRubyPositionManager.java:51)<br />
at com.intellij.debugger.engine.CompoundPositionManager.getSourcePosition(CompoundPositionManager.java:51)<br />
at com.intellij.debugger.engine.ContextUtil.getSourcePosition(ContextUtil.java:63)<br />
at com.intellij.debugger.impl.DebuggerSession$MyDebugProcessListener$2.compute(DebuggerSession.java:462)<br />
at com.intellij.debugger.impl.DebuggerSession$MyDebugProcessListener$2.compute(DebuggerSession.java:460)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl$3.run(PsiDocumentManagerImpl.java:298)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl$4.run(PsiDocumentManagerImpl.java:321)<br />
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:695)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl.commitAndRunReadAction(PsiDocumentManagerImpl.java:317)<br />
at com.intellij.psi.impl.PsiDocumentManagerImpl.commitAndRunReadAction(PsiDocumentManagerImpl.java:296)<br />
at com.intellij.debugger.impl.DebuggerSession$MyDebugProcessListener.paused(DebuggerSession.java:460)<br />
at com.intellij.debugger.engine.DebugProcessAdapterImpl.paused(DebugProcessAdapterImpl.java:28)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)<br />
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />
at java.lang.reflect.Method.invoke(Method.java:616)<br />
at com.intellij.util.EventDispatcher.dispatch(EventDispatcher.java:87)<br />
at com.intellij.util.EventDispatcher.access$100(EventDispatcher.java:33)<br />
at com.intellij.util.EventDispatcher$1.invoke(EventDispatcher.java:64)<br />
at $Proxy84.paused(Unknown Source)<br />
at com.intellij.debugger.engine.SuspendManagerImpl.notifyPaused(SuspendManagerImpl.java:306)<br />
at com.intellij.debugger.engine.SuspendManagerImpl.b(SuspendManagerImpl.java:299)<br />
at com.intellij.debugger.engine.SuspendManagerImpl.voteSuspend(SuspendManagerImpl.java:318)<br />
at com.intellij.debugger.engine.DebugProcessEvents$1.contextAction(DebugProcessEvents.java:412)<br />
at com.intellij.debugger.engine.events.SuspendContextCommandImpl.action(SuspendContextCommandImpl.java:62)<br />
at com.intellij.debugger.engine.events.DebuggerCommandImpl.run(DebuggerCommandImpl.java:44)<br />
at com.intellij.debugger.engine.DebuggerManagerThreadImpl.processEvent(DebuggerManagerThreadImpl.java:148)<br />
at com.intellij.debugger.engine.DebuggerManagerThreadImpl.processEvent(DebuggerManagerThreadImpl.java:36)<br />
at com.intellij.debugger.impl.InvokeThread.run(InvokeThread.java:135)<br />
at com.intellij.debugger.impl.InvokeThread$WorkerThreadRequest.run(InvokeThread.java:52)<br />
at com.intellij.openapi.application.impl.ApplicationImpl$5.run(ApplicationImpl.java:329)<br />
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)<br />
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)<br />
at java.util.concurrent.FutureTask.run(FutureTask.java:166)<br />
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)<br />
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)<br />
at java.lang.Thread.run(Thread.java:636)<br />
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:125)<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; IntelliJ IDEA 9.0.2  Build #IU-95.66<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; JDK: 1.6.0_18<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; VM: OpenJDK Server VM<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; Vendor: Sun Microsystems Inc.<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; OS: Linux<br />
[ 166036]  ERROR &#8211; lij.debugger.impl.InvokeThread &#8211; Last Action: Debug</span></span></p></blockquote>
<p>So, the problem to me seemed to be something wonky with IntelliJ.  I e-mailed Jetbrains, explaining the symptoms and the above stack trace.  This morning, I was pleased to find an e-mail from Serge  at Jetbrains.  He suggests disabling the Ruby plug-in that I have installed.</p>
<p>BINGO!</p>
<p>Worked like a charm.  Problem goes away, and in less than 12 hours since I asked for help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/05/22/gotta-love-jetbrains/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick Update to HistoricalBuildings</title>
		<link>http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=quick-update-to-historicalbuildings</link>
		<comments>http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 19:36:37 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/</guid>
		<description><![CDATA[I just uploaded an update to HistoricalBuildings.&#160; The list of historical buildings used to be sorted alphabetically, by name.&#160; Now they are sorted by the distance from your current location (assuming the GPS can figure that out).]]></description>
			<content:encoded><![CDATA[<p>I just <a href="http://www.opgenorth.net/misc/HistoricalBuildings.apk">uploaded an update</a> to <a href="http://github.com/topgenorth/historicalbuildings">HistoricalBuildings</a>.&nbsp; The list of historical buildings used to be sorted alphabetically, by name.&nbsp; Now they are sorted by the distance from your current location (assuming the GPS can figure that out).</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=fd558971-287a-8b68-8a02-ced06dd1630f" /></div>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/10/quick-update-to-historicalbuildings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YEG OpenData and their Historical Buildings on your Android phone</title>
		<link>http://www.opgenorth.net/2010/04/08/historical-buildings/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=historical-buildings</link>
		<comments>http://www.opgenorth.net/2010/04/08/historical-buildings/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 05:36:24 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[opendata]]></category>
		<category><![CDATA[YEG]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/?p=249</guid>
		<description><![CDATA[Well, for the brave, criminally insane, curious, or otherwise bored I have a alpha version of Historical Buildings – download the APK if you want to try it out.&#160; This is just, at this time, the application just shows a simple list of historical buildings in Edmonton (according to the City of Edmonton&#8217;s Open Data [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/worksonmymachinestarburst.jpg"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="works-on-my-machine-starburst" border="0" alt="works-on-my-machine-starburst" align="left" src="http://www.opgenorth.net/wp-content/uploads/2010/04/worksonmymachinestarburst_thumb.jpg" width="154" height="149" /></a> Well, for the brave, criminally insane, curious, or otherwise bored I have a alpha version of Historical Buildings – <a href="http://www.opgenorth.net/misc/HistoricalBuildings.apk">download the APK</a> if you want to try it out.&#160; This is just, at this time, the application just shows a simple list of <a href="http://data.edmonton.ca/DataBrowser.aspx?Container=coe&amp;EntitySet=HistoricalBuildings">historical buildings</a> in Edmonton (according to the <a href="http://data.edmonton.ca/">City of Edmonton&#8217;s Open Data Catalogue</a>).&#160; Click on a building, and it will show you on Google Maps where the building is in the city.&#160; The <a href="http://github.com/topgenorth/historicalbuildings">code</a> for this is, in my opinion (and to say the least) &#8211; rough.&#160; But it is a start.&#160; Definitely needs some improvement.&#160; Or maybe I just need to change my thinking to more of a Android/Java mindset.&#160; Anyway the usual caveats apply:&#160; use at your own risk / batteries not include / do not eat / void where prohibited by law, etc, etc, etc</p>
<p> Anyway, if you use it let me know.&#160; There are bound to be bugs, but hey it “Works for me!”.&#160; Time to work on some other stuff for it.&#160; I think the next neat thing is would be to show the closest building to you.&#160; Either that, or handle some of the seedy code issues and infrastructure stuff that bugs me.&#160; </p>
<table border="0" cellspacing="0" cellpadding="2" width="660">
<tbody>
<tr>
<td valign="top" width="326">Screen shot of the list of historical buildings</td>
<td valign="top" width="48">&#160;</td>
<td valign="top" width="287">Clicking on a build shows you where the building is</td>
</tr>
<tr>
<td valign="top" width="326">
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList.png"><img style="display: inline; margin-left: 0px; margin-right: 0px" class="aligncenter size-full wp-image-209" title="YegDataList.png" alt="" align="left" src="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList.png" width="320" height="480" /></a></p>
</td>
<td valign="top" width="48">&#160;</td>
<td valign="top" width="287">
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList1.png"><img style="display: inline; margin-left: 0px; margin-right: 0px" class="aligncenter size-full wp-image-226" title="MapList.png" alt="" align="right" src="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList1.png" width="320" height="480" /></a></p>
</td>
</tr>
</tbody>
</table>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/YegDataList.png"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/08/historical-buildings/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android, MapView, and your Google apiKey: Part 1</title>
		<link>http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=android-mapview-and-your-google-apikey-part-1</link>
		<comments>http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 03:52:38 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/</guid>
		<description><![CDATA[Thanks to the MapView, it’s drop dead easy to put Google Maps into your application.&#160; There are lots of posts out there how to do it.&#160; Interestingly (to me anyway), when I did a quick search of the Android developers mailing list, I was surprised to see that a lot of people had the same [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList1.png"><img style="display: inline; margin-left: 10px; margin-right: 0px" title="MapList" border="0" alt="MapList" align="right" src="http://www.opgenorth.net/wp-content/uploads/2010/04/MapList_thumb1.png" width="164" height="244" /></a></p>
<p>Thanks to the <a href="http://developer.android.com/guide/tutorials/views/hello-mapview.html">MapView</a>, it’s drop dead easy to put Google Maps into your application.&#160; There are lots of posts out there how to do it.&#160; Interestingly (to me anyway), when I did a quick search of the Android developers mailing list, I was surprised to see that a lot of people had the same problem:&#160; basically, when you look at your MapView, you end up with a grid of white squares.&#160; It kind of sucks.&#160; There are a lot of blog posts and articles out there on how to fix this problem, but this one is for me, and to help me remember it.</p>
<p>The trick to fixing this is setting your Google Maps API key.&#160; Note the layout below:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 76.6%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 210px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">&lt;?</span><span style="color: #800000">xml</span> <span style="color: #ff0000">version</span><span style="color: #0000ff">=&quot;1.0&quot;</span> <span style="color: #ff0000">encoding</span><span style="color: #0000ff">=&quot;utf-8&quot;</span>?<span style="color: #0000ff">&gt;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">RelativeLayout</span> <span style="color: #ff0000">xmlns:android</span><span style="color: #0000ff">=&quot;http://schemas.android.com/apk/res/android&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>     <span style="color: #ff0000">android:id</span><span style="color: #0000ff">=&quot;@+id/mainlayout&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span>     <span style="color: #ff0000">android:orientation</span><span style="color: #0000ff">=&quot;vertical&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     <span style="color: #ff0000">android:layout_width</span><span style="color: #0000ff">=&quot;fill_parent&quot;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     <span style="color: #ff0000">android:layout_height</span><span style="color: #0000ff">=&quot;fill_parent&quot;</span> <span style="color: #0000ff">&gt;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">com.google.android.maps.MapView</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>         android:id=&quot;@+id/mapview&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>         android:layout_width=&quot;fill_parent&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>         android:layout_height=&quot;fill_parent&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>         android:clickable=&quot;true&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>         android:apiKey=&quot;Your Maps API Key&quot;</pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>     <span style="color: #0000ff">/&gt;</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span></pre>
<p>
      <br /><!--CRLF--></p>
<p></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">RelativeLayout</span><span style="color: #0000ff">&gt;</span></pre>
<p><!--CRLF--></p>
</p></div>
</div>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/hotelkey.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="hotel-key" border="0" alt="hotel-key" align="left" src="http://www.opgenorth.net/wp-content/uploads/2010/04/hotelkey_thumb.jpg" width="71" height="63" /></a></p>
<p>In particular, pay attention to line #13.&#160; What you have to do is create a Google Maps API key, and then paste it in there.&#160; That’s simple.&#160; How do you do that?&#160; Well it’s simple too, but not as simple as it could be.&#160; The first thing you need to do is to <a href="http://developer.android.com/guide/publishing/app-signing.html">sign your application</a>.&#160; This isn’t a big deal, you have to sign your application before you can publish it anyway.&#160; Android will NOT install an application otherwise.</p>
<p>So, it seems we have two steps here:</p>
<ol>
<li>Sign your application </li>
<li>Use your signed application to get a Google Maps apiKey. </li>
</ol>
<p>Generate a private key.&#160; Keep this safer, as if it were the Holy Grail.&#160; Lose this, and as far as the public is concerned, you’re locked out from your own application – you will not be able to update it.&#160; The image below will show you the steps to go through</p>
<ol>
<pre class="csharpcode"><span class="str">&quot;C:\Program Files (x86)\Java\jdk1.6.0_19\bin\keytool&quot;</span> -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -validity 10000</pre>
</ol>
<p><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/keytoolsample1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="keytoolsample" border="0" alt="keytoolsample" src="http://www.opgenorth.net/wp-content/uploads/2010/04/keytoolsample_thumb1.png" width="594" height="309" /></a></p>
<p>Once you have that done, build your application (in release mode).&#160; I leave this as an exercise for the reader.</p>
<p>Now that you have your application built, you need to sign it.&#160; This is where jarsigner comes in:</p>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/jarsigner1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="jarsigner" border="0" alt="jarsigner" src="http://www.opgenorth.net/wp-content/uploads/2010/04/jarsigner_thumb1.png" width="513" height="267" /></a>And the final step is to zipalign your&#160; APK.&#160; You have to do zipalign last.&#160; Basically, you do zipalign for performance reasons.&#160; If you want to know more, RTFM.</p>
<pre class="csharpcode">C:\android-sdk-windows\tools\zipalign -v 4 HistoricalBuildings-unalign.apk HistoricalBuildings.apk</pre>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --><a href="http://www.opgenorth.net/wp-content/uploads/2010/04/zipalign1.png"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="zipalign" border="0" alt="zipalign" src="http://www.opgenorth.net/wp-content/uploads/2010/04/zipalign_thumb1.png" width="513" height="267" /></a></p>
<p>Now, of course, both Eclipse and IntelliJ will handle these steps for you.&#160; But where is the fun in that?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.opgenorth.net/2010/04/07/android-mapview-and-your-google-apikey-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
