Android
433 bites tagged Android — interview questions with model answers, and 60-second explainers.
Generating a signed release APK or AAB
Create a keystore, reference its credentials via gradle.properties (gitignored), wire a release signingConfig in build.gradle, then assembleRelease or bundleRelease. Android release signing.
Purpose of RCTBridgeModule and ReactContextBaseJavaModule
These declare a class as a discoverable native module, provide the JS-facing name, and let RN export methods to JavaScript. understanding the native module contract.
Android-only native module called safely from JS
Write a ReactContextBaseJavaModule with an exported method, register it in a package, then guard the JS call with Platform.OS or a null check on the module. building a platform-specific native module and guarding calls.
Android App Bundles versus Universal APKs
An AAB is an upload format; Play generates per-device APKs via dynamic delivery, shrinking download size. Play distribution format. thinking an AAB installs directly on a device like an APK.
What is Hermes and its advantages over JSC?
Hermes is an open-source engine optimized for RN, with faster startup via precompiled bytecode and lower memory use. knowledge of the JS engine powering RN. claiming Hermes JITs or always beats JSC at peak throughput.
Requesting runtime permissions on iOS and Android
Declare permissions in Info.plist and AndroidManifest, then check status and request at runtime just before use, handling granted, denied, and blocked. Permission lifecycle awareness.
Conditional logic with Platform.Version
Platform.Version is a number on Android (API level) and a string on iOS; gate features by version to use new APIs only where supported. OS-version-aware branching. comparing the iOS string version as a number.
Platform-specific file extensions
Name files Component.ios.js and Component.android.js; import without the extension and the bundler picks the right one per platform. knowledge of platform file resolution. thinking you must import the extension explicitly.
Building a native module from scratch
Write a native module class with exported methods or constants, register it via a package, then expose a typed JS wrapper. bridging JS to platform APIs.
Delivering one color token to three platforms
One JSON source, generated CSS variable for web, color resource XML for Android, and Swift/asset for iOS. platform-specific token output. pasting the same hex by hand into each platform.
R8 shrinking, obfuscation, and optimization
Shrinking removes unused code/resources, obfuscation renames symbols to short opaque names, optimization inlines and simplifies; shrinking also strips unreachable code that could be exploited. what R8 does and why.
Build a custom layout in Jetpack Compose
Use the Layout composable with a MeasurePolicy, measure each child once with constraints, then place children and report your size. understanding Compose's measure/place model.
Android Becomes an Intelligence System: I/O 2026 Recap
Google I/O 2026 repositions Android as an intelligence system with ADK for Kotlin, Gemini Nano 4 on-device inference, and Compose-first UI, forcing teams to rethink app architecture around AI agents instead of static screens.
Kotlin 2.4.0 Ships Stable Context Parameters and UUID API
Kotlin 2.4.0 ships stable context parameters, a built-in UUID API, and Java 26 support. Context parameters replace manual dependency threading through call chains.
Android CLI 1.0 Stable Unlocks Headless CI
Android CLI 1.0 went stable at I/O, exposing project scaffolding and device management commands that run without Android Studio. The release finally lets teams script full build pipelines on headless agents and remote dev boxes.
Unify Android EventBus and RxJava with Kotlin Flow
Mixing EventBus, RxJava, and Kotlin Flow in Android codebases creates memory leaks and GC pressure from stream wrapping. Operator translation and lifecycle mismatches drive engineering debt.
I/O 2026 Standardizes AI Server-Driven UI for Android
I/O 2026 made A2UI, Remote Compose, and AppFunctions first-class Android primitives, validating AI server-driven UIs. KMP plus Compose Multiplatform renders cross-platform from one codebase.
isCoreLibraryDesugaringEnabled Nears End of Life
isCoreLibraryDesugaringEnabled and desugar_jdk_libs 2.1.3 are being phased out as Google modularizes Android system updates, ending the j$ namespace workaround for java.time on legacy devices.
Koog 1.0 Stabilizes Kotlin AI Agent Framework
Koog 1.0 locks APIs for one year in JetBrains' Kotlin AI agent framework, adding local Android LiteRT inference and OpenTelemetry. JVM teams can build production agents without breaking changes. Adopt stable core first, then add beta features as needed.
Kotlin 2.4.0 ships Swift package support and Java 26
Kotlin 2.4.0 adds Swift package dependencies for Native, Java 26 for JVM, and WebAssembly Component Model. Multiplatform teams can consume Swift libraries directly and target newer Java. Upgrade via IntelliJ IDEA, Android Studio, or Gradle.
How does WorkManager guarantee task execution across reboots and process death?
Tests your understanding of WorkManager's durability under process death. Strong answer: Room database persists requests; JobScheduler or AlarmManager executes them; BroadcastReceiver reschedules on reboot.
Architect periodic and on-demand sync with WorkManager
Tests combining periodic and push WorkManager requests safely. Outline: one Worker class, PeriodicWorkRequest hourly and OneTimeWorkRequest on push, with ExistingWorkPolicy.KEEP plus constraints. Red flag: two Workers, no deduplication, or ForegroundService.
How would you implement a constrained photo upload with WorkManager?
Tests knowledge of WorkManager constraints and retry policies for deferrable background uploads. A strong answer names OneTimeWorkRequest with Constraints for charging and unmetered network, plus BackoffPolicy for retry.
How do you implement OAuth2 token refresh with Retrofit Authenticator?
Implement authenticate() with a blocking refresh, new Request with new token, Mutex for parallel 401s. Distinguishing Authenticator from Interceptor for 401 retry and sync.
Get Android bites daily.
Five a day, five minutes, offline. With quizzes so it sticks.
Open testing — you’ll join as an early tester.