Keeping your Android codebase maintainable as your codebase grows can be a challenge. In this article, Toptal Freelance Android Developer Abhishek Tyagi shows how to combine MVVM with Clean Architecture—the latter as described by Robert C. Martin—to write decoupled, testable, and maintainable code.Continue reading →
Despite initial skepticism, React Native is very much in demand today!
In this article, Toptal Freelance React Native Developer, and former React Native skeptic, Alexander Pataridze talks about why he became a React Native advocate instead and introduces us to the technology by illustrating four use-cases.Continue reading →
The development of cross-platform mobile applications has always been a source of many challenges. Although tools like Apache Cordova and Haxe do solve some of the associated issues, they are still not the ideal solution in many cases. React Native changes that by providing the power of React.js for mobile platforms and a promise of consistent developer experience across multiple platforms.Continue reading →
There is no way around application diagnostics. No matter how good your code is, you will need to be able to monitor and study system behavior. This is where Android’s DDMS shines.
In this article, Senior Android Engineer Gilad Haimov explains how veteran Android developers leverage the potential of DDMS to improve app stability and performance, test new features, diagnose, and debug their code.Continue reading →
Writing reusable code that can be shared across multiple platforms can make developing mobile applications a lot easier. But, how do you do that without paying the usual cost of maintainability, ease of testing, and poor user experience that comes with cross-platform mobile application development?
In this article, Toptal Freelance Software Engineer Emran Bajrami walks us through Xamarin and shows us techniques for building high-quality cross-platform apps.Continue reading →
Android provides many ways of creating and managing threads, and third-party libraries exist to make that even easier. However, with so many options, choosing the right approach can be quite confusing.
In this article, Toptal Freelance Software Engineer Eliran Goshen discusses some common scenarios in Android development that involve threading and how each of the scenarios can be dealt with.Continue reading →
Developing a mobile app for multiple platforms can be quite costly. Implementing the same functionalities in multiple programming languages and dealing with a plethora of unique libraries for each platform requires a massive amount of time and knowledge.
In this article, Toptal Freelance Software Engineer Sylvain Gravel talks about Xamarin and its companion technologies that let you build mobile applications for multiple platforms without compromising familiarity, performance, and uniqueness.Continue reading →
Dealing with concurrency in Android through imperative-style programming can be quite the hassle. RxJava, a library for reactive and functional style programming, allows concurrency constructs to be modeled in a reactive way in Android’s non-reactive world.
In this article, Toptal Freelance Software Engineer Christopher Arriola shows us how RxJava can be incrementally introduced to existing Android projects and leveraged to simplify concurrency.Continue reading →
Since the inception of the platform, Android developers have had pretty much only one option for a database: SQLite. Although feature-rich and powerful, it wasn’t quite what Android app developers needed. Realm, a modern, efficient database solution for mobile platforms, turned out to be an amazing replacement for SQLite on Android.
In this article, Toptal Software Engineer Mateus Gondim Romão Batista explains why you should use Realm for your next Android application.Continue reading →
Any experienced developer will tell you that their best code isn’t code they wrote. It’s code they took from someone else’s work. Many of the problems we encounter have already been solved—and the remedies packaged into libraries available to anyone. Why reinvent the wheel when free wheels are everywhere?
In this guide, Senior Android Engineer Gilad Haimov will take you on a quick tour of some the most powerful Android libraries out there. Robust as a hammer, faster than a drill, and more precise than any scalpel; no Android developer should leave home without these must-have tools.Continue reading →
Google formally announced Android 7.0 a few weeks ago, but as usual, you’ll have to wait for it. Thanks to the Android update model, most users won’t get their Android 7.0 over-the-air (OTA) updates for months. However, this does not mean developers can afford to ignore Android Nougat.
In this article, Toptal Technical Editor Nermin Hajdarbegovic takes a closer look at Android 7.0, outlining new features and changes. While Android 7.0 is by no means revolutionary, the introduction of a new graphics API, a new JIT compiler, and a range of UI and performance tweaks will undoubtedly unlock more potential and generate a few new possibilities.Continue reading →
Implementing applications that deal with complex concurrent behavior has always been a challenging aspect of programming. Various paradigms exist that promise a solution to this problem in different ways. RxJava is a Java library that enables Functional Reactive Programming in Android development. It raises the level of abstraction around threading in order to simplify the implementation of complex concurrent behavior.
In this article, Toptal Freelance Software Engineer Christopher Arriola gives us a detailed walkthrough of RxJava and how it fits into the realm of Android development.Continue reading →
Kotlin is a new, expressive general-purpose programming language powered by the same virtual machine technology that powers Java. Since Kotlin compiles to the JVM bytecode, it can be used side-by-side with Java, and it does not come with a performance overhead.
In this article, Toptal Freelance Software Engineer Ivan Kušt gives us a walkthrough of ten major features of Kotlin that help avoid boilerplate code and, more importantly, save time.Continue reading →
Java has been a dominant programming language for ages, but modern times call for modern languages. Meet Kotlin, a modern, clear, and expressive programming language powered by the same virtual machine technology that powers Java.
In this article, Toptal Freelance Software Engineer Tomasz Czura takes us for a spin through the world of Kotlin and shows us how it can be used to make an Android application with an elegant architecture without compromising the very qualities of the code that Kotlin aims to provide.Continue reading →
The plethora of tutorials on building Android apps may have you thinking that making a mobile app is simple. In reality, however, performance issues can be very complicated, and because performance plays a key role in making sure that your app stays on your users’ list of favorite apps for a long time, every little detail must be given one’s full attention.
In this article, Toptal Freelance Software Engineer Tibor Kaputa shares some tips on how you can optimize some common performance issues and identify some of the bottlenecks in your Android app.Continue reading →
Navigation in mobile applications, when done right, can have tremendous positive impact on overall user experience. Android offers application developers multiple ways of implementing navigation in their application. However, not all navigation patterns are created equal.
In this article, Toptal engineer Becze Szabolcs shows us how to implement fragment-based navigation and how it stacks up against Android’s traditional navigation philosophy.Continue reading →
Several factors conspired to stifle Android Wear growth, ranging from lack of Google development, to inadequate hardware. Some of these problems have been addressed, some are being addressed, while others cannot be addressed with currently available technology.Continue reading →
Force Touch is not a new idea. BlackBerry experimented with the concept back in 2008, and a few Android phone makers also examined the possibility of using Force Touch on their products. In fact, Force Touch support has been a part of Android for years; it was introduced in Android 1.0.Continue reading →
Today, we will be taking a look at the future of mobile payments and emerging opportunities for developers. Needless to say, with each new opportunity, developers will have to face new challenges.
However, since we are talking about money, I don’t think anyone expects a shortage of software developers eager to learn a few new tricks and get into this space.Continue reading →
Cars with next-generation connected infotainment systems will create new opportunities on several fronts. In case you already have an infotainment system with a neat touchscreen and GPS in your car, please accept my condolences; it’s about to become as obsolete as a Nokia 3310 compared to an iPhone.Continue reading →
OpenGL, a cross-platform API for rendering 2D and 3D graphics, is extremely powerful and yet surprisingly easy to get started with. Although one may find the most common applications of OpenGL and rendered graphics in video games only, in reality there are far more uses. To demonstrate the power of OpenGL, we’ll be building a Mandelbrot set generator on Android using OpenGL ES.Continue reading →
It is not uncommon for developers to find themselves in need of a UI component that is either not provided by the platform they are targeting or is, indeed, provided, but lacks a certain property or behavior. The answer to both scenarios is a custom UI component. The Android UI model is inherently customizable, offering the means to create custom UI components in various ways.Continue reading →
Whether you’re an avid angler or an app developer, you may be interested in taking a closer look at the development of a fishing app, which involved some of your fellow Toptalers.
The goal was to create an app that would be truly useful in a professional fishing setting, while at the same time meeting a hard deadline. Since Fatsack Outdoors wanted to launch the app at one of the biggest fishing tradeshows of the year, the deadline was non-negotiable.Continue reading →
Google announced Android M at its annual I/O dev conference in late May, and the new OS is coming to our beloved Android devices later this year. Android 6.0 is more of an evolutionary step, whereas Android 5.0 was a big leap forward thanks to its 64-bit ART runtime and all new Material Design.
However, Android M should not be dismissed as a minor update. In this post, I will try to explain why.Continue reading →
With Dalvik out of the picture, many people expected Google’s new 64-bit capable ART runtime to stick around for years, which it probably will, but it will get a major overhaul in the near future. In addition to offering support for 64-bit hardware, ART also introduced ahead-of-time (AOT) compilation, while Dalvik was a just-in-time (JIT) compiler.
Throw in new 10-core ARM processors and Intel mobile processors based on three different architectures, and you end up with spicy, Google-style hardware gumbo.Continue reading →
Google wants to bring Android to everything from phones and watches, to cars and smart television sets. Unlike Google TV, Android TV is much closer to standard Android. It runs Android 5.0 (at least in the initial launch version) and can be used on new TVs, as well as on standalone devices.
Android TV is not just about improving the way people consume TV content, it’s more about changing the way they do it.Continue reading →
While the Apple Watch is on track to be a commercial success for Apple and its shareholders, technologists are still not entirely convinced smartwatches have what it takes to conquer the market, at least not yet.
What does this mean for developers? What are the implications for other smartwatch platforms and companies behind them?Continue reading →
You are what you read – and most Toptal members and blog subscribers are software developers. So what do you read? Where do professional developers get the latest information about how their peers work and think?
Today, we will be taking a look at a small selection of popular developer blogs frequented by Toptal developers. We’re counting on you (our readers) to expand the list in the comment section.Continue reading →
Location-based applications on our mobile devices have changed the way we interact with mobile technology. The list of these applications is extensive and has had a major impact on our lives.
This article walks us through a step-by-step tutorial of how to determine the location of an Android device using Google Location Services API.Continue reading →
The extremely diverse and fragmented Android ecosystem poses certain challenges when it comes to testing. In this article, we take a look at some approaches that can be effective with tackling these challenges and ease the process of writing and automating tests.Continue reading →
Passwordless authentication has been the Holy Grail of security for years, but progress has been painfully slow. Until a few years ago, the technology to implement passwordless logins on a grand scale simply wasn’t available.
However, the industry juggernaut is slowly but surely changing this. There are a few technical, legal and even ethical considerations to take into account, but be as it may, biometric, passwordless authentication is here to stay.Continue reading →
Describing Nvidia Shield as a mere Android console would not do it justice. The console relies heavily on streaming and cloud computing, so it shouldn’t not be viewed as another standalone device.
Nvidia sees Shield as Netflix for games, as a comprehensive Gaming-as-a-Service (GaaS) platform. While it’s still part of the Android ecosystem, Shield could be bad news for some Android game developers, but it also creates a range of new and exciting opportunities.Continue reading →
Since programmers spend so much time using their favorite editor, they become extremely good at it, and are reluctant to learn to use any other. Even if offered a better editor for some specific task, the skilled programmer can get their existing editor to do the task just well enough, and therefore sees no need to learn how to use a new one.
This is what compelled me to try out a number of different editors and make the transition as easy as possible; I hope my experience saves you time and effort if you find yourself in the same situation.Continue reading →
Java, a sophisticated programming language, has been dominating a number of ecosystems for quite a while. Portability, automated garbage collection, and its gentle learning curve are some of the things that make it a great choice in software development. However, like any other programming language, it is still susceptible to developer mistakes.
This article explores the top 10 common mistakes Java developers make and some ways of avoiding them.Continue reading →
Reverse engineering and hacking are usually related to malicious activities that result in sleepless nights of engineers responsible for system maintenance.
Reverse engineering is a tool that we can utilize to find the flaws and improve our software in many aspects. This article shows us how to use these techniques to learn more about different implementations of web API.Continue reading →
This article provides an overview on building a great Android application, from defining an idea to releasing an application to the store. Toptal developer Ivan Dimoski gives us a chance to learn from his experience in making Ooshies, an Android Live Wallpaper designed to give you a hug and make you feel loved each time you interact with your Android device.Continue reading →
There are thousands of different Android powered devices, with different screen sizes, chip architectures, hardware configurations, and software versions. Unfortunately, segmentation is the price to pay for openness, and there are thousands ways your app can fail on different devices.
Regardless of such huge segmentation, the majority of bugs are actually introduced because of logic errors. These bugs are easily prevented, as long as we get the basics right!
Here’s a quick rundown of the 10 most common mistakes Android developers make.Continue reading →
Google Glass promises to revolutionize how we use our devices to interact with the world. But from a developer’s standpoint, what is so special about developing for the Glass? You’ll be glad to know that the answer is “Nothing!” Here’s a step-by-step tutorial that walks you through developing your first Google Glass app.Continue reading →
With the increasingly ubiquitous nature of mobile devices and applications, if you’re not already thinking about mobile apps, you probably should be. This post focuses on methodologies and tools to employ, and pitfalls to avoid, in the development of highly functional, intuitive, and easy-to-use mobile web apps.Continue reading →
Making a basic Android app is easy. But making it reliable, scalable, and robust, on the other hand, can be quite challenging. With thousands of available devices pumped out from tons of different manufacturers, assuming that a single piece of code will work reliably across phones is naive at best. Segmentation is the greatest tradeoff for having an open platform, and we pay the price in the currency of code maintenance, which continues long after the app passes the production stage.
In this post, we’ll walk through a solution: automated crash reporting with ACRA and a Cloudant back-end, all visualizable with acralyzer.Continue reading →
It’s always fun to put your programming skills on display. A while back, I figured it’d be cool to try and control my laptop via my Android mobile device. Think about it: being able to play and pause music, start and stop programming jobs or downloads, etc., all by sending messages from your phone. Neat, huh?Continue reading →
Starting a new remote gig, be it a contract project or a full-time job, can be a little intimidating if you’re used to going into an office day after day.
But this style of employment is growing in popularity, with some very notable companies lending it their endorsements.
I’ve worked remotely for years now on projects of various scales and durations. With this post, I hope to enumerate some of the best practices that I’ve picked up for working in a variety of situations. The advice here ranges from specific recommendations for software and hardware, to tips for hitting your team’s deadlines.Continue reading →