You're thinking about building an Android app but you're not technology-savvy? No problem, we'll walk you through the ins and outs of mobile Android development for startups.
When deciding to build an app, the focus should be on its core functionality, not necessarily the technologies used for building it, so let's look at the things Android as a development platform excels from a feature-wise perspective.
Android provides all the tools you need for developing ML features in your app, from building and training your machine learning models to deployment as app features. Using ML techniques will help you automate many processes of your app or business which will drive down your recurrent costs. Some examples of ML features that Android supports and would bring great value to your startup are text recognition (OCR), face detection, barcode scanning, image labeling, object detection, and object tracking, language identification, smart replies, or translation. Although the whole machine learning framework is pretty new on Android it is robust enough to start deploying ML features in your app which will also become better and better with every framework improvement.
AR is still a new field and many startups ignore or are not aware of the value AR could bring them, or even when they take AR into account we get many questions about what is possible on Android when it comes to Augmented reality. The answer to this really depends on your needs and requirements because AR is highly dependent on the hardware it runs, but with the adoption of new devices, the gap closes quickly. There are two big directions an AR project can take, using Unity or ARCore, both have their advantages and disadvantages. The real power of AR is more obvious when it is combined with machine learning. Without getting into too much detail, AR + ML could help you place virtual objects into the real world, detect real-world objects like balls in sports, human body position and movement, and taking measurements of the real world. This could really take your app to the next level and make friction-free user stories for your app.
One of the latest technologies introduced by Apple is App Clips, which offers users the possibility of interact with an app before downloading it. It's a great way for startups that operate in the physical world to interact with their customers. For instance, restaurants or mobility startups could offer functionalities such as renting a car or ordering a food dish without needing to download an app for that. App Clips are also great for ticketing or offering information at an event or conference, as the user won't have to download an app to consume or consult digital content but they will able to do it in a user-friendly manner, just like they would use a native app. Another technology provided by Google that could help you reach a wider audience is Instant Apps. Adding the Instant App feature will allow your users to try your app directly from the Google Play store without installing it. This provides a great opportunity to get some exposure to your app and convert potential users to download your app. For instance, restaurants or mobility startups could offer functionalities such as renting a car or ordering a food dish to try and if the user is pleased by your service he will become a recurrent user and download the app. Another use case could be one-time events where downloading the app for a one-time use could seem too much work. The Instant app could provide all the digital content and information needed just like a native app but without the friction that an app install brings.
This technology got more and more adoption lately and became a really convenient way for users to buy better mobile plans, especially when traveling abroad directly from an app without having to switch their sim cards. The use of eSim however is not limited to just this, with the development of wearable devices eSim allows to use of the same phone number on multiple devices or have multiple phone numbers and mobile plans on the same device. Like Revolut changed the traditional way of using your card giving you more control over your finances, eSim allows you to do the same thing for mobile plans.
Android TV, wearables, and smart devices
The Android development is not limited to just smartphones nowadays, there are a lot of opportunities outside of the smartphone world. Google tries to build a whole ecosystem with Android being the infrastructure for this. Whether your startup is focused on streaming, well-being, sports, or smart devices, it will be a huge advantage to have your apps running on multiple types of devices. Because these markets are not as mature as the smartphones market the entry bar is lower and there is more place for growth as the user adoption of these new devices grows.
If you’re reading this, then most probably you already know what you’re trying to build, however, we hope the above-mentioned technologies got you excited and made you think about how you can build an even better product. Let’s now talk a bit about what’s a mobile app made of and how is it made.
At appssemble, we only do native development because it allows us to use the latest and shiniest tools from Android and gives us full control over the development of the product so we can ensure a high-quality standard for all the products that we build.
What's a tech stack you ask? A tech stack is a set of tools and technologies used for building a certain kind of product. As an analogy to cooking, if an Android application would be an apple pie then the tech stack would be the ingredients that are required for cooking a pie (flour, sugar, butter, apples, etc.). Our job when developing an app is similar to what a cook does, it picks the best ingredients (tech stack) and with it does its magic to create delicious dishes (in our case, mobile apps).
At the basis of every tech stack, we have the programming languages used, for developing a native Android application we can use:
- Kotlin — Google added support for Kotlin in Android in 2017 and it already became the standard language for developing Android native apps. It is part of the modern programming languages with a focus on more concise syntax, better error checking, security, and performance. It is fully interoperable with Java which allows to easily migrate older Java Android apps to Kotlin easily. Picking Kotlin will also reduce the development time and will make the project easier to maintain in a long time.
- Java — is probably the most popular programming language. It is an object-oriented programming language first released in 1995 and became used because code written in Java worked across many devices. There are a lot of libraries still built in Java for Android for new projects it is not the first choice anymore.
One of the most important things about a mobile app is how does it look like. Android offers us, developers, great tools for building the user interfaces and the user interactions:
- Android XML — the traditional way of building user interfaces on Android is declaring UI components in XML files. This is a mature framework and comes with all the tools and support needed to build rich and complex user interfaces on Android. New user interface components were added over time which made building new UIs increasingly easier.
- Material design — if you are an Android user you definitely saw material design in action many times. It is a set of guidelines and resources developed by Google with the intent to standardize how the apps look on Android. While we can choose to follow or not these guides, following them would make the app seem familiar, make the user more conformable using it and visually it will feel better integrated with other apps.
- Jetpack compose — is a completely new, modern toolkit introduced by Google in 2019 for building user interfaces and user interactions. It is not compatible with the traditional XML way of building the UI and being new there are some limitations when using it feature-wise, but also regarding the support and tools available for it. We would not advise starting a big project with jetpack compose but for some proof of concepts, it could be a right fit.
- OpenGL — is the standard on Android when it comes to rendering complex 2D or 3D scenes in graphic processing or graphic-intense apps such as games or simulators. OpenGL is well established and well documented in the industry with over 28 years since it was launched.
The vast majority of apps need some data for them to function, that data can be anything, from user details, friends list, to recipes or images. But where do they come from or where do they reside?
- APIs / Third-party services — mmost of the apps have a backend server or a service somewhere that handles the data needed for the app. They store and manipulate app-specific entities such as user details, accounts, passwords, balances, photos, etc. For an app to be able to use an external, third-party server, it needs to be connected to a network, so the app won’t function without an active internet connection.
What if your app doesn’t really need a server or a backend solution to store all the data? What if your app just needs to use some existing services and store some user data? In that case, there are a number of solutions that allow storing small or large sets of data locally in a performant and secure fashion.
- DataStore — is part of the new Android Jetpack library and it comes as a modern way of storing on the phone small sets of data, replacing the old SharedPreferences way of doing it. The integration in both new and existing apps is easy and the syntax is simple and concise. Performance is also outstanding when storing and retrieving data from the DataStore.
- Room — unlike DataStore, Room is a real database. It really shines when working with large amounts of data. If your app needs to work with hundreds of thousands of data points and still feels fast and snappy Room is the right tool to use for storing the data. Room can also be used as a caching system for your app, where a synchronization mechanism will keep your local data in sync with the data on your server. An example of an app that could take advantage of Room would be a navigation app for hikers, as they could easily lose their internet connections.
Now that we've talked about technologies, and how to build an app, it's important to also talk about how a mobile app can be tested.
- Manually — not specific to Android but still one of the most common ways of testing an app is through manual tests. When manually testing an app QA cannot only check the functionality of a feature but can also check how it integrates with other features, if the design is consistent, or if the app handles well all the corner cases — such as receiving a phone call when doing a certain task. They can also validate more accurately the performance and the user of the app on different types of devices with different screen and hardware configurations.
- JUnit — is the Android unit testing framework that can be used to test the logic of an app. Using JUnit you can write test cases to test both the happy flow logic but also the corner cases. Basically, every Android project comes with JUnit already integrated it is up to the developers to write test cases that test their logic. It also provides a way to integrate instrumentation in the unit tests, to be able to test the performance alongside the correctness of the code.
- Espresso — is the Android UI testing framework that provides all the tools to write and run UI test cases. It also provides a way to record the actual test cases such that after manually testing once the app espresso can run that test again as many times as needed. This helps identify regressed issues and also reduces the need for manual testing and human error significantly.
All of the above-enunciated technologies from Android can be used for developing mobile apps through the Android Studio, the IDE (Integrated Development Environment), offered by Android freely for software development.
As we’ve seen, Android is a mature environment that gives developers who want to build apps a rich ecosystem of tools and technologies for development and offers a lot of innovative technologies for the next generation of mobile apps.