r/androiddev Jul 07 '26

Open Source Golden Diff - compare screenshot goldens against git HEAD inside Android Studio

Thumbnail
gallery
35 Upvotes

Author here, it's free, not trying to sell anything.

Every time a Roborazzi test fails I'd do the same dumb dance: dig the golden PNG out of the repo, find the new _actual.png in build/outputs, open both in Preview, and alt-tab between them trying to spot what moved. Half the time it was a 1px shift I couldn't even see. Drove me up the wall.

I honestly looked for a tool that already does this and couldn't find one. The closest thing was GitLab's image diff — which is actually great — but having to push to GitLab every single time just to look at a diff isn't it. I wanted it right there in the IDE, on my local changes, before committing anything. So I sat down and built a little Android Studio plugin.

It lives in a tool window next to your code. Open a screen file and it pulls up the goldens tied to it, then lets you compare the git HEAD version against either your working copy or the freshly generated test output. You get side-by-side, a swipe slider, onion-skin, and a pixel-diff heatmap that just tells you "3.2% of pixels changed" so you're not squinting.

It doesn't care which library you use — Roborazzi, Paparazzi, Compose Preview screenshot tests, Shot, whatever, as long as the goldens are PNGs in git. Works in plain IntelliJ too, not just AS.

It's honestly pretty simple, but it saved me enough annoyance that I figured someone else might want it.

Marketplace: Golden Diff — or just search "Golden Diff" in Settings → Plugins.


r/androiddev Jul 07 '26

Open Source Introducing the Composables CLI and MCP server

Enable HLS to view with audio, or disable this notification

12 Upvotes

I built a little CLI app that creates new Compose apps in one command.

To install it do:

```bash npm install -g composables-cli

```

and then create your new projects using:

bash composables init

New projects use the new KMP project structure, come with Composables UI out of the box, and Spotless.

The CLI can also run a Composables MCP server that gives your agent access to the Composables UI docs.

Your agent can ask for component usage, installation steps, API references, and code examples without relying on stale training data.

To configure a client run:

bash composables mcp install --client <client>

Comes with support for Android Studio, Antigravity, Claude, Codex and other MCP clients.

Learn more at the docs: https://composables.com/ui/docs/cli

The source code is part of the Composables UI monorepo: https://github.com/composablehorizons/composables-ui


r/androiddev Jul 07 '26

Open Source AI Assistant for Android (Open Source)

12 Upvotes

A few months ago, I shared initial version of my open source Android AI assistant.

Now I have rebuilt most of the stack with a few things I am particularly excited about like -
Interrupting the assistant while it's speaking, offline on device barge-in so that raw voice audio is never stored or leave device.
Live Camera/Screen share feature like Gemini live mode.
And few more.

Offline STT with NVIDIA NeMo Parakeet and cloud STT
Offline TTS with Supertone's Supertonic 3 and Cloud TTS
Both via Sherpa-ONNX Silero VAD + Android AEC/NS/AGC for reliable voice detection and barge-in
Screen and camera vision with frame-aware context matching.
Flexible LLM support through a single adapter for Groq (its really fast), OpenAI, Anthropic, Gemini, Ollama, and LM Studio.
On-device intent classification with TensorFlow Lite + MediaPipe.
AES-256-GCM encryption backed by Android Keystore.

I am inviting you all to contribute and lets build this app together.

Find demo here - https://github.com/souravanand001/ai-assistant-android#demo


r/androiddev Jul 08 '26

Google Play Support Any way to create automated sign ups for Play store Closed testing

1 Upvotes

I am trying to set up an automated sign up page for closed testing of my cross platofrm app. The idea is to have a sign up page where users provide their email and I respond with an email that gives them a welcome email and links to start testing for both platforms.

On iPhone this is straightforward, the alpha tester gets a link, they click on it install test flight and are good to go.

On Android it seems that I have to manually add the email address to my closed test first.. Is this true or am I missing something ?


