You are reading “Goobar,” an Android development newsletter exploring the latest tools, tips, and trends from the world of Android. We’re dedicated to helping you learn and grow in your career as an Android developer, so if you like what you see, be sure to subscribe.
Welcome devs 👋
As a generalization, us software developers tend to like developers tools; a lot. And why wouldn’t we? Software development is a challenging process, and anything we can leverage to make that process more efficient can lead to better code, more satisfied users, and happier developers.
I think the start of a new year is a great time to reassess the tools we keep in our developer’s toolbox, and to keep an eye out for new tools that might help us at any of the many levels of the software development process.
So, I want to ask you, what tools, libraries, IDE’s, etc have been most helpful to you? What app, website, or command line utility can’t you do without?What app, website, or command line utility can’t you do without? Click To Tweet
In the spirit of sharing our dev toolboxes, I want to share a handful of the tools that I use and find helpful during my day to day work as an Android developer, as well as some related/alternative tools to help provide some additional choices to you.
My Most Used Android Development Tools
I spend much of my day within an IDE, so that’s where I’m going to start. For me, I generally stick to two IDE’s:
I really enjoy the IDE’s developed by JetBrains, and would be lost without these two. In the past, I’ve also been very happy with CLion and WebStorm; both of which are from JetBrains.
I haven’t really used it, but I also here really good things about Visual Studio Code (VSCode); especially as an option for Flutter development.
One thing I enjoy about IntelliJ and Android Studio is the ability to add/remove plugins to customize the behavior of my IDE. A couple plugins I’ve enjoyed over the past year include:
The Material Theme UI plugin enables you to customize the appearance of the IDE including the editor, icons, windows, etc. It’s not the most practical of Android development tools, but it’s a fun one.
The Json Viewer plugin is a nice little tool for quickly writing and validating json strings from within the IDE. It can quickly validate if a string is valid json, and reformat it for you so it’s a bit easier to read. I’ve found this quite useful when writing some quick json strings for test code.
Unless you have a massive library of Android devices on hand, you’re probably using some form of emulator to test your apps, making it one of our most valuable Android development tools.
Once upon a time, the stock Android emulator was not very good, and I happily used Genymotion as a much more performant emulator option. However, Google’s Android emulator has improved dramatically over the years, and I find it suits my needs perfectly well.
A couple of quick tips to get the most out of your emulators:
- Create multiple emulators that cover the min and target api versions of your app.
- Create multiple emulators that cover your supported device sizes: small phone, large phone, tablet, etc
- If your project is localized, keeping an emulator on hand which is set to your localized languages will save time and energy when testing
- Rotate the emulators you use to test. Change them up daily, or weekly to ensure you’re testing the behavior across different device types.
Command Line Tools
When stepping away from my IDE, I’ve found several different command line tools/utilities to be quite helpful over this past year:
Oh My Zsh is an awesome tool for customizing, and superpowering, your command line. You can use it to configure the color scheme of your terminal, your bash prompt, you can add a git plugin to display your git repo information in your prompt, and many other things. In particular, I find that having my git repository info as a part of my prompt is incredibly helpful.
Many of you are likely already familiar with Curl. However, if you’re not, Curl is a command line tool for transfering data with urls. Put a little more concretely, if you need to test an api you’re working with, you can use Curl to test that api from the command line. This is generally much faster and easier than trying to test from within your app, and can save you a lot of time when trying to understand how to make a particular api call. Useful as an Android development tool and for pretty much any other type of software development.
Android Debug Bridge (ADB) is a command line utility included with the Android SDK tools, and is likely one of the most useful Android development tools out there. ADB allows you to interact with an Android device from the command line. You can use it to open up an interactive shell and work with the device, or to send one-off commands. Recently, I found it quite helpful for testing deeplinks within my Android application. If you’ve ever wanted to test things like intent handling, process restoration, or connectivity changes, ADB might really help.
Source Control & Project Hosting
Hopefully, we’re all using some form of source control these days. Easy to start with options include:
Most everyone has probably heard of GitHub at this point. If GitHub isn’t for you, other options include GitLab and BitBucket.
I don’t have a whole lot to say about these as most people are likely familiar with them already. I will say, that with the addition of GitHub Actions as a viable means of building projects and automating workflows, I’m really fond of the overall integration and ease of use that GitHub provides.
I’m a big fan of automation, and of having a seamless continuous integration pipeline in place for our projects. These days, we have a number of CI services available to us:
I’ve worked quite a bit with CircleCI and find it to be pretty easy to setup, and to have an easy to navigate user interface.
Bitrise is also very easy to set up, but I personally prefer to have my build configuration stored in my project as opposed to the web interface, so I haven’t found myself really using it for any of my projects. I know teams that are happily using it in production though, and it seems to be a popular choice.
Google Cloud Build and Jenkins are both viable options; though they likely require more work to setup and maintain.
GitHub Actions makes integrating a CI pipeline with your GitHub repositories incredibly easy. I’m currently using GitHub actions on several projects and haven’t run into any major issues yet; although there are some rough edges around artifact caching across parallel build steps.
I’m one of those geeky, maybe overly Type A, people that enjoys issue and feature tracking for my projects. As a result, I’ve tried a variety of tools for keeping track of what I need to build and fix:
If you’re hosting your projects on GitHub, then I think GitHub Issues are the way to go. It keeps the issues and the code in the same place, makes issue easy to reference from commits, and you can even create issue templates to help people provide the right information when submitting issues.
Trello is another really nice and easy option for tracking issues. It’s less integrated by default, but there are lots of nice plugins for Trello that you can use to interface with other applications.
For larger, more holistic project tracking solutions, both Basecamp and Jira have worked for me in the past. Jira can be a beast to configure properly though, and I wouldn’t recommend for a solo dev or small project. Basecamp can be quite nice if you don’t overthink what you want to track and keep it simple. I’m currently using Basecamp to track several different projects, and I find that the simplicity helps keep me focused on what matters most.
I don’t do much in the way of design work, but when I do, I have several go to tools including:
Canva is by far the design tool I use the most. It’s easy to use across web and mobile, and provides enough tools for me to create reasonably nice looking graphics without too much effort.
When I want to reference Material Design guidelines, look for a nice color palette, or find accessibility guidance, Material.io is a great place to start. In particular, I find the Color Tool to be really helpful.
Facebook has a nice collection of design resources to help you with things like app screenshots, or VR development.
Miscellaneous Tools for Android development
I also wanted to include a few other miscellaneous tools that I don’t use often, but are incredibly useful when I do. These aren’t strictly Android development tools, but are useful across the board:
Postman is a really powerful tool for api development and testing. For me, I tend to use it as a more GUI based Curl alternative. It makes building a request very simple when UI elements dedicated towards adding requests, add request body data, authentication, and more. It also provides a request history, and enables you to save requests for later. You can create team workspaces and share these requests with others. On a large team with multiple apis to work on, this can be a really valuable asset.
ShapeShifter is an SVG animation design tool built by Alex Lockwood. It provides a web-based tool to create and keyframe svg animations that can then be used on the web or in your mobile apps. If you’re a dev that wants to create some simple animations, this could be a great tool to play around with.
Clockify is a tool I recently came across for project time tracking. It’s free. It integrates nicely with Chrome and cane be used from any browser. It has a mobile app. All in all, it’s a really nice and simple solution for keeping track of how much time you spend across various projects.
What are your favorite Android development tools?
I’ve shared a number of the tools I find most useful, and I’d love to hear what you’re using. Do you have a favorite IDE? Do you have a go to command line tool?
Leave a comment so we can all discover new and useful Android development tools to try out and add to our developer toolboxes.
More About Android Development Tools
- More posts about Android Studio tips & tricks
- Learn more about GitHub Actions
- Learn how to format Kotlin code with ktlint
Here are a few interesting tidbits I’ve come across from the world of Android development:
- Reference Android code integrating TransferWise’s services into a (Demo) Bank App
- Code Cafeteria Podcast
- How to test Android Deeplinks using ADB from the command line
What in the world of Android development are you interested in right now? Join in the conversation in the comments below.
See you next time devs 👋