The term “DevOps” has been thrown around a lot in the software development world. AWS describes it as a combination of philosophies, practices, and tools that help deliver apps and services effectively and efficiently.
Mobile DevOps falls under that DevOps umbrella, and it requires a different approach because of the agile nature of mobile development. If you narrow it down even further, you’ll arrive at our main topic, Android DevOps.
Most developers would agree that Android DevOps challenges are on a different scale compared to iOS DevOps. This is because Android’s greatest strengths as an OS are also what makes developing for the system so much more complicated.
Of course, if you’re able to resolve the challenges in Android DevOps, you’ll reach a much wider audience than if you developed for iOS alone. With Android poised to take more of the market share in forthcoming years (87% vs. 13% of iOS as of 2019), smoothing out the edges of your team’s Android DevOps practices is a step in the right direction.
In our episode of Mobile DevOps is a thing!, we talked to Peter-John (PJ) Welcome about the challenges in Android DevOps. We’ve summarized the four main issues plaguing Android DevOps and how developers can overcome them, as well as PJ’s roadmap to mobile success that’ll help you maximize the benefits of testing automation.
The most common roadblocks in Android DevOps
1. Over-reliance on a single developer
Being overly dependent on a single person creates significant bottlenecks in your development process, especially if that person happens to go on vacation, call in sick, or leave the company.
PJ pushes for Android DevOps practices (in this case, automation with CI) because it prevents development teams from relying too much on a single developer and their machine. It also speeds up development time because:
- You no longer have to spend time looking for or upskilling a replacement if a developer leaves.
- You prevent instances where code runs perfectly fine on one machine but fails on another.
- You reduce the risk of development coming to a standstill when one individual is no longer part of the process, either temporarily or permanently.
“And that’s where the Mobile DevOps part or when the automation part comes in, where you want to make sure that all of those things (processes and certificates) are handled, and it’s not a dependency on a specific team member, or even the team itself.” – PJ
2. Building on different machines
It’s not likely that any two developers will have the same settings, so writing code on separate machines can be an issue. It could lead to your code only running on a specific machine because of different configurations or environmental variables.
As such, the best way to address the problem of physical machines affecting your code is to build on a virtual machine in a clean environment each time to reduce failure risks from code commits. Ideally, every build runs in a new VM and is promptly discarded after the build has finished, ensuring a clean environment each time.
“…We know that it works in this very, like clean environment where there is nothing there…so we know that it’s not relying on [any] specific machine and anybody’s specific configuration.” – PJ.
3. Device fragmentation
With iOS, developers usually focus on the latest firmware version without going too far back, as most Apple products tend to run the newest version of iOS.
When developing for Android, however, you’ll have to account for hundreds (if not thousands) of devices running on different versions of the Android OS and APIs, making testing and deployment incredibly difficult due to the variety of device configurations available.
“Besides the manufacturing, [there are] differences that might come about when using a Samsung versus a Pixel. You then also have versions of Android that have a whole bunch of different APIs that come with it.” – PJ.
At this level of device fragmentation, your best option is to test on a device farm such as those provided by AWS or Firebase Test Lab. This allows you to test your app on multiple devices and configurations in real-life scenarios and not just rely on emulators or simulation testing.
You can also use a cloud-based CI/CD system to help make device farm testing more accessible, as it allows you to run specific tests overnight without relying on any physical device.
4. Convincing your team to make the change
There’s a standard school of thought that goes “if it ain’t broke, don’t fix it,” which is why convincing your team to make the Android DevOps change can be tricky, especially if you’re working with mobile developers who are new to DevOps CI/CD.
According to PJ, it’s not only until you start iterating faster with Android DevOps practices (such as CI/CD implementation) that your team notices the tangible benefits and improvements that can be achieved.
The best way to convince your team to make the switch is by sharing case studies of businesses that may have faced similar problems and how they’ve succeeded with CI/CD.
There are many Mobile DevOps success stories, and if you can find one that resonates with your team, you may convince them yet.
PJ’s roadmap to mobile success
The road to mobile success may not be the same for everyone. PJ shared his roadmap for achieving mobile success, which involves automation of the following components:
- Branch release strategies
- Code reviews
- App architecture
- Code coverage
- Static code analysis
As PJ explains it, developers should try and tie all the above together and automate the process so they don’t have to commit to each part manually. This is where CI/CD comes in, as it allows you to create pipelines based on a specific branching strategy to which you can create specific automated points.
Once everything is up and running, you can have multiple developers iterating the product and have it ready for release without anyone having to go through every individual process. This can significantly improve development times, especially when working in a team.
Build better Android apps with Bitrise
Understanding and resolving the challenges Android DevOps face is only the first stop on the journey to time-efficient Android development—you’ll need the right mobile development tools at your disposal.
Bitrise offers specific solutions for Android CI/CD, featuring out-of-the-box support for your native Android projects, allowing you to build, test, and deploy with ease.
Ready to start your Android DevOps journey? Request a demo today so you can experience how CI/CD integration can help innovate Android development for your team.