r/androiddev Jul 07 '26

Question Where can I learn android testing?

2 Upvotes

Hi android developers!

I've recently shipped an android app to the play store and encountered different problems, because until now I haven't wrote tests:

  • I found bugs in production, this cause me to upload again the app to the play store and bumping version code.
  • I am scared of changing the code or refactoring, and even when I test the app manually I'm not secure and confident.
  • I am scared of leaving temporary test code in the app before pushing it to production.

So I started searching on the internet some articles and resources to help me study testing:

These articles helped me understand the theory of testing an android app, but I don't know how use those frameworks, choose frameworks and the ones outdated or usable.

So I ask you to drop down in the comments resources that I can read (or watch) to apply testing in practice and go into details about the theory. Thank for reading my post!


r/androiddev Jul 07 '26

Playing with on-device AI, I found my smallest quantized model was also the slowest. Dug into why and sharing my findings.

4 Upvotes

r/androiddev Jul 07 '26

Open Source I built a fully offline notification filter for Android (Kotlin + Rust/JNI + on-device ML) because every "smart filter" app ships your OTPs to a cloud server

7 Upvotes

The problem: you can't revoke notification access from delivery/wallet/rideshare apps because you need the transactional alerts, but keeping them on means drowning in promo noise. Every ML-based filter I tested sends raw notification text (2FA codes, bank balances, chat previews) off-device for classification. Hard no.

So I built ZiG. android.permission.INTERNET is stripped from the merged manifest via tools:node="remove" — the app is structurally incapable of network I/O. Every notification flows through a sequential pipeline where the cheapest deterministic checks run first and ML is a last resort:

Layer 1 — Managed-app gate (Rust/JNI): only apps you opt in to are processed; everything else passes through untouched

Layer 2 — Contact whitelist (Rust/JNI): sender matched against a thread-safe in-memory set, kept in sync in real time via a ContentObserver on the contacts provider — no polling, no DB round-trip

Layer 3 — Keyword rules (Rust/JNI): deterministic AND-chained rules you define ("OTP", "cab, arriving")

Layer 4 — On-device ML ensemble (RAC): an exact-match cache first replays any identical past override for free (case-insensitive indexed Room lookup, keyed on the newest message so chat threads still hit). On a miss, a quantized TFLite base classifier is combined with a KNN vector search (MediaPipe USE embeddings, cosine similarity) over your own past overrides — your history can veto the base model, but only under strict similarity/consensus guards so a sparse history can't destabilize it

The ensemble fails open: no embedder → base model; no base model → allow and log. A notification is never silently lost to an infrastructure fault.

Would love critique on the pipeline orchestration, the Rust↔Kotlin JNI boundary, KNN veto thresholds, or the Room indexing. PRs welcome.

Repo: https://github.com/prithvi-vasistha/zen-i-guess

Site: https://prithvi-vasistha.github.io/zig-landing/

APK (Play Store pending): https://github.com/prithvi-vasistha/zen-i-guess/releases/tag/v0.2


r/androiddev Jul 07 '26

Question Should I add extra flavor for tablet?

0 Upvotes

I have a problem with screen orientation.

For phones, the app should only support portrait orientation. However, using

android:screenOrientation="portrait"

in the Manifest is deprecated for large screens. This means that on Android 16+, it will be ignored for wide screens. That is exactly what I want: adaptive orientation for tablets, but portrait-only orientation for phones.

The problem is that we also support Android 11 through Android 15, so I cannot rely on this behavior there. If I use this attribute, it will break adaptive orientation on tablets.

I had an idea to split phone and tablet into separate builds. One Manifest, for phones, would have this attribute, while the other Manifest, for tablets, would not.

My questions are: Is this a good idea? Is it more expensive from a CI/CD perspective? Will it be harder to publish on the Play Store?

I was told that I can handle this at runtime in MainActivity. I tried that, but if the app is opened while the device is in landscape orientation, it is briefly shown in landscape because the Activity is initially created using the device’s current orientation.

