<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: What does Android fragmentation look like?</title>
	<atom:link href="http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/feed/" rel="self" type="application/rss+xml" />
	<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/</link>
	<description>Meet Your New Android Friend.  Your Community For All Things Google Android.</description>
	<lastBuildDate>Thu, 18 Mar 2010 11:51:38 -0500</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Android and Me</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-14185</link>
		<dc:creator>Android and Me</dc:creator>
		<pubDate>Thu, 17 Dec 2009 19:32:41 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-14185</guid>
		<description>[...] has followed our lead and decided to begin publishing the percent of devices that are running different versions of [...]</description>
		<content:encoded><![CDATA[<p>[...] has followed our lead and decided to begin publishing the percent of devices that are running different versions of [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: haydenTheAndroid</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-12600</link>
		<dc:creator>haydenTheAndroid</dc:creator>
		<pubDate>Fri, 04 Dec 2009 04:52:30 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-12600</guid>
		<description>I&#039;d love to see this as a monthly feature...pretty useful stats to have access to</description>
		<content:encoded><![CDATA[<p>I&#8217;d love to see this as a monthly feature&#8230;pretty useful stats to have access to</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Leahy</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-12513</link>
		<dc:creator>Mike Leahy</dc:creator>
		<pubDate>Thu, 03 Dec 2009 12:03:17 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-12513</guid>
		<description>Well.. I know this is not a developer forum, but I&#039;ll just mention what solved the 1.5/1.6 fragmentation issues for Typhon &amp; me (mentioned above in a couple posts). It&#039;s been the case many times a need to fish in the dev email group or via web searches to put together the right info and this is just one more location some Android dev might stumble across, so here it goes.

The goal is the ability to build 3D/GL apps with Android to work on 1.5+ without the need for special cases / multiple apks. The problem is that 1.6+ can scale images, but 1.5 does not recognize the 1.6 solution for no scaling. Scaling images is a no-no with OpenGL due to power of 2 requirements for textures, so if Android platform scales images this can break the GL app.

The solution:

1. Add the following into the AndroidManifest.xml:

 
Also add the  tag with everything set to true for all screen sizes and density.

2. Put all desired unscaleable images into just the drawable resource dir.  Sadly drawable-nodpi is rejected on 1.5 as it&#039;s a new API feature of 1.6 / API level 4.

3. Create a small helper class (UnscaledBitmapFactory in Typhon) that uses reflection on 1.6+ to set inScaled of BitmapFactory.Options to false when loading bitmaps. With Typhon there are texture loading utilities that will use it under the hood, so end user/dev doesn&#039;t have to use the helper class, however, use this helper class as necessary for unscaled images.

4. Compile with API level 4 and make sure no specific API level 4 code is used such that things will run on 1.5 / API level 3. When doing a GL app/game this is quite possible.

Result: A GL app that is 1.5+ compatible that plays nice with 1.6+ high density / DPI devices w/ no image scaling and thus power of 2 textures are consistent and one apk / app release in the market will hit all devices. 

Relevant dev group email threads:
http://groups.google.com/group/android-developers/browse_thread/thread/5a73be55101d4052/d2e6bba95c7294e0

http://groups.google.com/group/android-developers/browse_thread/thread/97d910033eca7a93/210b62120e8e0253

You can implement the above or just use Typhon for GL app creation; coming really darn soon.. ;)</description>
		<content:encoded><![CDATA[<p>Well.. I know this is not a developer forum, but I&#8217;ll just mention what solved the 1.5/1.6 fragmentation issues for Typhon &amp; me (mentioned above in a couple posts). It&#8217;s been the case many times a need to fish in the dev email group or via web searches to put together the right info and this is just one more location some Android dev might stumble across, so here it goes.</p>
<p>The goal is the ability to build 3D/GL apps with Android to work on 1.5+ without the need for special cases / multiple apks. The problem is that 1.6+ can scale images, but 1.5 does not recognize the 1.6 solution for no scaling. Scaling images is a no-no with OpenGL due to power of 2 requirements for textures, so if Android platform scales images this can break the GL app.</p>
<p>The solution:</p>
<p>1. Add the following into the AndroidManifest.xml:</p>
<p>Also add the  tag with everything set to true for all screen sizes and density.</p>
<p>2. Put all desired unscaleable images into just the drawable resource dir.  Sadly drawable-nodpi is rejected on 1.5 as it&#8217;s a new API feature of 1.6 / API level 4.</p>
<p>3. Create a small helper class (UnscaledBitmapFactory in Typhon) that uses reflection on 1.6+ to set inScaled of BitmapFactory.Options to false when loading bitmaps. With Typhon there are texture loading utilities that will use it under the hood, so end user/dev doesn&#8217;t have to use the helper class, however, use this helper class as necessary for unscaled images.</p>
<p>4. Compile with API level 4 and make sure no specific API level 4 code is used such that things will run on 1.5 / API level 3. When doing a GL app/game this is quite possible.</p>
<p>Result: A GL app that is 1.5+ compatible that plays nice with 1.6+ high density / DPI devices w/ no image scaling and thus power of 2 textures are consistent and one apk / app release in the market will hit all devices. </p>
<p>Relevant dev group email threads:<br />
<a href="http://groups.google.com/group/android-developers/browse_thread/thread/5a73be55101d4052/d2e6bba95c7294e0" rel="nofollow">http://groups.google.com/group/android-developers/browse_thread/thread/5a73be55101d4052/d2e6bba95c7294e0</a></p>
<p><a href="http://groups.google.com/group/android-developers/browse_thread/thread/97d910033eca7a93/210b62120e8e0253" rel="nofollow">http://groups.google.com/group/android-developers/browse_thread/thread/97d910033eca7a93/210b62120e8e0253</a></p>
<p>You can implement the above or just use Typhon for GL app creation; coming really darn soon.. <img src='http://androidandme.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brando</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-12390</link>
		<dc:creator>Brando</dc:creator>
		<pubDate>Wed, 02 Dec 2009 14:37:25 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-12390</guid>
		<description>Why is it in all these pools i never hear mention of the rogers magic, I have a rogers magic and last time i checked it was an official HTC phone running android, so when u guys are taking your polls and whatnot and then proceed to state which phone are still stuck on 1.5, don,t forget the rogers magic..........</description>
		<content:encoded><![CDATA[<p>Why is it in all these pools i never hear mention of the rogers magic, I have a rogers magic and last time i checked it was an official HTC phone running android, so when u guys are taking your polls and whatnot and then proceed to state which phone are still stuck on 1.5, don,t forget the rogers magic&#8230;&#8230;&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Android and Me</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-12226</link>
		<dc:creator>Android and Me</dc:creator>
		<pubDate>Mon, 30 Nov 2009 19:17:02 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-12226</guid>
		<description>[...] though the Motorola Droid has been out less than a month, it accounts for nearly 25 percent of the Android traffic to our site. Admob data has also confirmed this by listing the Droid as the [...]</description>
		<content:encoded><![CDATA[<p>[...] though the Motorola Droid has been out less than a month, it accounts for nearly 25 percent of the Android traffic to our site. Admob data has also confirmed this by listing the Droid as the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Leahy</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-12192</link>
		<dc:creator>Mike Leahy</dc:creator>
		<pubDate>Mon, 30 Nov 2009 08:38:27 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-12192</guid>
		<description>@CJ - A little wishful thinking. Google itself can&#039;t even provide developers with adequate access to the SDK in a timely manner (1.6/2.0) before public / OTA / new device release let alone require everyone to synchronize efforts. The Open Handset Alliance should set best practices, but enforcement is not really possible. The 80%/20% release w/ bugs &amp; problems mindset has thoroughly taken hold in the tech world; besides we&#039;re talking about corporations whose bottom line is to make money, so there is little incentive on updating devices after release (or we&#039;ll see who plays nice soon enough in the Android ecosystem; support those manufacturers/carriers who update their devices and ignore those who don&#039;t!). As mentioned in my post I can&#039;t wait for the device specific OpenGL crashes due to non-standard low level device driver implementation and such.. Fun fun fun...  

Regarding my above post. A week or so ago I had a G2/Ion in my hands w/ 1.5 for a couple hours and such and made the mistake in not examining if there was any new API level 4 fields in the android.os.Build &amp; android.os.Build.VERSION classes; there are, so that tripped me up until I got some more testing done today on 1.5 devices; Cliq &amp; Hero. So my statement on android.os.Build not being present until 1.6 was hastily made.

Now a reasonably cool tool to use for testing and this should be reasonably known out there in the mobile world is DeviceAnywhere (www.deviceanywhere.com). I of course have a bitter pill to swallow as I was the 1st US dev hired there and basically took the prototype through several serious revisions over 3 years adding most of the major features and dealing with scalability/performance and had a large hand in making it what it is on the software side as an architect (what I was doing before Android dev), but the founders are greedy as hell and sharing with no one in that company; no engineer (or other employee) left there happy; IE it&#039;s not a good place to work if you are an engineer. Just saying.. ;P

Anyway... ;P I recommend it for testing Android devices particularly devices with out of date OSes. Here is a press release regarding which Android devices are currently available:
http://www.deviceanywhere.com/index.aspx?sid=6&amp;nid=158

I successfully tested Typhon/tutorials on the Cliq &amp; Hero today with DeviceAnywhere. There is a 3 hour free trial and when signing up you need to assign all the carriers (Verizon/T-Mobile/Sprint/etc) that have Android devices that they support as they don&#039;t have an Android package available yet to choose. Now this is going to be of limited use for an app that is crashing with the generic force close dialog as there is no access to adb/debug log, however if using Typhon since there is extended force close dialog w/ error reporting and email support it&#039;s possible to email stack traces and such and examine things that way. So this is a workable solution for testing on Android devices without owning one and you can also test on world wide carriers. I&#039;ll definitely continue to use this service and only buy the really hot new devices as needed. It sure kicks the emulators rear at least for GL dev as you are working on a real device albeit remotely. I might even write a tutorial on the service as it actually is way better to use it than the emulator for any GL dev sans device in hand.</description>
		<content:encoded><![CDATA[<p>@CJ &#8211; A little wishful thinking. Google itself can&#8217;t even provide developers with adequate access to the SDK in a timely manner (1.6/2.0) before public / OTA / new device release let alone require everyone to synchronize efforts. The Open Handset Alliance should set best practices, but enforcement is not really possible. The 80%/20% release w/ bugs &amp; problems mindset has thoroughly taken hold in the tech world; besides we&#8217;re talking about corporations whose bottom line is to make money, so there is little incentive on updating devices after release (or we&#8217;ll see who plays nice soon enough in the Android ecosystem; support those manufacturers/carriers who update their devices and ignore those who don&#8217;t!). As mentioned in my post I can&#8217;t wait for the device specific OpenGL crashes due to non-standard low level device driver implementation and such.. Fun fun fun&#8230;  </p>
<p>Regarding my above post. A week or so ago I had a G2/Ion in my hands w/ 1.5 for a couple hours and such and made the mistake in not examining if there was any new API level 4 fields in the android.os.Build &amp; android.os.Build.VERSION classes; there are, so that tripped me up until I got some more testing done today on 1.5 devices; Cliq &amp; Hero. So my statement on android.os.Build not being present until 1.6 was hastily made.</p>
<p>Now a reasonably cool tool to use for testing and this should be reasonably known out there in the mobile world is DeviceAnywhere (www.deviceanywhere.com). I of course have a bitter pill to swallow as I was the 1st US dev hired there and basically took the prototype through several serious revisions over 3 years adding most of the major features and dealing with scalability/performance and had a large hand in making it what it is on the software side as an architect (what I was doing before Android dev), but the founders are greedy as hell and sharing with no one in that company; no engineer (or other employee) left there happy; IE it&#8217;s not a good place to work if you are an engineer. Just saying.. ;P</p>
<p>Anyway&#8230; ;P I recommend it for testing Android devices particularly devices with out of date OSes. Here is a press release regarding which Android devices are currently available:<br />
<a href="http://www.deviceanywhere.com/index.aspx?sid=6&amp;nid=158" rel="nofollow">http://www.deviceanywhere.com/index.aspx?sid=6&amp;nid=158</a></p>
<p>I successfully tested Typhon/tutorials on the Cliq &amp; Hero today with DeviceAnywhere. There is a 3 hour free trial and when signing up you need to assign all the carriers (Verizon/T-Mobile/Sprint/etc) that have Android devices that they support as they don&#8217;t have an Android package available yet to choose. Now this is going to be of limited use for an app that is crashing with the generic force close dialog as there is no access to adb/debug log, however if using Typhon since there is extended force close dialog w/ error reporting and email support it&#8217;s possible to email stack traces and such and examine things that way. So this is a workable solution for testing on Android devices without owning one and you can also test on world wide carriers. I&#8217;ll definitely continue to use this service and only buy the really hot new devices as needed. It sure kicks the emulators rear at least for GL dev as you are working on a real device albeit remotely. I might even write a tutorial on the service as it actually is way better to use it than the emulator for any GL dev sans device in hand.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: CJ</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-12168</link>
		<dc:creator>CJ</dc:creator>
		<pubDate>Mon, 30 Nov 2009 02:29:43 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-12168</guid>
		<description>I hate to say this but the open nature of Android is going to present a big problem as the OS becomes more widely used. Google needs to mandate that all apps for Android will work on all Android phones whether they be touchscreen only, keyboard only, or both. When a new version of Android is released it should be mandatory that the manufacturers make it available for their phone. If this doesn&#039;t happen you will a system of haves and have nots with some phones running the latest OS and others stuck running outdated OSes. One only needs to look to Apple for why this becomes important. All iPhones get updated to the latest software. 1 can argue that Apple only has to support 1 form factor but even if they released an iPhone with a keyboard they&#039;d surely make the software compatible between touchscreen only and keyboard only. Freedom is good but only if there&#039;s someone to keep it from running a muck!</description>
		<content:encoded><![CDATA[<p>I hate to say this but the open nature of Android is going to present a big problem as the OS becomes more widely used. Google needs to mandate that all apps for Android will work on all Android phones whether they be touchscreen only, keyboard only, or both. When a new version of Android is released it should be mandatory that the manufacturers make it available for their phone. If this doesn&#8217;t happen you will a system of haves and have nots with some phones running the latest OS and others stuck running outdated OSes. One only needs to look to Apple for why this becomes important. All iPhones get updated to the latest software. 1 can argue that Apple only has to support 1 form factor but even if they released an iPhone with a keyboard they&#8217;d surely make the software compatible between touchscreen only and keyboard only. Freedom is good but only if there&#8217;s someone to keep it from running a muck!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Taylor Wimberly</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-11720</link>
		<dc:creator>Taylor Wimberly</dc:creator>
		<pubDate>Mon, 23 Nov 2009 20:03:24 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-11720</guid>
		<description>The apps you purchase are tied to your Google account. They are easily transferred from phone to phone and you do not have to repurchase them.</description>
		<content:encoded><![CDATA[<p>The apps you purchase are tied to your Google account. They are easily transferred from phone to phone and you do not have to repurchase them.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Khürt Williams</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-11714</link>
		<dc:creator>Khürt Williams</dc:creator>
		<pubDate>Mon, 23 Nov 2009 19:59:37 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-11714</guid>
		<description>So you are saying that I should just buy a new expensive smart phone and repurchase all my apps every time a new OS version is released?</description>
		<content:encoded><![CDATA[<p>So you are saying that I should just buy a new expensive smart phone and repurchase all my apps every time a new OS version is released?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Leahy</title>
		<link>http://androidandme.com/2009/11/news/what-does-android-fragmentation-look-like/#comment-11702</link>
		<dc:creator>Mike Leahy</dc:creator>
		<pubDate>Mon, 23 Nov 2009 18:25:29 +0000</pubDate>
		<guid isPermaLink="false">http://androidandme.com/?p=7949#comment-11702</guid>
		<description>&gt;&gt;Filipe:
&gt;&gt;I also understand that most of the concerns are probably related to low level game design (opengl / 2d primitives), and those are really interesting issues. I expect that the solution to this problem will eventually reside in open source game engines (which can handle the portability issues) and platform maturity.

----------
Here is a slightly modified comment on a similar topic posted on Wired last week
----------

Indeed this is quite the issue and the main ones that have held up the release of Typhon (http_//typhon_egrsoftware_com/) and subsequently the Android tutorials here: http_//www_android-tactelus_com/ The good news is that I&#039;m about done with absorbing all of the recent OS changes and a release is quite imminent. There are four major additions to Android resources w/ Typhon since the 2.0 release / Droid. 

- The 1st is the ability to start up OpenGL ES with multiple sets of attributes / configuration parameters then dynamically select a render path depending on which set of configuration parameters were accepted by the device. 

- The 2nd if any errors occur the next GL config set is tried, but if there are unrecoverable errors (or uncaught exceptions on the Typhon clock/timing thread) instead of just crashing with a generic force closed dialog a specific GL error or the exception + stack track is printed to a custom force close dialog. Also listed is the device and Android build info. In addition to a force close button there is a &quot;force close &amp; email dev&quot; button and this will close the app, but load the error message + device build info into an email and allow it to be sent to one or more defined dev bug addresses. So detailed error info can be sent to devs in 2 clicks by a user from any device. This not only empowers the user giving them specific error info, but also a 2 click incentive to send it to the developers.

The 3rd is a way to set keyboard defaults and any necessary overriding parameters for input control sensitivities (in case the accelerometer is different on a particular device)  via a static XML document. 

The final addition is a default activity to allow the user to change the key defaults. This is applicable of course with any game/app using Typhon on Android. The user defined key defaults take precedence over the static XML defined ones.

With these additions I&#039;m fairly confident now that for game/app development Typhon provides a good set of additional resources to deal with the Android ecosystem.

-----

Sadly a major thorn on a per device situation is the underlying implementation of OpenGL; the device driver and GPU specific work, etc. I&#039;ve already noticed that things fail with the underlying implementation of OpenGL between the G1 and Droid. I can get the Droid to spin wait on particular GL configuration functions and the G1 doesn&#039;t fail this way. 

There are also more in depth discussions on how to solve even deeper per device OpenGL ES issues such as GPU specific extensions that require additional entry points / API that can not be handled by providing a static android.jar file to compile against. IE for instance the Droid supports OpenGL 2.X (and 1.X too), but because all devices don&#039;t support 2.X (android.jar API) all of Android is limited to 1.X right now. Also as mentioned there are particular extensions available on the Droid / PowerVR SGX that are not exposed because their entry points can&#039;t be added to android.jar. The only way to solve this is to provide additional device specific jar files with the API to be compiled against then implement some sort of dynamic loading mechanism (I&#039;ve chosen OSGi for Typhon; though it&#039;s not implemented for Typhon yet on Android) that after the GL configuration process can dynamically load a jar file with the render path appropriate for the GPU on the device. Without this it&#039;s impossible to support specific GPU functionality (extension specific). 

-------------

The rapid growth of Android and the fact that it is important to address the Android ecosystem of devices _is_ a legitimate challenge and for a lot devs a problem especially new ones unfamiliar with the different OS versions prior to their 1st device/OS experience. The largest problems I’ve seen between 1.5/1.6/2.0 stock (no carrier/manufacturer mods) Android SDK/OS releases are the following:

- In 1.6 with the addition of various screen sizes and such the AndroidManifest entries for “supports-screens” fails on 1.5. It’s important to include this for an app to utilize/manage the full screen size of a device otherwise it’s automatic compatibility mode.

- The ability in the resources directory to distinguish resources for different screen sizes or “-nodpi” fails on 1.5. I do a lot of games/game engine work and if you don’t have “-nodpi” on 1.6 and 2.0 your images are scaled for automatic compatibility. While “ok” with a general application this is undesirable for games / GL development due to image size power of 2 requirements.

- It doesn’t help that the standard way to reach Android build and device info is located at android.os.Build which is present 1.6 and beyond.

The above is specific Android API / manifest additions. The following are general OpenGL issues:

- It’s necessary to address devices with various attribute configurations. For instance the G1 supports a depth size max of 16 where the Droid w/ better GPU supports up to 24. If you make an app requesting depth size of 24 then it’ll fail on the G1. Yes this is general GL app concern, but each developer will need to custom code this or see below for an API that solves it already. Google doesn’t provide some assistance API to do this.

- To make things worse the underlying implementation in “eglChooseConfig” changed between 1.6 and 2.0, and while it was changed to the correct OpenGL ES specification this change alone has broken most GL apps on 2.0 as prior to 1.6 you could request a 565 RGB config and receive one; now you get the highest rated EGLConfig returned first (different order than pre 2.0) and that may be 888. The fix here is custom developer code to choose the correct EGLConfig after receiving the list from “eglChooseConfig”, but each developer has implement this now and it totally is unclear that this is necessary except for complaints/messages of the dev email list; again see platform / API solution below.

Ah yes.. Now for the plug.. :) I’ve had a real time oriented API for developing Java apps on the desktop that deals with configuration issues and provides a healthy component oriented platform to do GL app/game development. I’ve ported it to Android and have added features that edge off Android dev; for GL dev this is a standard way to setup GL with multiple attribute paths and linking to separate render paths. There are lots of goodies for game development and by using Typhon 98% of GL app can cross-compile between desktop and Android leaving just a little bit of setup code that is unique to both.

Some info on Typhon; http_//typhon_egrsoftware_com

In addition a client of mine, Tactel, has sponsored the release of Typhon for Android and a major tutorial series on doing real time app/game development. This is (and will be) available here: http_//android-tactelus_com

Now note I’ve been reeling with all the OS changes and updates to Typhon and making sure it addresses the Android ecosystem and not one device or OS release. The good news is that I’ve essentially got it covered for Android 2.0. Check out the tutorial site and hit up Twitter or RSS to get an announcement. It’ll be worth it.. :)</description>
		<content:encoded><![CDATA[<p>&gt;&gt;Filipe:<br />
&gt;&gt;I also understand that most of the concerns are probably related to low level game design (opengl / 2d primitives), and those are really interesting issues. I expect that the solution to this problem will eventually reside in open source game engines (which can handle the portability issues) and platform maturity.</p>
<p>&#8212;&#8212;&#8212;-<br />
Here is a slightly modified comment on a similar topic posted on Wired last week<br />
&#8212;&#8212;&#8212;-</p>
<p>Indeed this is quite the issue and the main ones that have held up the release of Typhon (http_//typhon_egrsoftware_com/) and subsequently the Android tutorials here: http_//www_android-tactelus_com/ The good news is that I&#8217;m about done with absorbing all of the recent OS changes and a release is quite imminent. There are four major additions to Android resources w/ Typhon since the 2.0 release / Droid. </p>
<p>- The 1st is the ability to start up OpenGL ES with multiple sets of attributes / configuration parameters then dynamically select a render path depending on which set of configuration parameters were accepted by the device. </p>
<p>- The 2nd if any errors occur the next GL config set is tried, but if there are unrecoverable errors (or uncaught exceptions on the Typhon clock/timing thread) instead of just crashing with a generic force closed dialog a specific GL error or the exception + stack track is printed to a custom force close dialog. Also listed is the device and Android build info. In addition to a force close button there is a &#8220;force close &amp; email dev&#8221; button and this will close the app, but load the error message + device build info into an email and allow it to be sent to one or more defined dev bug addresses. So detailed error info can be sent to devs in 2 clicks by a user from any device. This not only empowers the user giving them specific error info, but also a 2 click incentive to send it to the developers.</p>
<p>The 3rd is a way to set keyboard defaults and any necessary overriding parameters for input control sensitivities (in case the accelerometer is different on a particular device)  via a static XML document. </p>
<p>The final addition is a default activity to allow the user to change the key defaults. This is applicable of course with any game/app using Typhon on Android. The user defined key defaults take precedence over the static XML defined ones.</p>
<p>With these additions I&#8217;m fairly confident now that for game/app development Typhon provides a good set of additional resources to deal with the Android ecosystem.</p>
<p>&#8212;&#8211;</p>
<p>Sadly a major thorn on a per device situation is the underlying implementation of OpenGL; the device driver and GPU specific work, etc. I&#8217;ve already noticed that things fail with the underlying implementation of OpenGL between the G1 and Droid. I can get the Droid to spin wait on particular GL configuration functions and the G1 doesn&#8217;t fail this way. </p>
<p>There are also more in depth discussions on how to solve even deeper per device OpenGL ES issues such as GPU specific extensions that require additional entry points / API that can not be handled by providing a static android.jar file to compile against. IE for instance the Droid supports OpenGL 2.X (and 1.X too), but because all devices don&#8217;t support 2.X (android.jar API) all of Android is limited to 1.X right now. Also as mentioned there are particular extensions available on the Droid / PowerVR SGX that are not exposed because their entry points can&#8217;t be added to android.jar. The only way to solve this is to provide additional device specific jar files with the API to be compiled against then implement some sort of dynamic loading mechanism (I&#8217;ve chosen OSGi for Typhon; though it&#8217;s not implemented for Typhon yet on Android) that after the GL configuration process can dynamically load a jar file with the render path appropriate for the GPU on the device. Without this it&#8217;s impossible to support specific GPU functionality (extension specific). </p>
<p>&#8212;&#8212;&#8212;&#8212;-</p>
<p>The rapid growth of Android and the fact that it is important to address the Android ecosystem of devices _is_ a legitimate challenge and for a lot devs a problem especially new ones unfamiliar with the different OS versions prior to their 1st device/OS experience. The largest problems I’ve seen between 1.5/1.6/2.0 stock (no carrier/manufacturer mods) Android SDK/OS releases are the following:</p>
<p>- In 1.6 with the addition of various screen sizes and such the AndroidManifest entries for “supports-screens” fails on 1.5. It’s important to include this for an app to utilize/manage the full screen size of a device otherwise it’s automatic compatibility mode.</p>
<p>- The ability in the resources directory to distinguish resources for different screen sizes or “-nodpi” fails on 1.5. I do a lot of games/game engine work and if you don’t have “-nodpi” on 1.6 and 2.0 your images are scaled for automatic compatibility. While “ok” with a general application this is undesirable for games / GL development due to image size power of 2 requirements.</p>
<p>- It doesn’t help that the standard way to reach Android build and device info is located at android.os.Build which is present 1.6 and beyond.</p>
<p>The above is specific Android API / manifest additions. The following are general OpenGL issues:</p>
<p>- It’s necessary to address devices with various attribute configurations. For instance the G1 supports a depth size max of 16 where the Droid w/ better GPU supports up to 24. If you make an app requesting depth size of 24 then it’ll fail on the G1. Yes this is general GL app concern, but each developer will need to custom code this or see below for an API that solves it already. Google doesn’t provide some assistance API to do this.</p>
<p>- To make things worse the underlying implementation in “eglChooseConfig” changed between 1.6 and 2.0, and while it was changed to the correct OpenGL ES specification this change alone has broken most GL apps on 2.0 as prior to 1.6 you could request a 565 RGB config and receive one; now you get the highest rated EGLConfig returned first (different order than pre 2.0) and that may be 888. The fix here is custom developer code to choose the correct EGLConfig after receiving the list from “eglChooseConfig”, but each developer has implement this now and it totally is unclear that this is necessary except for complaints/messages of the dev email list; again see platform / API solution below.</p>
<p>Ah yes.. Now for the plug.. <img src='http://androidandme.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I’ve had a real time oriented API for developing Java apps on the desktop that deals with configuration issues and provides a healthy component oriented platform to do GL app/game development. I’ve ported it to Android and have added features that edge off Android dev; for GL dev this is a standard way to setup GL with multiple attribute paths and linking to separate render paths. There are lots of goodies for game development and by using Typhon 98% of GL app can cross-compile between desktop and Android leaving just a little bit of setup code that is unique to both.</p>
<p>Some info on Typhon; http_//typhon_egrsoftware_com</p>
<p>In addition a client of mine, Tactel, has sponsored the release of Typhon for Android and a major tutorial series on doing real time app/game development. This is (and will be) available here: http_//android-tactelus_com</p>
<p>Now note I’ve been reeling with all the OS changes and updates to Typhon and making sure it addresses the Android ecosystem and not one device or OS release. The good news is that I’ve essentially got it covered for Android 2.0. Check out the tutorial site and hit up Twitter or RSS to get an announcement. It’ll be worth it.. <img src='http://androidandme.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
