Skip to content

Development journal

Posts tagged: Android

Published notes filed under this topic.

RSS feed
Expo native builds

How to create Android and iOS app icons in Expo without Android cropping them

9 min read

Written by: Jonathan Reis on

Use one editable icon source, an opaque iOS raster, and a transparent Android adaptive foreground so launcher masks do not crop your artwork.

Expo Android release

Version, versionCode, and generated config: three numbers an Android release must align

8 min read

Written by: Jonathan Reis on

After nine Play uploads on versionName 0.1.0, lint overwriting production config, and ambiguous build script names, we documented SemVer rules, dev/prd commands, and why lint must not regenerate config.

React Native Ads

AdMob UMP in React Native: privacy messages are not just console setup

9 min read

Written by: Jonathan Reis on

A practical release checklist for AdMob UMP in an Expo/React Native Android app, covering GDPR messages, US state privacy messages, app store linking, and the SDK gate before ads can request.

React Native

Your React Native confetti renders behind the cards: sibling order, zIndex, and elevation

8 min read

Written by: Jonathan Reis on

A win-screen celebration overlay fell behind the result cards and dropped too fast. The cause was React Native's sibling paint order, not a missing z-index. Here is why zIndex alone is not enough on Android and how we fixed both bugs.

React Native

A hidden TextInput can't capture a hardware keyboard on React Native's New Architecture

8 min read

Written by: Jonathan Reis on

We wanted physical-keyboard input in a React Native game on Android. The classic hidden TextInput trick failed under Fabric because showSoftInputOnFocus is ignored. adb proved it, and a config plugin fixed it for good.

React Native Android

Disabling Android touch sounds in React Native without fighting Switch

6 min read

Written by: Jonathan Reis on

How one React Native sound setting ended up owning gameplay effects, Android tap feedback, and a double-toggle bug in a nested Switch.

Expo Native Builds

When an Expo upgrade turns your splash screen into a white screen

8 min read

Written by: Jonathan Reis on

A practical field note on fixing a missing native splash after an Expo SDK upgrade by moving from the legacy splash block to the expo-splash-screen plugin.

Android monetization

How to validate a Google Play test purchase with RevenueCat

7 min read

Written by: Jonathan Reis on

A field checklist for tying one Google Play test purchase to RevenueCat credentials, the Play Console order, sandbox data, SDK identity, and Sentry.

Quality before beta

An honest checklist before expanding an Android internal test

7 min read

Written by: Jonathan Reis on

How to separate what a Google Play build has proven from SDK, billing, ads, and observability gaps before inviting more testers.

React Native on Google Play

Publishing an Expo/React Native app to Google Play with a local AAB

7 min read

Written by: Jonathan Reis on

How to build a local Expo/React Native AAB for Google Play and still validate signing, Firebase, Sentry, AdMob, RevenueCat, and Play delivery like a real release.

React Native release debugging

When versionCode changes but JavaScript does not: a React Native release trap

6 min read

Written by: Jonathan Reis on

A release bug where Google Play installed a new Android versionCode while the React Native JavaScript bundle still reported the old Sentry release.

Mobile monetization

When does RevenueCat make sense instead of direct Google Play Billing?

6 min read

Written by: Jonathan Reis on

A margin and operations breakdown for deciding whether an indie app should pay RevenueCat or own Google Play Billing support itself.

Google Play in Brazil

How to prepare a Google Play Console account for publishing an Android app in Brazil

6 min read

Written by: Jonathan Reis on

A practical order for getting developer identity, payments, public profile, account groups, signing keys, and legal pages ready before a first Google Play upload.