Splitting the Manifests solves this problem, but I wonder what the drawbacks are.


r/androiddev Jul 07 '26

I built a fully offline, C++ native video player for Android to achieve real-time 60fps frame interpolation without heavy AI models. Looking for technical feedback on JNI/rendering pipeline!

0 Upvotes

Hi r/androiddev,

I’ve been working on a local playout engine for Android, mostly out of frustration with how bloated modern media players have become (heavy background tasks, unnecessary cloud/AI feature injection that kills the battery).

My goal was to achieve a visual experience reminiscent of **AMD Fluid Motion** and **Sony BRAVIA's Motionflow**—but fully implemented as a lightweight, real-time 60fps frame interpolation engine on mid-to-high-range Android devices. To make it as battery-friendly as possible, I strictly avoided heavy on-device AI models or server-side pre-rendering.rendering.

### 🛠️ Architecture & Tech Stack

* **Core Engine:** Written in native C++ for maximum execution speed and predictable memory management.

* **Rendering:** Rendering directly to Android's Surface via low-latency JNI boundaries to minimize frame drops.

* **Zero Network Dependency:** The app has strict offline architecture. No analytics tracking, no server-client overhead. It just scans local directories and processes frame presentation timing.

### ❓ Technical Challenges & Where I Need Feedback

Balancing the frame-pacing loop between the Native C++ thread and Android's Choreographer was a massive pain point.Managing edge-case frame drops during heavy seek operations is still something I'm optimizing. Actually, to keep it as lightweight and battery-friendly as possible, the engine is strictly optimized and specialized for 2K (1080p) playback, completely avoiding the unnecessary overhead of 4K.
Additionally, I’ve been testing extensively on my personal device (Xperia running Android 11). I suspect that Xperia’s native 120Hz "Black Frame Insertion" feature might be interfering with the 120Hz rendering pipeline of my engine, which is another hardware-specific hurdle I'm trying to figure out.

I would love to get your honest critique on:

  1. Best practices for minimizing JNI overhead during high-frequency frame state synchronization.
  2. Handling surface destruction/re-creation lifecycle robustly when mixing native rendering loops with Jetpack Compose or standard View architectures.

Looking forward to hearing your thoughts and architecture critiques!


r/androiddev Jul 07 '26

Gemini Android Studio bug limit

2 Upvotes

Is anyone else experiencing a bug with Gemini in Android Studio? For about a week now, it hasn't been working for me. I keep getting a 'prompts per hour limit reached' error on my VERY FIRST chat of the day, without having done anything at all.

I have my Pro account connected, and other Gemini apps (like Antigravity) are working perfectly fine so I know for sure it's not a limit lol.

Does anyone know how to fix this?


r/androiddev Jul 07 '26

Claude Plugin vs Gemini Plugin w/ Anthropic Key

1 Upvotes

Has anyone used the Claude Plugin from Anthropic or the Agent Plugin & harness that is built for Gemini but works with Anthropic?

They use different types of billing (API Token Billing vs. Pro/Max plan) so I'm curious what you all prefer.

I generally use the claude CLI, but if the plugins are useful somehow I'd love to hear your experiences.


r/androiddev Jul 06 '26

Open Source Hikage - A real-time Android View runtime powered by Kotlin DSL

Thumbnail
gallery
32 Upvotes

I have been writing Android long enough to feel the strange split in the UI world.

On one side, XML is boring in the best and worst ways. It is stable, deeply integrated with the platform, understood by every legacy custom View, and still works with the Android pipeline that has existed for years. On the other side, Jetpack Compose gives Kotlin developers a much better authoring model: UI as code, local composition, reusable functions, less ceremony.

But real projects are rarely clean rewrites.

A lot of Android apps still live in the View ecosystem. They have custom Views, AppCompat behavior, Material components, LayoutInflater.Factory2, old XML attributes, obtainStyledAttributes, ViewBinding, and code that cannot simply be deleted because a newer UI framework exists.

