Generated by All in One SEO v4.9.0, this is an llms.txt file, used by LLMs to index the site. # Andrzej Zabost ## Posts - [Blog posts](https://azabost.com/blog/) - All my blog posts - [How (not) to partition your disk](https://azabost.com/how-not-to-partition-your-disk/) - How to partition your disk to have a Linux system at the end of it - [Securing your Google service account key in builds](https://azabost.com/securing-your-google-service-account-key-in-builds/) - Establishing a reliable continuous delivery and deployment process is often very important as it might greatly reduce the length of time needed for the validation and verification of the software product. This is also true for Android projects, especially the ones aimed at short time to market. For me, one of the most crucial time - [A few things I like about React Native. And a few I don't.](https://azabost.com/a-few-things-i-like-about-react-native-and-a-few-i-dont/) - React Native is still a hot topic at the company. After spending some time with it, many of us have some thoughts and I think there is still a lot to say about it so I would like to share some of my observations and feelings. This post is going to be extremely subjective so - [Creating simple vector drawables in Android Studio](https://azabost.com/creating-simple-vector-drawables-in-android-studio/) - Using vector drawables is often much better than bitmap images for two reasons: they scale without losing definition and you need only one asset file which fits all screen densities. Sometimes I find it useful to create vector drawables by hand in Android Studio using SVG paths. If you are not yet familiar with it, - [Dockerizing Android builds](https://azabost.com/dockerizing-android-builds/) - Docker is a great container platform that helps building a true independence between applications, infrastructure and developers. It provides an isolation which supports building modern continuous integration environments with ease and at low cost. Building Android applications The easiest way to build an Android app is to use Android Studio, but how one can build - [Injectable Android ViewModels](https://azabost.com/injectable-android-viewmodels/) - In the following post I'm going to show a simple (almost boilerplate-free) yet powerful implementation of the view models dependency injection on Android using Dagger. If you haven't read about the latest Android Architecture Components libraries, the MVVM pattern and the ViewModel class yet, please read it first as I don't explain it here. The - [Testing Android ViewModels](https://azabost.com/testing-android-viewmodels/) - In my previous post I described how to implement injectable Android view models using Dagger and ViewModel library from Android Architecture Components. In this post I will show a simple way to unit test the view model created then. You can find the full code in the same repository as previously on GitHub. The structure - [Android Manifest placeholders](https://azabost.com/android-manifest-placeholders/) - What are they? Android Manifest placeholders allow you to put variables into the Manifest that is otherwise completely static. Why would you need such functionality? Actually, it depends on your projects. It's probably most useful when you have multiple build variants with different Manifest configurations. Multiple Manifests Of course, the easiest way to configure Manifest - [Microbenchmarking on Android](https://azabost.com/microbenchmarking-on-android/) - Since Kotlin becomes more and more popular, especially amongst Android developers (and it's officially supported by Google), some people decided to compare its runtime performance with Java. After reading a few articles I wanted to test it myself and now I'm ready to share some of my observations and experiences. What is it about? Microbenchmarking - [Don't fool yourself with lateinit modifier](https://azabost.com/dont-fool-yourself-with-lateinit-modifier/) - Kotlin language provides a nice and clean way to handle nullable variables in code so that it is less error prone. Unless you do it all wrong, of course. lateinit modifier Normally, all non-nullable properties in Kotlin classes must be properly initialized. You can do it in several ways: in primary constructor, in initializer block(s), - [Implementing in-app language change](https://azabost.com/implementing-in-app-language-change/) - Android resolves language- and culture-specific resources based on the system locale setting. This is a desired behavior that makes perfect sense. Despite it's officially not encouraged you may still need to write an app that allows the user to change its language without leaving it. In this article I will show you one of the - [Top 3 reasons why you should start with Android](https://azabost.com/top-3-reasons-why-you-should-start-with-android/) - People who start their professional coding adventure, whether they are still studying, just graduated or changing profession, may often hesitate what programming platform they should start with. So let me mention a few reasons why I think it's a great idea to start with Android. - [Android ViewModel injections revisited](https://azabost.com/android-viewmodel-injections-revisited/) - In one of my previous posts I have described how to implement a ViewModel factory that was able to provide ViewModels with their dependencies injected, e.g. an API client, and it was good enough for me at that time. Later on, thanks to Piotr, we've found out even better and simpler approach with an additional - [Watch out for large strings crashing your Android app](https://azabost.com/string-too-large-in-android-resources/) - Large strings in Android resources may crash your app in runtime. This post is about the actual cause of the issue and how to deal with it. - [Forward compatible enums in Kotlin](https://azabost.com/forward-compatible-enums-in-kotlin/) - A few years ago Adam outlined 8 steps to keep your API sane in his blog post which I really recommend if you haven't seen it yet. The second step there, "be liberal in what the app accepts", is quite a specific one because it is applicable not only to the backend side of the - [Migrating away from Bintray/JCenter when there is no alternative repository](https://azabost.com/migrating-away-from-bintray-jcenter-when-there-is-no-alternative-repository/) - TL;DR version If you can't find a library (Maven dependency) you need for your project after Bintray/JCenter (or another similar service) shutdown, but you still have it in your local Gradle cache, you can easily set up your own local Maven repository with that library as a replacement and keep the files for as long ## Pages - [Home](https://azabost.com/) - Senior Software Engineer | Tech Lead | Mentor | Consulting | Need help with your app's quality or looking for someone to help you grow? Let's get in touch. - [Contact](https://azabost.com/contact/) - Let's get in touch — contact me via this form. - [Fiszki](https://azabost.com/fiszki-privacy-policy/) - (PL) Polityka Prywatności Ta aplikacja nie zbiera ani nie przetwarza żadnych danych osobowych użytkownika. (EN) Privacy Policy This application does not collect or process any personal data of the user. - [Kursy Walut NBP](https://azabost.com/kursy-walut-nbp-privacy-policy/) - (PL) Polityka Prywatności Ta aplikacja nie zbiera ani nie przetwarza żadnych danych osobowych użytkownika. (EN) Privacy Policy This application does not collect or process any personal data of the user. - [Apps](https://azabost.com/apps/) - Kursy Walut NBP Google Play and the Google Play logo are trademarks of Google Inc. ## Categories - [All](https://azabost.com/category/all/) ## Tags - [dev](https://azabost.com/tag/dev/) - [kotlin](https://azabost.com/tag/kotlin/) - [linux](https://azabost.com/tag/linux/) - [featured](https://azabost.com/tag/featured/) - [android](https://azabost.com/tag/android/) - [builds](https://azabost.com/tag/builds/) - [docker](https://azabost.com/tag/docker/) - [gradle](https://azabost.com/tag/gradle/) - [manifest](https://azabost.com/tag/manifest/) - [dagger](https://azabost.com/tag/dagger/) - [large](https://azabost.com/tag/large/) - [string](https://azabost.com/tag/string/) - [aapt](https://azabost.com/tag/aapt/) - [apk](https://azabost.com/tag/apk/) - [crash](https://azabost.com/tag/crash/) - [forward compatibility](https://azabost.com/tag/forward-compatibility/) - [enum](https://azabost.com/tag/enum/) - [serialization](https://azabost.com/tag/serialization/) - [maven](https://azabost.com/tag/maven/)