Monday, May 31, 2010

On Android Compatibility

[This post is by Dan Morrill, Open Source & Compatibility Program Manager. — Tim Bray]

At Google I/O 2010, we announced that there are over 60 Android models now, selling 100,000 units a day. When I wear my open-source hat, this is exciting: every day the equivalent of the entire population of my old home city starts using open-source software, possibly for the first time. When I put on my hat for Android Compatibility, this is humbling: that’s a whole lotta phones that can all share the same apps.

Another thing we launched at Google I/O was an upgraded and expanded source.android.com. The new version has refreshed info on the Android Open-Source Project, and some new tips and tools for device manufacturers — useful if you’re an OEM. However, it also has details on the Android compatibility program, now. This is also aimed mostly at OEMs, but Tim Bray suggested that developers might be interested in a peek at how we keep those 100,000 devices marching to the same beat, every day. So here I am, back on the blog.

The F-word, or, Remember remember the fifth of November

I remember sitting with my colleagues in a conference room in Building 44 on November 5, 2007, listening to Andy Rubin and Eric Schmidt announce Android to the world. I remember a lot of the press stories, too. For instance, Android was “just words on paper” which was especially entertaining since I knew we were getting ready to launch the first early-look SDK a mere week later.

Another meme I remember is... yes, “fragmentation”. Literally before the close of business on the same day we announced Android (4:46pm to be precise), I saw the first article about Android “fragmentation.” The first day wasn’t even over yet, and the press had already decided that Android would have a “fragmentation” problem.

The thing is, nobody ever defined “fragmentation” — or rather, everybody has a different definition. Some people use it to mean too many mobile operating systems; others to refer to optional APIs causing inconsistent platform implementations; still others use it to refer to “locked down” devices, or even to the existence of multiple versions of the software at the same time. I’ve even seen it used to refer to the existence of different UI skins. Most of these definitions don’t even have any impact on whether apps can run!

Because it means everything, it actually means nothing, so the term is useless. Stories on “fragmentation” are dramatic and they drive traffic to pundits’ blogs, but they have little to do with reality. “Fragmentation” is a bogeyman, a red herring, a story you tell to frighten junior developers. Yawn.

Compatibility

Now, that’s not to say that there aren’t real challenges in making sure that Android devices are compatible with each other, or that there aren’t very real concerns that keep app developers awake at night. There definitely are, and I spend a great deal of time indeed thinking about them and addressing them. The trick is to define them clearly.

We define “Android compatibility” to be the ability of a device to properly run apps written with the Android SDK. This is a deceptively simple way to frame it, because there are a number of things that can go wrong. Here are a few:

  • Bugs - devices might simply have bugs, such as a buggy Bluetooth driver or an incorrectly implemented GPS API.

  • Missing components - devices might omit hardware (such as a camera) that apps expect, and attempt to “fake” or stub out the corresponding API.

  • Added or altered APIs - devices might add or alter APIs that aren’t part of standard Android. Done correctly this is innovation; done poorly and it’s “embrace and extend”.

Each of these is an example of something that can make an app not run properly on a device. They might run, but they won’t run properly. These are the things that I spend my time preventing.

How It Works

As stewards of the platform we realize that it’s vital to allow only compatible devices to participate in the Android ecosystem. So, we make compatibility a strict prerequisite for access to Android Market and the right to use the Android name. This means that developers can rely on the fact that Android Market — the keystone of the Android ecosystem — will only allow their apps to run on compatible devices. It’s pretty self-evident that a single app ecosystem is better than many small ones, so OEMs are generally pretty motivated to ship compatible devices.

But motivation alone doesn’t get us very far without tools to actually ensure compatibility, which is where the Android compatibility program comes in. This program is like a stool with three legs: the Android source code, the Compatibility Definition Document, and the Compatibility Test Suite.

It all starts with the Android source code. Android is not a specification, or a distribution in the traditional Linux sense. It’s not a collection of replaceable components. Android is a chunk of software that you port to a device. For the most part, Android devices are running the same code. The fact that all Android devices run the same core Android code goes a long way toward making sure those devices all work the same way.

However, this doesn’t solve the problems of missing components or altered APIs, because the source code can always be tweaked. This is where the Compatibility Definition Document (or CDD) comes in. The CDD defines in gory detail exactly what is expected of Android devices. It clearly states, for example, that devices may not omit most components, and that the official Android APIs may not be altered. In a nutshell, the CDD exists to remove ambiguities around what’s required of an Android device.

Of course, none of that overcomes the simple reality of human error — bugs. This is where the Compatibility Test Suite comes in. The CTS is a collection of more than 20,000 test cases that check Android device implementations for known issues. Device makers run the CTS on their devices throughout the development process, and use it to identify and fix bugs early. This helps ensure that the builds they finally ship are as bug-free as possible.

Keeping Up with the Times

We’ve been operating this compatibility process with our OEM partners for over a year now, and it’s largely responsible for those 60+ device models being interoperable. However no process is ever perfect and no test suite is ever 100% comprehensive, and sometimes bugs get through. What happens then?