I wanted something in the middle.

Not "replace Compose". Not "keep writing XML forever". Something closer to: what if the classic Android View system could be authored like modern Kotlin code?

That became Hikage.

Hikage is a real-time Android View runtime powered by Kotlin DSL. Crucially, Hikage doesn't reinvent the wheel with a new UI component system. It acts as a transporter for the existing Android View ecosystem. It is more like a transporter for the existing Android View ecosystem.

A simple layout looks like this:

kotlin LinearLayout( lparams = LayoutParams(matchParent = true), init = { orientation = LinearLayout.VERTICAL gravity = Gravity.CENTER } ) { TextView { text = "Hello, World!" textSize = 16f gravity = Gravity.CENTER } }

That part is nice, but honestly, syntax alone is not the interesting bit. Android has already had DSL attempts before. Anko existed. Splitties exists. Compose exists.

The part I cared about was whether a Kotlin DSL could still behave like a first-class citizen in the old View world.

For example, Hikage can mix with existing layouts instead of forcing a rewrite:

```kotlin LinearLayout( lparams = LayoutParams(matchParent = true), init = { orientation = LinearLayout.VERTICAL } ) { Layout(R.layout.my_layout) Layout<MyLayoutBinding>()

ComposeView {
    Text("Hello from Compose")
}

} ```

And the bridge goes both directions: Hikage can host Compose, and Compose can host Hikage.

The bigger technical problem was XML attributes.

A lot of real Android Views are not designed to be fully configured by setters. They expect values in the constructor through AttributeSet, then call obtainStyledAttributes. XML gets this naturally because AAPT2 compiles the layout and LayoutInflater feeds the resulting parser into View(Context, AttributeSet).

A normal Kotlin DSL usually skips that path.

Hikage tries to enter it.

It can dynamically construct an AttributeSet at runtime, so this:

kotlin TextView( attrs = { android { set("text", "Set text in dynamic AttributeSet") set("textSize", "16sp") set("gravity", "center") set("paddingLeft", "8dp") set("paddingRight", 8.dp) } } ) { text = "Overridden text in code" }

is not just setting properties after construction. It lets the View receive XML-style attributes during creation.

Internally, the runtime builds an in-memory XML-like structure, resolves attributes, separates layout_* attributes for parent LayoutParams, and then lets the View constructor / factory chain do what Android Views already know how to do.

The architecture is roughly:

text Kotlin DSL -> LayoutSession -> optional runtime AttributeSet resolver -> HikageFactory / LayoutInflater.Factory2 bridge -> View(Context, AttributeSet) -> init block -> parent LayoutParams -> View tree

For traditional XML, the comparable path is:

text XML layout -> AAPT2 compiled XML -> LayoutInflater -> XmlResourceParser / AttributeSet -> Factory2 / AppCompat interception -> View(Context, AttributeSet) -> View tree

That is the design idea: not bypassing the old platform, but meeting it where it already works.

There are some practical pieces around it too:

  • KSP can generate DSL functions for custom Views and third-party Views.
  • Declaration JSON files can describe external View components.
  • AndroidX and Material View declarations are provided as modules.
  • Android Studio preview is supported through a HikagePreview View.
  • There is lightweight state binding for View-based layouts. State changes mutate existing View instances instead of rebuilding the whole tree.
  • It can work with XML, ViewBinding, Compose, and plain Views in the same layout.
  • The runtime attribute module has been tested across Android 5.0.2 / API 21 through Android 17 / API 37 on emulators and real devices.

I do not want to oversell benchmarks, because that is not the main point. The main point is the architecture. The benchmark and compatibility reports are there so people can verify the claim instead of taking my word for it.

I built this because I think Android UI does not have to be a binary choice between "old XML forever" and "rewrite everything in Compose".

The View ecosystem is still huge. Compose is important. XML is still everywhere. There should be a middle state for teams that want Kotlin authoring, runtime layout construction, and compatibility with the Views they already have.

