You are browsing the archive for 2011 December.

What Makes Android Revolutionary

December 31, 2011 in Uncategorized

IconIt all started with Apple/TechCrunch blogger M.G. Siegler making a huge fuss over something he didn’t understand, and while that in and of itself isn’t particularly interesting, one of the outcomes of this little internet drama is a comment on Google+(the tenth one) that so perfectly encapsulates just how important Android is for the world that I felt the need to share it with you. It’s the holiday season after all.As some of you may recall, way back in the day, Steve Jobs said Google’s use of the word “open” was disingenuous, and that Google’s use of the term in relation to Android was just smokes and mirrors. While the dripping, almost gelatinous irony of Steve Jobs accusing another company of abusing a term for marketing purposes certainly wasn’t lost on me, I personallywasn’t particularly happy with the lack of a public source code release for Honeycomb either; in the end, however, it didn’t change anything about the openness of Android – technically speaking, that is. No licenses were violated, and all the source code that had to be released was properly released (all GPL code, for instance, was readily available).

Still, Andy Rubin, Google’s Android chief, felt the need to address Steve Jobs’ comments, and opened a Twitter account. His first tweet gave the definition of open – a definition as rock-solid now as it was back then. As most of us will realise, this is the sequence of commands that downloads and compiles the Android source code.

 

the definition of open: “mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ; make”

 

A few days ago, Rubin posted a tweet about how on December 24 and 25, 3.7 million Android devices were activated. A pretty impressive number, especially since unlike, say, Apple’s numbers, this covers devices actually bought and activated by customers, but excludes devices which aren’t Android certified, like the Kindle Fire or many Chinese products running Android derivatives (Apple’s numbers, on the other hand, only cover shipped devices - not sold devices, like many erroneously believe. Apple uses “sold” rather… Disingenuously by redefining “shipped” to “sold” in its SEC filings).

In any case, Siegler noticed that Rubin’s first tweet had been deleted – conspiracy! Proof Android isn’t open! Man the trebuchets! “Where did the initial tweet go? Who knows. But it sure looks like he deleted it. Deleted it in an ‘open’ way, I’m sure,” Siegler writes, “Luckily for us all, I saved Rubin’s real first tweet from October 19, 2010.” Can you imagine if he hadn’t saved it for us all? What a relief!

There’s no conspiracy here, of course. The simple fact of the matter is that the instructions for downloading and building Android which were given in Rubin’s first tweet were outdated. After the kernel.org root server was compromised, many code repositories, including Android’s, were moved away from kernel.org. In other words, Rubin’s commands simply don’t work any more, and as such, the tweet was deleted. Again, the irony of Siegler making a fuss about this isn’t lost on me.

In case you were wondering, the new definition of open:

 

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.3_r1

 

All this is remarkably uninteresting, but there’s one upside to all this. In a comment posted on Google+ (the tenth one; how do you link to Google+ comments?), Clinton DeWitt explains the importance of open source in mobile, and the effect Android will have (and already is having) on the mobile industry in places other than the rich west. For the first time, a smartphone operating system is going to impact more than rich people in the US and Europe, and that is pretty darn revolutionary.

“I believe what Android is accomplishing is truly revolutionary. Mobile is the way that billions of people will one day access the Internet. And through that access, we will soon start to narrow the massive knowledge gap that currently divides the richest from the poorest populations,” DeWitt explains, “That there’s now an eminently capable open source mobile operating system, one that is free to use and free to fork, means that the knowledge advantage can be better and more evenly distributed across the planet than ever before.”

“For some pundits, it’s all about which companies are building the fanciest and most feature-rich handheld computers. Which, if we’re being honest about it, are devices for those that already have everything. When you’re at the top, it’s great to see the tech giants going head-to-head and competing for our dollars like this. Having a few dollars, I benefit from that, too,” he adds, “And yet in spite of that, I’m even more excited about seeing a $25 mobile device that has access to a killer web browser and endless mobile apps, and watching that device appear in the hands of a billion school children over the next 10 years.”

The iPhone is heralded as the most revolutionary mobile phone in human history, but the cold and harsh truth is that for all the cheering and punditry, the iPhone’s impact on the world is negligible. Sure, it had a huge impact on the smartphone market in rich countries – but it didn’t have such an impact on the world.

For all the bad jokes directed at the company during its trying times, Nokia is the technology company that truly changed the world. Nokia put a mobile phone within every person’s reach. Even people in some of the poorest places on earth were given the ability to communicate wirelessly, thanks to Nokia making the mobile phone affordable to everyone. Personally, I see this as one of the greatest achievements of the technology world, but sadly, it’s often overlooked because “ooh Apple has pinch-to-zoom!!!1!”

