Welcome to qwexter blog

Hi! I’m Aleksandr, a Senior Android Developer with more than 7 years of experience. On this blog, I’ll share my thoughts about Android development, DevOps, and team management. I’ll also write about how I became a developer.

I hope my posts will be helpful to anyone interested in coding or improving their skills. Thanks for visiting!

Thank you, Advent of Code 2024.

Yep, I’d like to say “Thank you!” to people behind the Advent of Code 2024. It was my first time when I tried solve everything and I wasn’t complete it in time, but I still want to complete it and search “the right solution”. Developing an Android app isn’t required to work with complex CS-like problems. AAt least that’s what my experience tells me. The main problems are communication, finding PM and designer needs, and implementing smooth UI and comfortable UX for the shortest time. ...

January 7, 2025 · qwexter

Installation of an Android app by PackageInstaller

This post shares a brief overview and links to helpful open-source code examples related to the installation process of an Android application using PackageInstaller - the Android team’s recommended method for installation. The post is the second of a series related to the installation process: How an Android app installation works: Permissions and install by Intent Installation of an Android app by PackageInstaller (this) What’s going on inside the OS (coming soon) Brief overview of the installation process The API was introduced in Android 5 (API 21) and allows users to streamline installation, updating, and deletion processes. Another important feature is the ability to work with split APKs. This affects developers as well, because many developer-related features, like “Apply changes,” rely on the logic within. ...

October 10, 2024 · qwexter

How an Android app installation works: Permissions and install by Intent

While researching how Google Play Integrity API can potentially check the installation source, I found the installation process quite interesting. So I decided to dive into details of how we can install apps and how the operating system (OS) installs them inside. There will be a few parts: How an Android app installation works: Permissions and install by Intent (this article) Installation of an Android app by PackageInstaller What’s going on inside the OS (coming soon) To simplify, I suggest imagining a situation: we are working on “the App”, and one of the requested features is to install an app. I’d like to skip the download part and assume the APK is already on the device. We have several ways to solve it: ...

October 9, 2024 · qwexter

Clone wars (android app edition)

Intro While I was working at a health tech start-up, I had an unusual dialogue with our mobile apps support manager. Support: Why are we randomly showing users an advertisement? Me: Sorry? We don’t show anything like that. Support: A user who installed the app a few days ago said they saw an advertisement. Me: That’s strange. Can you ask which version they’re using and where they downloaded it? Is it from the official store? ...

September 19, 2024 · qwexter

Google Play Integrity API and installation sources checks

One of the last updates of Google Play Integrity API brought a new feature that allows you to check the installation source and “block” app navigation and suggest installation from Google Play. The feature forced some discussions in the community and misunderstanding. So let’s check what’s going on. The new feature allows you to prevent app usage and navigate to Google Play to reinstall the app from the “right” store. I got two main points from comments and discussions in the community that intrigue me: ...

September 18, 2024 · qwexter

How lateinit steal app memory.

Hi! In the last few weeks, I went through several technical interviews for an Android developer position, and one of the recurring questions was, “What are memory leaks? How can we create them? How can we find them?”. I found that some developers don’t know about the other side of lateinit var usage with Fragments and how easily it can cause leaks. In short: the lifecycle of fragments and views is different. When our fragments go to the back stack, the view should release memory, but if we use fragment-level fields with lateinit var, we keep a reference, and GC can’t clear outdated objects. ...

June 17, 2023 · qwexter