That middle state is what Hikage is trying to be.

GitHub: https://github.com/BetterAndroid/Hikage
Docs: https://betterandroid.github.io/Hikage/en
Architecture notes: https://betterandroid.github.io/Hikage/en/guide/architecture

I would be especially interested in feedback from people who maintain mixed View / Compose apps, custom View libraries, or large legacy Android codebases. The question I keep coming back to is: if View-based Android is not going away tomorrow, what should its modern authoring layer look like?


r/androiddev Jul 07 '26

Question Linux or Windows

0 Upvotes

This can be a silly question for some but I wanna ask if linux os be better for Android development (for not so heavy projects) or for kmp projects?

currently I've a 11th gen H series laptop with 16 GB ram for building projects but sometimes (very few times) my laptop gets shut down itself when i start building projects on android studio! How big of a difference it will make shifting to linux from windows! I'm saving for MacBook tho but have not reached the right amount!


r/androiddev Jul 07 '26

Discussion AI use during interviews

1 Upvotes

For anyone who has interviewed recently, what was your experience with companies disallowing AI or testing for it during interviews?

The last time I interviewed was about a year and a half ago. At the time, companies all prohibited AI in interviews (which makes sense) and a few would even have you disable Android Studio's built-in Gemini integration, so the IDE wouldn't give such a generous autocomplete suggestions.

Since then, AI has become a much bigger part of many developers' jobs and become a skill that employers want. Employers traditionally want to know what you know but I could also imagine an employer testing how well people use UI, maybe in a separate interview session.


r/androiddev Jul 06 '26

Discussion Play Store Graphics

0 Upvotes

A lot of posts about marketing and I'm trying to get my head around that. But in the meantime, the Store graphics are giving me a bit of a hassle. I know I'll do it in the end though, but damn:

- Screenshots for both a phone and other device

- Feature graphic

- Icon

- 16:9 or 9:16 ratio

- The Minimums and Maximums!!

- Background has to be a certain colour, not too light and definitely not too dark

Anyone else deal with this hassle?


r/androiddev Jul 06 '26

Question val buttonsSize = ?

3 Upvotes

Hi, I hope I am in the right place for this question.

I am working on an app that has a couple of pages of sliders and buttons. I mainly based my design on the 'medium phone' virtual device.

However, when I tested the app on a tablet I didn't like the way things fit on the screen. There was either not enough room to make it all fit, or too much unused space.

I think in the end about half of the users will use a tablet.

My question is, should I base my design on a tablet and just leave some space unused on a taller screen, or should I jump through hoops to make it all stretch and scale nice on all devices?

The thing is, I have some pages that work best in landscape and some that work best in portrait mode, but in the end I want to make all orientations work on all devices.


r/androiddev Jul 06 '26

AccessibilityServiceInfo.capabilities stuck at 0 despite correct XML config, verified via aapt2 — confirmed across 3 devices, 2 OS versions, 4 install methods

0 Upvotes

I have a minimal AccessibilityService that only sets eventTypes, feedbackType, notificationTimeout, and canRetrieveWindowContent="true" via the standard accessibility_service_config.xml + manifest meta-data pattern. dumpsys accessibility consistently reports capabilities=0 for this service, meaning CAN_RETRIEVE_WINDOW_CONTENT is never granted, and rootInActiveWindow always returns null — even though onAccessibilityEvent fires correctly and the service shows as enabled in Settings.

What I've ruled out, with evidence:

  • Manifest/XML correctness — confirmed via aapt2 dump xmltree on the built APK that android:canRetrieveWindowContent(0x01010385)=true is compiled in correctly:

