Tag Archives: Ice Cream Sandwich

Video showing all the code changes on Android from start to ICS

Here is a video showing all the modifications made to the source code of Android from the start to Ice Cream Sandwich :

The graph represents the source tree (which uses git). Non-leaf nodes are directories and leaf nodes are files where their color represents the type of file. Files appear as they are modified and disappear if they are not touched for 2.5 seconds.

In other words, each “blast” from a user is a commit. These commits come from both Googlers and contributors. The data was taken from stitching together the logs of all the many AOSP (Android Open Source Projects) projects using a software called gource

How to fix the “Conversion to Dalvik format failed with error 1″ with ADT 14

Today I updated my SDK and ADT to the 14 version and I had a big problem !!

Every project I had which used Android Library Project couldn’t be launched on a terminal and crashed during the APK generation with the following error :

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lcom/foxykeep/datadroid/config/LogConfig;
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processClass(Main.java:486)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.access$400(Main.java:67)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processOne(Main.java:418)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.run(Main.java:206)
[2011-10-19 15:19:18 - MyProject] Dx 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2011-10-19 15:19:18 - MyProject] Dx 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[2011-10-19 15:19:18 - MyProject] Dx 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[2011-10-19 15:19:18 - MyProject] Dx 	at java.lang.reflect.Method.invoke(Unknown Source)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:729)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:602)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:282)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:363)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Project$1.run(Project.java:545)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:524)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Project.build(Project.java:123)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.project.ProjectHelper.build(ProjectHelper.java:869)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:146)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:924)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1128)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2011-10-19 15:19:18 - MyProject] Dx
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lgreendroid/app/ActionBarActivity;
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processClass(Main.java:486)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.access$400(Main.java:67)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processOne(Main.java:418)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.dx.command.dexer.Main.run(Main.java:206)
[2011-10-19 15:19:18 - MyProject] Dx 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2011-10-19 15:19:18 - MyProject] Dx 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[2011-10-19 15:19:18 - MyProject] Dx 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[2011-10-19 15:19:18 - MyProject] Dx 	at java.lang.reflect.Method.invoke(Unknown Source)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:729)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:602)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:282)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:363)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Project$1.run(Project.java:545)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:524)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.resources.Project.build(Project.java:123)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.project.ProjectHelper.build(ProjectHelper.java:869)
[2011-10-19 15:19:18 - MyProject] Dx 	at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:146)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:924)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1128)
[2011-10-19 15:19:18 - MyProject] Dx 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2011-10-19 15:19:23 - MyProject] Dx warning: Ignoring InnerClasses attribute for an anonymous inner class
(org.ksoap2.transport.KeepAliveHttpsTransportSE$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective operations on this class will incorrectly
indicate that it is *not* an inner class.
[2011-10-19 15:19:23 - MyProject] Dx 2 errors; aborting
[2011-10-19 15:19:23 - MyProject] Conversion to Dalvik format failed with error 1

After searching the web and finding this existing bug in the Android bugtracker, I found the reason of this crash . Below you can see my project hierarchy before and after the update from ADT 12 to ADT 14 :

There is only 3 visible differences : “Library Projects” and a “bin” folder and the “default.properties” has been rename to “project.properties”.

The problem here is that the Library Projects elements contains for each Android Library Projects a jar file with the source code. At the same time we still have the GreenDroid_src and DataDroid_src elements which also contains the source code of the libraries. So we have duplicated code in our projects as mentioned in the error.

I think the update should have removed the useless X_src elements but it’s not the case. So we will have to do it manually :

  1. For each X_src element,right click on it and then Build Path > Remove from build path.
  2. A popup will open. Make sure that “Also unlink the folder from the project” is checked and then accept it.
Your project should changed from the left image to the right one :

Now you can launch your project and it should work !

Ice Cream Sandwich launch date and arrival of the sculpture

Update : The video of the arrival of the sculpture is now on Youtube ! You can see it at the bottom of the post.

The launch date for Ice Cream Sandwich is finally revealed !

The event will take place October 19th at 10:00 AM in Hong Kong. So October 18th at 10h PM EST or October 19th at 4:00 AM in Europe.

As you can see in the above image, it will be livestreamed on Youtube at the following link : youtube.com/android and the topic will be Ice Cream Sandwich and the Galaxy Nexus/Nexus Prime.

 

Other news : the Ice Cream Sandwich sculpture has arrived on the Googleplex !

As you normally know, for each release, the arrival of the sculpture on the Googleplex is nearly the last step of the process ! So it looks really good ;)