Well, we have great relationships with our OEMs, and like I said, they’re motivated to be compatible. Whenever we hear about a serious bug affecting apps, we report it to our partners, and they typically prepare a bugfix release and get it out to end users. We will also typically add a test case to the CTS to catch that problem for future devices. It’s an ongoing process, but generally our partners are as interested as we are in the user experience of the devices they sell.

The mobile industry today is “very exciting”, which is code for “changes painfully fast”. We believe that the only way Android will be a success is to keep up with that change, and ultimately drive that change. This means that over time, the CDD will also change. We’ll add new text to handle problem cases we encounter, and the actual requirements will change to accommodate the innovations happening in the field. For example, in the 2.1/Eclair CDD, we tweaked the CDD slightly to make telephony optional, which allows Android to ship compatibly on non-phone handheld devices. Whenever we do this, of course, we’ll make corresponding changes to the Android APIs and Android Market to make sure that your apps are protected from ill effects.

On a somewhat related note, a lot of ink has been spilled on the fact that there are multiple versions of Android out there in users’ hands at the same time. While it’s true that devices without the latest software can’t run some of the latest apps, Android is 100% forward compatible — apps written properly for older versions also run on the newest versions. The choice is in app developers’ hands as to whether they want to live on the bleeding edge for the flashiest features, or stay on older versions for the largest possible audience. And in the long term, as the mobile industry gets more accustomed to the idea of upgradeable phone software, more and more devices will be be upgraded.

What It Means for You

All that is great — but what does it mean for developers? Well, we put together a page in the SDK Documentation to explain this, so you should take a look there. But really it boils down to this:

  1. As a developer, you simply decide what features your app requires, and list them in your app’s AndroidManifest.xml.

  2. The Android compatibility program ensures that only compatible devices have access to Android Market.

  3. Android Market makes sure your app is only visible to those devices where it will run correctly, by filtering your app from devices which don’t have the features you listed.

That’s all!

There almost certainly will be devices that have access to Android Market that probably weren’t quite what you had in mind when you wrote your app. But this is a very good thing — it increases the size of the potential audience for your app. As long as you accurately list your app’s requirements, we’ll do the rest and make sure that your app won’t be accessible to a device where it won’t run properly. After all, we’re app developers ourselves, and we know how painful it is to deal with users upset about an app not working on a device it wasn’t designed for.

Now, that’s not to say that we think our current solution is perfect — no solution is. But we’re continuously working on improvements to the SDK tools and Android Market to make your life as an Android developer even easier. Keep an eye on this blog and on the Android Market itself for the latest info.

Thanks for reading, and happy coding!

HTC HD2 Apps: uZard Web Browser v2.0.3.12









uZard Web P is a mobile web browser. It allows users to experience the same web surfing they do with PC.

uZard Web P shows the fastest performance not only on 3G or 4G networks but also on 2G and 2.5G networks. As long as the devices have the access to a network, users can experience the same web surfing and multimedia contents through uZard Web P just as they do with PC.

uZard Web P is optimized for use on a broad range of mobile devices and networks.



uZard Web P

- shows same screen as you see in your PC’s.

- is the fastest mobile web browser.

- supports Flash content.

- works independently of chipset and technologies.

- doesn’t require high processing power.

- takes smallest data traffic.

- is a small size application.

- is easy to customize and converge.



Download This HD2 App Here:

























Talk about it on our Facebook page.
Sharing Matrix

Rapid Share

HTC HD2 Apps: Spb Wireless Monitor v.3.1.0



SPB Wireless Monitor is a complete solution for measuring data traffic via all types of connections and calculating network usage costs according to your data plan.



Reports

Analyze your spending

* Time based and per-application reports

* Table and chart view

* Any period

* Export to HTML and CSV



Alarms

Stay within your budget

* Warning when usage limit exceeded

* Traffic and cost limits

* Easy and intuitive configuration

* Any number of alarms



Connections and Tariffs

Assign data plans to your connections. It's easy!

* GPRS/CDMA/3G, WiFi and USB supported

* 500+ pre-defined data plans

* Update tariff database via Internet

* Easy-to-use wizard for custom tariffs



User Interface

Nice and easy to use

* One hand operation

* Adaptive skins adjusted to the main theme color

* Today plug-in



Download This HD2 App Here:

















Talk about it on our Facebook page.
Sharing Matrix


Rapid Share

HTC HD2 Games: PileUp ! Candymania v1.4.2





Head off to candy cosmos and give your HD2 a treat! Clear 60 levels of increasingly difficult sugar-fueled fun in 6 different environments. PileUp! - it's candy for your HD2!



Drop sets of three candy pieces onto a pile and match colors to make the candies vanish.

Collect huge bonuses from consecutive matches and clear levels with the help of power-ups.



Download This HD2 Game Here:

















Talk about it on our Facebook page.
Sharing Matrix


Rapid Share

Sunday, May 30, 2010

HTC HD2 Games: Astraware Platypus v1.00