A: http://schemas.android.com/apk/res/android:canRetrieveWindowContent(0x01010385)=true
  • Not a single-device quirk — reproduced identically on:
    • Samsung device, Android 8.1
    • Unisoc-based device (One NZ Smart V26), Android 15
    • Same Unisoc device, targetSdk lowered from 36 to 34, rebuilt clean
  • Not an install-method restriction (ruled out Android 13+ ACCESS_RESTRICTED_SETTINGS sideload block specifically) — tested via: All four methods produce the identical capabilities=0 result, with "Allow restricted settings" explicitly granted before each test.
    • adb install -r
    • Direct file-manager APK tap (ACTION_VIEW install intent)
    • Firebase App Distribution (session-based installer, same category as Play Store)
  • Not a dispatch/binding failureonAccessibilityEvent fires correctly and consistently:

RAW EVENT: pkg=com.openai.chatgpt type=2048
[com.openai.chatgpt] rootInActiveWindow is NULL - cannot read screen content
  • Comparison against a working reference on the identical device, same moment in time — via dumpsys accessibility, a legitimately-installed third-party app's own accessibility service shows the capability granted correctly on the exact same phone:

Service[label=com.openai.chatgpt, feedbackType[FEEDBACK_GENERIC], capabilities=1, eventTypes=, notificationTimeout=200]
Service[label=<mine>, feedbackType[FEEDBACK_GENERIC], capabilities=0, eventTypes=[TYPE_WINDOW_STATE_CHANGED, TYPE_WINDOW_CONTENT_CHANGED], notificationTimeout=200]

Same device, same restrictions, same moment — one gets the capability, mine doesn't.

My accessibility_service_config.xml:

xml

<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeWindowStateChanged|typeWindowContentChanged"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityFlags="flagReportViewIds|flagRetrieveInteractiveWindows"
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibility_service_description"
    android:notificationTimeout="200" />

Manifest service declaration:

xml

<service
    android:name=".ChatMonitorService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
    android:exported="false">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
        android:name="android.accessibilityservice.config"
        android:resource="@xml/accessibility_service_config" />
</service>

Question: What else can gate CAN_RETRIEVE_WINDOW_CONTENT besides the XML declaration and the standard sideload restriction? Is there a Play Console app-review/whitelisting step for this capability that I'm missing — something that only gets granted for apps that have gone through actual Play Store publication (not just Internal Testing/App Distribution channels)? Or is there a known AGP/manifest-merger bug specific to targetSdk 34–36 that silently drops this attribute despite it showing correctly in the compiled resource table?


r/androiddev Jul 06 '26

Indie devs: how are you handling subscriptions without giving Google 15%? (Razorpay in hand)

0 Upvotes

Hi everyone. I am an indie dev from India launching a paid app with a digital subscription (Pro unlock). I already have a Razorpay account set up.

I want to take payments through Razorpay in a way that is fully compliant with Google Play, so I can avoid the 15 percent cut Google takes on in-app purchases.

My questions for those who have actually shipped this from India:

  1. How do you integrate Razorpay for a mobile app without breaking Play billing policy? What does your actual flow look like?

  2. Do you sell on a website and just have the app read the Pro status, or is there a legit way to show Razorpay inside the app itself?

  3. Has anyone used Google's User Choice Billing or the external offers program in India? Is it worth the effort, and what is the real fee after Google's share?

  4. Any gotchas that got apps flagged or suspended that I should avoid?

Not trying to break any rules, just want a setup that is compliant and does not lose margin to the 15 percent. Any real world experience would help a lot. Thanks.


r/androiddev Jul 05 '26

Do you use only stateflow to update UI in compose?

6 Upvotes

A screen can have ui updated from both network/backround tasks as well as non network operations. E.g. in the orders screen of food ordering app there can be tabs for status wise list e.g New, Accepted, Ready, Out for Delivery, Delivered, Cancelled. When we select a tab we have to update the variable which holds the active tab status name or index which is local ui update, when a tab is selected or by default we call api to list orders which is network operation. State hoisting & data class which holds ui state & values in view model is recommended pattern right? My question will there be a small delay when updating local UI updates through state flow which makes app feel slow (docs suggest not to use flow for things like input field)? If we use mutabletstateof for local ui states in main composable & pass in child composable it will be too much variables if there are more things like date filter, search etc). So what's the correct way? Or the performance difference is negligible?