What Nokia did for the mobile phone, Android is doing for the smartphone. It’s not Apple that’s going to put a smartphone in every corner of the globe – it’s not Microsoft; heck, not even Google, but Android. In ten to fifteen years’ time, we will look back and regard Android as the technology that enabled even the poorest people in this world to have access to the web (and thus, knowledge), just like we regard Nokia as the company that put the mobile phone in every corner of the globe.

Of all the features, of all the first world problem whining, of all the lawsuits, of all the lacking updates, of all the antennagates, of all the pentile matrix nonsense, of all the large displays, of all the design patents, of all the everything - that is what makes Android revolutionary.

And that’s worth ten billion bullshit bounce-back scrolling software patents.

Android drivers to be included in Linux 3.3 kernel

December 27, 2011 in C++, Firmware, News

Android drivers are returning to the Linux kernel. Kernel maintainer Greg Kroah-Hartman has retrieved the Android drivers removed from the staging area of Linux 2.6.33 in the spring of 2010 and put them back into his development branch for version 3.3 of the Linux kernel.

The plan is for a Linux 3.3 kernel to be able to boot on an Android device without further patches – although not all Android patches are being automatically carried over to the main development branch. For example, the WakeLock code, which helps Android devices’ batteries last longer but is not necessary for booting, is not included.

Read more on h-online

Android’s 2D Canvas Rendering Pipeline

December 23, 2011 in Other, Programming, Tutorials, Tutorials

This is a conceptual overview of how Android’s 2D Canvas rendering pipeline works. Since Android’s Canvas API is mostly a pretty thin veneer on top of Skia it should also serve as a reasonable overview of Skia’s operation, though I’ve only looked at Skia code that’s reachable from Android’s SDK, and when the Skia and Android terminology differ (which is rare, modulo “Sk” prefixes and capitalization) I’ve used the Android terminology.

How and Why I Wrote This

I wrote this overview because I’ve been doing some Android development recently, and I was getting frustrated by the fact that the documentation forandroid.graphics, particularly when it comes to all of the things that can be set in a Paint object, is extremely sparse. I Googled, and I asked a question on Stack Overflow but I couldn’t find anything that explained this stuff to my satisfaction.

This overview is based on reading what little documentation exists (often “between the lines”), doing lots of experiments to see how fringe cases work, poring over the code, and doing even more experiments to verify that I was reading the code correctly. I started writing it as notes for myself, but I figured others might benefit as well so I decided to post it here.

Caveats

I say this is a “conceptual” overview because it does not always explain the actual implementation. The implementation is riddled with special cases that attempt to avoid doing work that isn’t necessary. (I remember hearing some quote along the lines of “the fastest way to do something is to not do it at all”.) Understanding the implementation details of all of these special cases is unnecessary to understanding the actual end-result, so I’ve focused on the most general path through the pipeline. I actually avoided looking at the details of a lot of the special-case code, so if this code contains behavioral inconsistencies I won’t have seen them.

Also, there are cases, particularly in the Shading and Transfer sections, where the algorithm described here is far less efficient but easier to visualize (and, I hope, understand) than the actual implementation. For example, I describe Shading as a separate phase that produces an image containing the source colors and Transfer as a phase producing an image with intermediate colors. In reality these two “phases” are interleaved such that only a small set (often just one) of the pixels from each of these virtual images actually “exists” at any instant in time. There is also short-circuiting in this code such that the source and intermediate colors aren’t computed at all for pixels where the mask is fully transparent (0x00).

This does mean that this overview can’t give one an entirely accurate understanding of the performance (speed and/or memory) of various operations in the pipeline. For that it would be better to performing experiments and profile.

Also keep in mind that because this is documenting what is arguably “undocumented behavior” it’s hard to say how much of what is described here is stuff that’s guaranteed versus implementation detail, or even outright bugs. I’ve used some judgement in determining where to put the boundaries between phases (all of that optimization blurs the lines) based on what I think is a “reasonable API” and I’ve also tried to point out when I think a particular behavior I’ve discovered looks more like a bug than a feature to rely on.

There are still a number of cases where I’d like to do some more experimentation to verify that my reading of the code is correct and I’ve tried to indicate those below.

Apple v. HTC in the ITC – More About Nails in the Road – UPDATE

December 22, 2011 in Uncategorized

Article with comments on groklaw

