fobo66

Android Developer
Blue UTP cord

Mocking network requests with RetrofitMock

Hello! Some time ago I stumbled upon a library inside Square’s brilliant Retrofit repository called retrofit-mock that allows you to build dummy Retrofit clients for usage in tests without OkHttp’s MockWebServer or adding mocking library like Mockito or Mockk. Thing is, it’s not documented well, and it was a bit of a challenge to set it up and make it work, but the end result works quite well. So, I decided to write this article with some introduction for the retrofit-mock usage....

February 9, 2024 · 6 min · fobo66
OpenGL shader example

3D graphics guide for Android: OpenGL and related concepts

Hello! Some time ago I learned about demoscene in the BBS network in the early 90s. People have created amazing graphical images purely with Assembly code on a very limited hardware, and it was so great that even after all these years enthusiasts continue to create new demos and preserve old ones all over the world. I got inspired by the demoscene and decided to try something like this myself. I’m not familiar with Assembly (and, frankly, don’t want to touch it), so I chose to create some demos on Android using OpenGL....

July 13, 2023 · 9 min · fobo66

Privacy Policy for WearMMR app

Privacy Policy Andrei Mukamolau built the WearMMR app as an Open Source app. This SERVICE is provided by Andrei Mukamolau at no cost and is intended for use as is. This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service. If you choose to use my Service, then you agree to the collection and use of information in relation to this policy....

July 12, 2022 · 4 min · fobo66

Privacy Policy for Valiutchik app

General Valiutchik (“App”) is developed by one main developer. Privacy Policy (“Policy”) describes how information obtained from users is collected, used and disclosed. By using the App, you agree that your personal information will be handled as described in this Policy. This policy in Belarusian language can be found here | Палітыка канфідэнцыяльнасці на беларускай мове знаходзіцца тут. Information being collected App queries info about user’s approximate location, with your prior permission, in order to determine correct currency rates to display....

June 29, 2022 · 1 min · fobo66
Phone with maps app

Migrate from Play Services Location to Android's LocationManager API

Hello! After the announcement from Microsoft about Android apps support in Windows 11, I was excited to try to publish my app to Amazon Appstore, so I can discover more form factors and attract more users. However, there was one caveat: Windows can only run apps without Google Play Services dependency, since it will not be present in Windows and in Amazon Appstore. So, I started looking for workarounds. My app was using only FusedLocationProviderClient API from Play Services, and only to load current location of the device, so I found a way how I can achieve similar results in more Kotlin-friendly way with help of existing Android SDK Location API....

June 8, 2022 · 9 min · fobo66

Bookcrossing Mobile: postmortem

Hello! Recently I received copyright infringement notice about my favorite pet project, Bookcrossing Mobile app, and was asked to remove the app from Play Store. On this sad note, I decided to discontinue its development completely and keep its code open and untouched. In this article, I will describe my journey with development of this project, some cool tricks I’ve learned, as well as provide some description of the project for anyone who may be interested in it....

August 28, 2020 · 19 min · fobo66
Gradle Build Tool

Understanding Gradle for Android developers

Hello! For a long time I wanted to migrate my Bookcrossing Mobile app to Gradle Kotlin DSL. But I’ve used remote Groovy function for loading API keys from .properties files. Here is a gist with that function. Despite it’s a simple function, I didn’t want to write this for each of my projects, and sharing code via gist was somehow a good idea. I wanted to share this code in more common way, via plugin, so I decided to create my own plugin....

July 16, 2020 · 11 min · fobo66

Musings about quality: what I've learned after migrating my projects to AndroidX

Hello! Recently I decided to get back to my old project, Bookcrossing Mobile app, to update it to the recent SDK versions and try out new things and approaches in Android development. Luckily, it was fine now, migration went smoothly, much better than at first attempt year ago. However, there were some important points that I’ve discovered during migration, and I believe these point can simplify developer’s life in the future....

November 28, 2019 · 7 min · fobo66

Notes from RSConf Mobile Day

Hello! Just wanted to share my quick notes from the RSConf Mobile day’s most important sessions. These notes are chaotic and quite short, but they contain some valuable insight shared by the brilliant speakers. Wake up, Neo Talk was about common problems in software development. Security is broken: more than 1 billion people are affected. And we don’t pay much attention. Our apps are broken or incredibly complex or unusable....

August 9, 2019 · 2 min · fobo66
Logs

Remote logging for mobile apps

Hello! In this article, I’m going to review some of the existing services that provide you the possibility to perform logging in production in a safe way. No more struggle with attaching log files to feedback and spending hours on figuring out what went wrong without any clues. Generally, logging in production is considered harmful, because you can expose sensitive information from your application to hackers. It’s a serious security trait, but disabling logs in production may not be the best solution: you won’t be able to see the state of your app during investigation of the strange crashes or suspicious feedbacks coming from users....

April 4, 2019 · 4 min · fobo66