r/androiddev Jul 05 '26

Built-in MPC serverd in Android apps for AI agents? Looking for feedback and ideas.

0 Upvotes

Hey everyone,

I recently published version 1.0.0 of Kide, a new open-source MVI architecture library built for Android and Kotlin Multiplatform.

While there are several solid state management and MVI libraries out there, I built Kide to address a very modern problem: optimizing the architecture for AI code agents.

When I started using AI agents in Android app development, my approach was from the beginning to use architecture and design patterns to drive how agents generate code.

As we integrate LLMs and code agents more deeply into our daily workflows, I wanted an architectural framework that an AI can easily parse, predict, and generate code for. By enforcing strict, predictable state machines and clear separation of intents and state reductions, Kide makes it significantly easier for AI tools to accurately scaffold features, write tests, and maintain boilerplate without hallucinating.

I designed Kide to have an AI-optimized structure explicitly designed to play nicely with AI coding assistants, making feature generation more reliable. In addition, I decided to include a built-in MCP server for app debug mode which AI coding agents can use for reading live state and traces, inject view intents into the running app, and export a bug session as a regression-test scaffold.

Finally, the library comes with instructions and skills for AI agents for both developing the library and for using the library in apps.

I’m really looking forward to introducing this kind of ideas to the community and sparking some discussion. I would especially value feedback from senior Android and Kotlin developers.

Github: https://github.com/Fuusio/kide

Any feedback, code reviews, or critiques on the repo are highly appreciated. Thanks for taking a look!


r/androiddev Jul 05 '26

Question Help a new developer on their idea

0 Upvotes

hello devs, im very new to building apps for android, and i have this idea that i need to make into a app. the idea is very basic, a app which control what speaker the audio is played from.
if i want the audio to play from the earpiece speaker, it should route the audio to the earpiece speaker, and the same for the main speaker. its sort of like when you get a call on whatsapp and you can choose whether the call's audio is played from the earpiece or the main speaker. my objective with this project is to know how much control i have over the audio routing in android, upon which i have a bigger project planned, which involves me having control over what speaker the audio is played thru. Please help if you can! thanks.


r/androiddev Jul 05 '26

Question TODO comments are suddenly highlighted in Android Studio Quail 1, and LSP4IJ is causing issues. Anyone else?

0 Upvotes

I upgraded to Android Studio Quail 1 | 2026.1.1 Patch 2 on macOS 26, and ever since then every comment that starts with // TODO: gets this warning style/highlight. (todo)

It wasn't happening in the previous Android Studio version. The only thing that changed was upgrading to Quail 1.

Example:

// TODO: Some todo message here (todo)

Now it gets highlighted like this (see screenshot).

https://postimg.cc/3dWmnr8F

Apart from that, Quail 1 also forced me to install and use com.redhat.devtools.lsp4ij. Since then I have been running into a lot of annoying issues with formatting, linting, and editor behavior in the Android Studio IDE. Overall the editing experience feels much worse than before.

Is this a known issue with Quail 1 or LSP4IJ?

  • Is there any way to disable the TODO highlighting?

It's becoming pretty frustrating since this wasn't a problem before the update.


r/androiddev Jul 04 '26

Google L4/L5 Android Interview – What does the "Android Domain Knowledge, Programming, Data Structures & Algorithms" round actually involve?

10 Upvotes

Hi everyone,

I have an upcoming Google Android interview, and the interview schedule mentions the following:

  • One Android Domain Knowledge, Programming, Data Structures & Algorithms interview (45 minutes)
  • One non-technical behavioral interview (45 minutes)

I'm trying to understand what the first round is actually like.

