|Android Studio 3|
|Written by Mike James|
|Wednesday, 24 May 2017|
Google I/O is a place where new things are announced and just occasionally you get the feeling that the new thing was rushed out to meet the artificial deadline. With Android Studio in a bit of a mess, version 3.0 arriving in the Canary Channel feels a bit like a rush job.
Android Studio was heading in one direction and suddenly the brakes were applied and a change of course made. The direction was to replace the compiler tool chain with an optimized home grown chain, known as Jack and Jill, that would compile from Java direct to dex - Dalvik byte code. Then suddenly the brakes were applied and Jack and Jill were no more and we had gone back to the old tool chain, modified to allow for some Java 8 features. This didn't make a huge amount of sense when the preview of 2.4 was released, but it makes perfect sense now we have a very early version of 3.0. The big new feature in 3.0 is, of course, Kotlin support and, guess what, if Android Studio had continued in its Jack and Jill direction, supporting Kotlin would have been difficult or impossible.
The reason is that Kotlin is a JVM language and the Jack compiler was set to compile Java to dex. To integrate Kotlin with the new tool chain, a whole new Kotlin compiler would have been needed. Instead, by reverting to the original tool chain we have Java compiled to byte code and Kotlin compiled to byte code and then the dx compiler converts the byte code to Dalvik byte code. No need for a new compiler to integrate Kotlin, or any other JVM language for that matter. The only thing that has to be done is to extend dx to include Java 8 features.
So the moment someone decided to bring Kotlin to Android Studio it was death for Jack and Jill.
At least now we know why there was a U-turn.
Notice that version 3.0 replaces 2.4, which was close to release before the change from Jack and Jill back to dx. So it will be a while before the next version of Android Studio is released.
So the big thing in 3.0 is Kotlin - and I guess this is what justifies the full increment of the version number. There are other changes in 3.0 but they are not quite as big. One of the most obvious is that now everything is back as it was and there is no sign of the Jack and Jill compilers, but you can still make use of Java 8 features such as lambdas. Updating existing projects is now just a matter of setting the source and target levels to 1.8.
Inevitably there have been some improvements to the Constraint Layout - well it needs them. There is new support for view Barriers, Groups and improved Chain creation. I can't say that I've worked out what view Barriers are as yet but they are on the list of new Layout Editor features. There is also a new error panel and it is slighly annoying because it keeps picking up errors that the Layout Editor itself puts into your code. For example, the Editor uses left and right to position, rather than the direction-neutral start and end, and the error panel flags this every time.
Another big new feature is the unified Android Profiler which shows you cpu, memory and network data in a single panel. Profiling is good, but making the OS more efficient in the first place is a better idea. Talking of which, Android Studio is still slow and prone to silent frozen moments of deep thought. There are also build speed improvements but these are at the cost of breaking the Android Gradle plugin API. You can also not get your Android dependencies from a new Maven repository - good for big Continuous Integration projects.
We also have new support for Android O, including the adaptive icon wizard and XML fonts. We also have a new project type for Instant Apps - these are apps that users can run over the web without installation.
A new project type for Android Things is included in the hope that you will extend your programming to the IoT. This is fine as long as you don't need raw GPIO speed. Currently Things is very, very slow, unless you have a device that works on the I2C or SPI bus.
One welcome new features is the inclusion of Google Play in the Emulator. This means that Play services will update on the emulator just like a real device.
There are a few other minor changes, but overall Android 3.0 would really be a decimal point upgrade if it wasn't for Kotlin and Java 8. It would be nice to reach some point of stability and maturity. It would be nice if Android Studio was faster and the Layout Editor was better, but Kotlin is a nice present.
The video gives you a reasonable overview:
or email your comment to: firstname.lastname@example.org
|Last Updated ( Wednesday, 24 May 2017 )|