Amongst all practices available in software engineering, Continuous Integration is maybe one of the most uncommon when it comes to mobile app development.

Continuous Integration for mobile is still in the early stages of adoption, but Jing Li, our speaker at Codemotion Rome 2018, has a really strong commitment on quality tools and showed us how to get the best from Android SDK and Docker container platform.

When we asked Jing his point of view about continuous integration, he told us that he understands nowadays a lot of people are still not using it and that he heard people talking about agile methodologies and deploy-at-any-time, but in his opinion working without a continuous integration system is impossible.

 
To me, without using continuous integration, it’s like not using source code version control
 

Working on mobile apps, developers and admins have to deal with day to day pain from required tools to install, SDKs you have to update or switch, and, last but not least, provisioning of all different machines or devices needed to run and test your app.

Jing’s solution to those issues leverages on Docker platform to provide feasible docker images for Android SDKs and tools, as well as to run Android emulator.

This Android-on-Docker solution is good to use on both developer workstations and continuous integration systems. Switching from the standard way to this one, they solved the problem of “it works on my machine, but not on colleague/build/test/user machine” and at the same time they take advantage of less cost, less effort in maintenance, fewer problems. “To me, feel like have hired another experienced software engineer”, Jing said.

During his talk at Codemotion, Jing Li shared some thought about limitations, pitfalls, tweaks, and performance. Docker for Android SDK emulation is not problem free, but all issues can easily be addressed and the benefits overcome the risks.

 
In the last decade, Android an iOS have learned from each other, becoming similar
 

We asked Jing his point of view about the last decade in the mobile industry. He replied that undoubtedly technology, design, and expectations have grown for both users and developers.

Users, for example, can take advantage of the user-friendliness of a new design system. Even more, users can customize their own experience, enabling or disabling features: a huge leap from what was available ten years ago was available on Symbian based system.

Developers, on the other side, still have to optimize for performance, but with fewer constraints. New programming languages available for Android and iOS, Kotlin and Swift, are less error-prone. This is really helpful to build and ship apps that are more resilient for users, especially considering the time you need (store approval, wait for user updates) to actually ship a hotfix.