Here is the video of its arrival :

Le successeur d’Honeycomb ne s’appelle pas Ice cream !

Les rumeurs parlaient d’Ice Cream pour le nom de la version d’Android suivant Honeycomb. Et bien cela n’est pas exactement le cas !

La prochaine version d’Android s’appellera : Ice Cream Sandwich !

Pourquoi ce changement ?

Comme on le sait, les versions d’Android possèdent toutes un nom de dessert comme nom de version et ces noms suivent les lettres de l’alphabet (Cupcake, Donut, Eclair, …). A chaque version, Google ajoute également une statue du dessert devant le HQ d’Android à Mountain View (comme on le voit ci-dessous pour Froyo).

On voit alors très rapidement le problème si on gardait le nom “Ice Cream”. Comment faire la différence entre de la crème glacée et du frozen yoghurt ?

La solution la plus simple reste encore de changer légèrement le nom ;)

Android : 3 ans déjà !

Vendredi dernier, le 5 novembre, le robot vert a soufflé les 3 bougies qui ornaient son gâteau d’anniversaire. 3 ans que l’aventure Android a commencé et que Google et l’Open Handset Alliance (OHA) ont offert au monde cet OS mobile qui a révolutionné le marché. En juste 3 années, ce système est passé de la position de joueur débutant dans le marché des OS mobiles à celle de leader pour les smartphones aux USA et de numéro 2 dans le monde.

Regardons maintenant comment Android en est arrivé la !

Le commencement

Juillet 2005 : le rachat d’Android par Google

L’histoire commence en Juillet 2005 quand Google rachète Android, une startup orientée vers les architectures mobile. Pendant 2 ans, très peu d’informations circulent sur les suites de ce rachat, mais de nombreuses rumeurs parlent d’une entrée prochaine de Google sur le marché du mobile et d’un potentiel GPhone!

5 Novembre 2007 : les débuts d’Android

Après des mois d’attente et de rumeurs, Google coupe nette aux rumeurs sur le GPhone, un soi-disant adversaire de l’iPhone et présente à la place non pas un autre téléphone mais un système d’exploitation mobile : Android !

“This is the droid You’re Looking For”

Ce titre d’un post sur le blog Android Developers, une semaine après l’annonce d’Android, annonçant la sortie du premier SDK d’Android, est une magnifique référence au film StarWars et illustre totalement le côté geek des ingénieurs de Google. Au même moment, une vidéo était mise sur Youtube et permettait d’avoir un premier aperçu de l’interface d’Android :

Une autre vidéo nous montre la présentation d’Android par les personnes qui l’ont créé :

Premiers prototypes

En février 2008, Android montre ses premiers prototypes au Mobile World Congress. Et la déception est au rendez-vous … les écrans sont montés sur des cartes mères et n’ont même pas ce qu’on pourrait appeler un design … Cela ressemble plus à ce qu’on pourrait faire dans un garage !

Android Prototypes

Heureusement les journalistes ne s’y trompent pas et repèrent le potentiel. Charlie Sorrel écrira entre autre pour Wired’s gadget lab : “Ce n’est pas juste de rigoler de ces immenses cartes imprimés : Ce sont des prototypes et qui seront bien sûr réduit à une fraction de cette taille”. Il faut bien reconnaître qu’il avait raison !

L’arrivée des applications

8 mois plus tard (Octobre 2008), les premières applications Android commençaient à arriver et elles n’avaient rien à voir avec ce qu’on trouvait sur les prototypes. Meilleur qualité et des designs beaucoup plus proche de ce qu’on retrouve maintenant