Based on the cult classic for PC and Mac, Platypus is a fast, frantic and fun side-scrolling arcade shooter with a difference - the entire game is made from clay! The vast continent-spanning city of Collosatropolis has finally reached the limits of its expansion, and tall buildings cover every available space. The Collosotropolan leaders have decided the simplest solution is to invade the neighbouring country of Mungola. They don't anticipate much of a struggle - Mungolans are simple, earthy types without much love for industry. In fact, Mungola's entire defence force consists of a single squadron of fighter planes - the venerable F-27 'Platypus'.





Download This HD2 Game Here:






















Talk about it on our Facebook page.
Sharing Matrix

Rapid Share

HTC HD2 Games: Sally's Salon v1.1.9





Help Sally spread her salon savvy and make the cut from the shopping mall to the glittering lights of Hollywood in this stylish and engaging challenge based on the 2007 #1 PC game on RealArcade. Now available for windows mobile Pocket Pc from RealArcade.



Pamper your customers in five unique salon locations. Work with Sally to revamp everyone, from little old ladies to punk rockers, in five unique salon locations. Wash, dye, cut, style and more in 50 levels of fashionable fun. Use your earnings to hire helpful employees and purchase salon upgrades to keep your clients looking and feeling their best. Only the stylist with the happiest (and best-looking!) customers will make the cut in this fashionably fun mobile game.



Features:

-Unlimited Play

-50 Challenging Levels

-10 Unique Salon Locations

-Fabulous Salon Upgrades

-Gorgeous Full-Screen Graphics



Download This HD2 Game Here:

















Talk about it on our Facebook page.
Sharing Matrix


Rapid Share

HTC HD2 Games: Sally's Spa v1.1.0



Treat yourself to some fast fun with Sally in Sally's Spa! Sally's back and ready to relax in original spa locations around the world. Refresh your customers with saunas, manicures, massages, and more. Join Sally on her latest adventure today!

Melt away the stress and pamper a wide variety of customers including blushing brides, demanding fashionistas, tranquil couples, and more!

Sally's Spa features all of the fun of Sally's Salon, plus loads of new surprises! A wonderful escape for gamers of all ages, join Sally on her latest adventure today!

Cater to your clients in loads of colorful levels. Create your own spas in five unique locations. Relax a variety of customer types. Enhance your spa with a variety of upgrades. 







-Amazing graphics that take full advantage of your mobile phone.

-Cater to your clients in loads of colorful levels.

-Create your own spas in five unique locations.

-Relax a variety of customer types.

-Enhance your spa with a variety of upgrades.



Download This HD2 Game Here:



















Talk about it on our Facebook page.
Sharing Matrix


Rapid Share

Saturday, May 29, 2010

HTC HD2 Apps: Panoramic Guitar Suite v1.0.0





The essential application for any guitar player.

Panoramic Guitar Suite contains five essential screens: Chords, Scales, Digital Tuner, Tune by Ear, and a Metronome, making it a great and comprehensive aid for guitarists.

Practice, reference or teach by accessing Guitar Suite's library of over 25,000 popular chords. Visual feedback from the extremely accurate Metronome with variable tempo and meter, helps maintain a consistent tempo while practicing.



* Contains a library of over 25,000 chords

* 50 scales

* 19 Guitar Tunings

* Easy hear any displayed chord

* Extremely accurate metronome with variable tempo and meter

* High precision digital tuner

* Finger friend "tune by ear" mode with support for all 19 tunings

* Free play mode allows you to finger tap any string or fret and play basic melodies

* Comprehensive scale display on play mode that works with any tuning

* Right and Left-handed layout option

* Seven (7) vibrant skins



Download This HD2 App Here:

























HD2Apps Facebook page
FileServing

cab file: 3.68MB







HTC HD2 Games: Spore Origins v1.0.4





Eat-or-be-eaten! Guide your creature through its early evolution and shape its destiny. Devour smaller creatures, explore primordial worlds filled with bizarre organisms, and avoid larger, lethal life forms. Grow your creature from single-cell to complex predator as you rise through 18 interactive levels. Customize your creature, increasing offense, defence, perception, and movement. Take on your friends by exporting your creature or fighting online in Arena mode against players around the world!



Download This HD2 Game Here:






















Talk about it on our Facebook page.
Sharing Matrix

Rapid Share

Friday, May 28, 2010

HTC HD2 Games: Cake Mania Celebrity Chef v1.1.0





Jill Evans is back for fast-paced, frosted fun on a new reality show in the latest addition to this smash hit series! Bake cakes for her quirky customers in more than 50 exciting levels.



Download This HD2 Game Here:


















Talk about it on our Facebook page.
Sharing Matrix

Rapid Share

HTC HD2 Games: iBomber v1.0.0







iBomber is an amazing, arcade styled bombing game based in the Pacific Ocean in 1943 during World War II. Play as a young bomber pilot protecting your fleet while searching out key enemy targets on land and sea to destroy.

Featuring superbly detailed locations in and around the Pacific Ocean, embattlements and enemy vessels firing from every angle, and multiple bomb types and other pick-ups to be found throughout the game.



Download This HD2 Game Here:





















this video was recorded on a desktop emulator, the frame rate in the actual game much better.
Talk about it on our Facebook page.
Sharing Matrix

Rapid Share