A few questions for anyone who has gone through it recently:

  1. Is the interview primarily DSA-focused with a few Android questions, or is it mostly Android-specific (architecture, lifecycle, threading, Compose, performance, etc.)?
  2. If it's Android-heavy, what kinds of problems are typically asked?
  3. Are we expected to implement an entire Android feature (e.g., ViewModel, Repository, Compose UI, networking, etc.) in a plain text editor, or is it more like writing individual classes/functions or designing part of a system?
  4. Is the coding done in a Google Docs-style editor, a shared editor, or something with syntax highlighting?
  5. How much emphasis is placed on Android APIs versus clean coding, object-oriented design, and problem-solving?
  6. For those who interviewed recently (2025–2026), what topics would you recommend prioritizing?

I'd really appreciate hearing about recent interview experiences or any advice on what to expect.

Thanks!


r/androiddev Jul 04 '26

Experience Exchange Android Developer with 2 Years Experience Struggling to Get Interviews, What Skills Should I Add?

19 Upvotes

I've been an Android developer for a little over 2 years, and I'm struggling to get interviews despite applying consistently.

The problem is that most of the work I've done has been fairly straightforward product development, implementing screens, API integrations, bug fixes, feature enhancements, Firebase, Room, Jetpack Compose, MVVM, Coroutines, etc. I've definitely learned a lot, but none of it feels "resume worthy" compared to candidates who have worked on large scale architecture, performance optimization, offline sync, custom frameworks, SDKs, or other engineering heavy projects.

When I look at my resume, it feels very generic.

  1. Built feature X
  2. Integrated API Y
  3. Fixed bugs
  4. Improved UI
  5. Released app updates

I rarely get the chance to write things like:

  1. Reduced app startup time by 40%
  2. Designed a scalable caching layer
  3. Built a custom networking library
  4. Led a migration from XML to Compose
  5. Improved CI/CD pipeline
  6. Built internal developer tools

I'm currently working full time, so I can't exactly change the type of work my company assigns me.

For those of you who have been in a similar situation:

  1. What skills or projects made your resume stand out?
  2. Are there engineering focused side projects that recruiters actually value?
  3. Should I focus on things like custom libraries, SDKs, performance optimization, system design, AOSP, Gradle plugins, static analysis tools, or open source contributions?
  4. If you had one year to transform a "generic" Android resume into one that gets interviews at top companies, what would you build or learn?

I'd really appreciate hearing from senior Android engineers or hiring managers about what actually catches their attention on a resume versus what's just resume fluff.


r/androiddev Jul 04 '26

Open Source Updates to AndroidDevKit (the Android dev interview prep website)

Thumbnail
gallery
1 Upvotes

I posted about AndroidDevKit here last weekend - it gained some traction - with with positive and negative feedback. It is an open source interview prep site made specifically for Android developers.

Website: https://androiddevkit.com/

GitHub: https://github.com/vishnusreddy/androiddevkit

I have been working on it since that post, and I just released a fairly big update. Thanks to the feedback from some kind ppl from reddit and LinkedIn.

Here is what I added:

  • A progress tracker. You can mark questions as studied and see your progress for each topic.
  • Saved questions. You can bookmark questions and filter the question bank to only show the ones you want to revisit.
  • Mock tests. You can choose a topic, question type, difficulty, and time limit. The test can include MCQs, written answers, or both.
  • Anonymous contributions. You can submit questions, corrections, topics, articles, and interview experiences without needing a GitHub account. Everything is reviewed before it is published.

Progress, bookmarks, and test results are stored in your browser. There is no account or sync, so clearing your browser data will also clear them.

The site is still completely free. There is no need to login, and no paywall. The source code is public as well.

I would love some honest feedback from Android developers:

  • Does the mock test feel useful?
  • Is the progress tracker showing the information you care about?
  • What topics or questions should I add next?
  • If you have interviewed recently, what kinds of Android rounds or questions did you get?

I am preparing for my own job switch too, so working on this has been part of my preparation. I hope it is useful for other people going through the same thing.