L’arrivée des versions actuelles d’Android

Android 1.5, nom de code Cupcake

Février 2009 marqua l’arrivée d’Android 1.1 qui fut suivi rapidement par Android 1.5 alias “Cupcake” en avril. Cette version commença la longue série des versions d’Android basées sur des noms de dessert. Cupcake amenait l’enregistrement de vidéos, les uploads vers Youtube, les fameux widgets et plein d’autres améliorations.

G1 sous Cupcake

Le premier trimeste 2009 marque pour les Français les débuts d’Android avec l’arrivée du G1 dans nos contrées vendus par Orange en mars 2009.

Elle marque pour ma part ma découverte d’Android et mes premiers pas avec le SDK Android !

Android 1.6 alias Donut

Donut arriva en septembre 2009 et amena de nombreuses améliorations, entre autres, un meilleur Android Market, une gallerie photo améliorée, une recherche sur le bureau plus complète, le text-to-speech, le support du CDMA/EVDO (utile surtout pour les américains), du 802.1x et des VPN, la gestion des résolutions WVGA et des images multi-résolutions. Des skins commencèrent à apparaître.

Les vidéos de présentation officielle présentées par le robot vert commencèrent à apparaitre également :

Electrisation du Droid

Eclair arriva début Novembre 2009, soit à peine 2 mois après Donut, et améliora grandement le design de l’interface. Plus de résolutions et de tailles d’écran furent supportées, l’interface utilisateur fut retravaillée que ca soit dans les interfaces générales ou dans le navigateur. Le clavier virtuel eut également droit à une refonte et les fond d’écrans dynamiques (Live Wallpapers) apparurent. Android améliora également son approche business en intégrant le support de la messagerie Microsoft Exchange.

Particularité de la version Eclair : c’est la seule à posséder plusieurs codes de versions : elle débuta avec le code 2.0 en Novembre 2009 avant de passer en version 2.0.1 en décembre et enfin en version 2.1 en Janvier 2010.

Arrivée du froid !

En mai 2010, la dernière version en date d’Android fut présentée durant la Google I/O 2010 : Frozen Yoghurt, plus connu sous le nom de Froyo. Cette version n’a pas atteint tous les téléphones, mais les chanceux qui ont pu avoir cette mise à jour ont pu profiter de ses améliorations avec au programme le tethering (partage de la connexion du téléphone) via USB et via Wifi, le partage de contact via Bluetooth, l’amélioration des recherches par la voix, Adobe Flash, l’installation des applications sur la carte SD, le support des calendriers Exchange et plein d’autres améliorations.

Froyo

Arrivée prochaine des épices

Android devrait sortir dans les jours qui viennent sa prochaine version : Android 2.3, nom de code Gingerbread (Pain d’épice). Les améliorations attendues sont le support du format de vidéo WebM, de nouvelles fonctionnalités de réseau social, une meilleure gestion du copier/coller. On parle également d’une refonte de l’interface générale, de la sortie de l’Android Market music store, du streaming de musique depuis un PC, du support des jeux 3D, des appels en vidéo, ou encore du support des Google TV. Plus d’infos à ce sujet dans les jours qui viennent !

Futures versions

Peu d’informations disponibles sur les versions suivants Gingerbread en dehors de leur nom : tout d’abord Honeycomb (Rayon de miel) suivi de Ice Cream (Crème glacée). Rien qu’à en parler ca donne faim ;)

Conclusion

Android qui a déjà parcouru un très grand chemin n’en ai à mon avis qu’à ses balbutiements. Il n’a pas encore atteint son potentiel maximal dans le domaine du mobile et n’a pour l’instant pas vraiment lancé son offensive dans le marché des tablettes et de la télévision. L’avenir s’annonce donc radieux pour cet OS et pour Google qui a dit récemment qu’Android était leur meilleure acquisition !

Page optimized by WP Minify WordPress Plugin