We often hear a comparison between the cold war and the large accumulation of patents and their use in the information technology sector. Terms like “mutually assured destruction,” “throw weight,” and others have been in vogue for some time. But I have often viewed the actions of some large IT players and their assertions of infringement of trivial patents as being more akin to sprinkling nails on the highway. That is, just like a driver in a race throwing nails on the road to puncture the tires of following competitors, some of these large patent holders sprinkle their trivial (and worthless?) patents around to slow down their technology competitors. That’s my view of what Apple has been doing of late, particularly in its action before the International Trade Commission against HTC.

The ITC has ultimately ruled in Apple’s favor on exactly two of the Apple patent claims.

TWO!

In my opinion, the ITC saw through Apple’s strategy and the triviality of those very same claims. As a result, the ITC, while technically finding for Apple, granted HTC a four-month stay in which to workaround those patents for all newly imported phones and a year in which to “refurbish” existing phones. As we reported earlier in NewPicks, HTC has said it will have no trouble meeting these deadlines. (HTC says solution is ready to address Apple patent violations)

The only thing I remain surprised about is that the ITC and other enforcement bodies don’t see through this type of action. You have devices that embody hundreds of different technologies, some protected by patents and others not, and yet the ITC does not see the folly in granting any form of exclusion when the device infringes a couple of trivial patent claims.

Surely, when Steve Job’s howled about Google “ripping off the iPhone” and his intent “to go thermonuclear war on this,” he had something more in mind than claims 1 and 8 of U.S. Patent 5,946,647, which read:

1. A computer-based system for detecting structures in data and performing actions on detected structures, comprising:

an input device for receiving data;an output device for presenting the data;

a memory storing information including program routines including an analyzer server for detecting structures in the data, and for linking actions to the detected structures;

a user interface enabling the selection of a detected structure and a linked action; and

an action processor for performing the selected action linked to the selected structure; and

a processing unit coupled to the input device, the output device, and the memory for controlling the execution of the program routines.

8. The system recited in claim 1, wherein the user interface highlights detected structures.

Quite frankly, it’s hard to believe there isn’t prior art for Claim 1. More importantly, it’s hard to believe that the survival of Apple depends on these patent claims.

Is this the sort of thing politicians mean when they suggest the future of the United States depends on protecting the intellectual property of U.S. companies?

REALLY?

This strikes me as more a candidate for The Daily Show.

**********

UPDATE

Here is a related article from Dennis Crouch at Patently-O that talks about exclusion orders and the similarities (or lack thereof) with injunctive relief in infringement cases. And here is the New York Times article by Mark Lemley and Colleen Chien that Dennis mentions talking about Patents and the Public Interest.

Intel’s Android phone looks like an iPhone bastard—and I like it! and it plays blu-ray too

December 21, 2011 in Uncategorized

The Technology Review team actually got their hands on a pair of Medfield prototypes running Android: a phone similar in size to the iPhone, running Gingerbread, and a tablet close to the iPad 2 in thickness, running Ice Cream Sandwich. So, are they any good?

From what they say, the phone seems promising. They report that it could play Blu-Ray-quality video and stream it to TV, and that web browsing was smooth and fast. Apparently the Medfield chip is designed specifically to speed up Android apps and Web browsing, so that probably has something to do with it.

Read more about it on gizmodo

There are now over 700,000 Real Android devices activated every day

December 21, 2011 in Uncategorized

From Andy Rubin Bureau of Android Statistics

https://plus.google.com/112599748506977857728/posts/PLAaEFy1fNa

Think about it : if you don’t make Android Linux as primary target you loose 700.000 possible real customers per day

 

…and for those wondering, we count each device only once (ie, we don’t count re-sold devices), and “activations” means you go into a store, buy a device, put it on the network by subscribing to a wireless service.

Using ccache to build Android

December 20, 2011 in Uncategorized

Once when files related to Makefile (*.mk) is changed, it is necessary to do “make clean; make”.
This is time-consuming work. It can reduce time using ccache. It is very easy to use ccache to build Android.

What is ccache?

See this page. http://ccache.samba.org/

When the first compiling, ccache preserves the compilation result in another directory. And, it is checked whether a content and an optional compilation of last time and the file are corresponding at the following compilation, and uses the content preserved instead of actually compiling when agreeing.

It is C/C++/Objective-C/Objective-C++ that ccache supports, and is not supported Java.

Speed up effect will come after the second time build.

And remember that the large amount of disk is consumed to preserve the compilation result.

Read the rest of the article here

Building Android 4.0 on Ubuntu 11.10

December 13, 2011 in Firmware, Programming, Tutorials

The source code for Android 4.0 “Ice Cream Sandwich” was released last week, and Google’s build instructions list Ubuntu 10.04 as the only officially “supported” configuration for building AOSP on Linux. As of this writing Ubuntu 10.04 is a year and a half old, so lots of people have moved on to newer versions, some of which cause problems due to missing/renamed packages, conflicting versions, etc.

Ubuntu 11.10 in particular is troublesome because it uses gcc-4.6 by default and has no sun-java6-jdk in its repositories. Here’s what you’ll need to do to get AOSP 4.0.x to compile on Ubuntu 11.10.

Install dependencies

Compilers, parsers, file-manipulation tools, libraries, etc; this is mandatory! The list on the source.android.com Inititalizing a Build Environment page is similar, but a few of those packages don’t exist in 11.10. Use these:

sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \ x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils

Install an “old” GCC

In addition to building applications for the phone, Android’s build system builds a few tools for the host operating system (such as the tools in the SDK). The initial release of the Ice Cream Sandwich source code has a few incompatibilities with the version of the GNU C compiler which comes with Ubuntu 11.10 (GCC 4.6). Install GCC 4.4 from Ubuntu’s repositories:

sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib

Small fix for libX11, which some statically-linked programs might need:

sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

Download Sun Java 6 JDK

Android 2.3+ requires Java 6 to build correctly. While OpenJDK did work for 2.3, it doesn’t work for Android 4.0; you need Sun Java. Install it from ppa this way :

sudo add-apt-repository ppa:ferramroberto/java
sudo apt-get install sun-java6-jdk

Relaunch your terminal and test, java -version:

java version "1.6.0_29" Java(TM) SE Runtime Environment (build 1.6.0_29-b11) Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode)

Building…

Follow Google’s Downloading the Source Tree, which will help you install the repo tool and clone the android-4.0.1_r1 branch. It’s damn near 9 gigabytes, so make sure you have a fast Internet pipe and a pot of coffee ready.

After that you’ll be ready to build:

cd ~/android/ics lunch full-eng make CC=gcc-4.4 CXX=g++-4.4 -j4

On my dual-core Core i7 Thinkpad T420 with 8GB of RAM this takes ~110 minutes, your mileage may vary depending on the number of available cores, amount of RAM, and speed of your hard drives.

If your build completes successfully you’ll be able to test it immediately using the emulator command (a version of QEMU, built as part of the build process):

Necessitas alpha 3 update 2

December 13, 2011 in Android X86, Applications, C++, Frameworks, News, Qt framework

Hello folks,

I’m honored to announce the second update of Necessitas alpha 3 release [1].
This release brings a new keyboard implementation which I announce it early this month [2]. As I said before there are a few small things which are still missing (I’d like to mention the selection which is not the best in town), but, overall I can say that all Qt users will enjoy a first class experience when it comes to input support. Also I tied to make it a little bit smarter:

  • If the input widget is bigger than 2/3 of the screen size your window will be resized.
  • Else the window will be moved in order to ensure widget visibility.

Yours sincerely,
BogDan.

[1] http://groups.google.com/group/android-qt/browse_thread/thread/1d729d895b0379ed
[2] http://groups.google.com/group/android-qt/browse_thread/thread/3be1cba871e7e51c

[Ed:The sdk files from sourceforge are the same  for example i have downloaded for linux and ran  ./necessitas-0.3-online-sdk-installer-linux and it will download the new release ,If you have the sdk already installed you should upgrade from the menu Help-Start-Updater ]

Android Development liked this post

WebGL’s appears in a live release of the stock Android browser for the first time, thanks to Sony Ericsson.

December 10, 2011 in Applications, News, WebGL

Firefox on Android has supported WebGL for a while now, but now WebGL’s appeared in a live release of the stock Android browser for the first time, thanks to Sony Ericsson.

Xperia™ phones first to support WebGL™

In the latest software upgrade  we did for the 2011 Xperia™ phones, we’ve included WebGL™ support. By doing so, Sony Ericsson is the first mobile phone manufacturer to support WebGL for the Android web browser. WebGL basically makes it possible to extend the capability of the JavaScript programming language to allow it to generate interactive 3D graphics within the web browser. Read more about Sony Ericsson’s WebGL support after the jump, and find out about special considerations to keep in mind when developing 3D web applications targeting touch-enabled devices.

In this article, Anders Isberg from Sony Ericsson’s Technology Reseach department explains more about WebGL and what to think of when you develop 3D web applications for touch-enabled devices. If you scroll down, you will also find three WebGL examples that you can browse to from the Android browser, if you have the latest software on your 2011 Xperia™ phone. You can also check out how it looks in the video above.