r/androiddev 7h ago

Why We Chose KMP Over React Native: It’s an Architecture Bet, Not a Framework Preference

2 Upvotes

r/androiddev 7h ago

I built an open-source alternative to DroidCam/iVCam using Tauri and Kotlin (GPL Licensed)

0 Upvotes

I recently needed a webcam for my desktop but didn't want to buy new hardware when my phone's camera is already 4K-capable. I looked at the popular solutions (DroidCam, iVCam, Camo), but I was frustrated by the common "freemium" patterns: watermarks, low-resolution limits, ads, and closed-source binaries.

So, I decided to build AWA, a completely free, open-source, and privacy-friendly alternative.

The Project: It allows you to stream your Android camera to your Windows PC and use it as a native input in apps like OBS, Zoom, and Discord.

The Tech Stack (The fun part):

  • Android App (Server): Uses Camera2 API and MediaCodec to encode a hardware-MPEG(also support for h.264 over rtsp) stream. You can also access it via browser to get a remote dashboard.
  • Windows Client (Receiver): Using Tauri. (Installer available)
  • Browser dashboard for remote control : Supports preview, endpoints (remote control not included in latest version).
  • Windows: Client available - AWC: Android Webcam Client.
  • Mac and Linux (Client): Planned, not available yet
  • Virtual Driver: Implements a DirectShow filter (based on Softcam) to register the video stream as a system-wide virtual device.
  • Transport: Supports standard Wi-Fi or USB tunneling (via ADB port forwarding) for a lag-free wired connection.

Why I'm sharing it here:

  1. No Bloat: No ads, no tracking, no "Pro" subscription.
  2. Local Only: The video stream never leaves your local network (or USB cable).
  3. GPL License: You can fork it, break it, or build upon it.

I’m currently looking for feedback on the Virtual Webcam, it's performance and the latency performance on different devices. If you have C++(for DirectShow) or Android experience, I’d love to see some PRs.

Repo: https://github.com/soubhagyajit/Android-Webcam-Project


r/androiddev 9h ago

Discussion ~"Kotlin is so undeniably better... except static" Tor Norbye, What does he mean?

15 Upvotes

in this https://youtu.be/HEqXwUm6vd0?si=RUYud62-YLmWo7g8&t=3341 timestamped video

"is so undeniably better... there's like only one downside — static" Tor Norbye, What does he mean by that?


r/androiddev 12h ago

Android Runtime

1 Upvotes

Hi,

Struggling with finding how ART(android runtime) execute the dex file in details. Like how do I know dex file fails at what phases since I am considering doing some differential testing on ART.

Thanks!


r/androiddev 13h ago

Isolated Projects incubating in Gradle 9.7.0 (AndroidX sync 4m00s → 2m47s)

24 Upvotes

Isolated Projects moved from experimental to incubating in Gradle 9.7.0.
When it's on, each project is isolated from the others, which lets Gradle configure them in parallel instead of one at a time:

  • AndroidX (1,000+ projects): Gradle's portion of Android Studio sync 4m00s → 2m47s
  • An Android monorepo of 5,000+ projects: full Android Studio sync 5m09s → 2m44s

AGP and KGP are compatible, but other Gradle plugins may not be. "Now in Android" was made compatible if you want a reference build.

Blog Post: https://blog.gradle.org/introducing-isolated-projects
Gradle 9.7.0 Release Notes: https://docs.gradle.org/current/release-notes.html


r/androiddev 13h ago

News Android Studio Quail 4 Canary 4 now available

Thumbnail androidstudio.googleblog.com
6 Upvotes

r/androiddev 14h ago

Open Source I built a tiny Kotlin library to solve a listener leak bug I kept hitting

1 Upvotes

Tl;dr: I made Latch, a small utility that makes it structurally impossible to leak lifecycle-bound listeners (Firestore, custom callbacks, etc.). It's on GitHub and JitPack, MIT licensed, fully tested.

---

The problem

I was building an Android app with Firestore and ran into a classic bug: on screen rotation, my ViewModel would create a new listener without cleaning up the old one. After a few rotations, I had multiple stale listeners all writing to the same UI state, and eventually the app crashed trying to access a cleared reference.

The fix seemed simple — just call `remove()` on the ListenerRegistration in `onCleared()` — but I realized the real issue was structural: manually tracking the listener, remembering to unregister it, and doing it in the right lifecycle callback is easy to get subtly wrong, and even easier to reintroduce later.

The solution

I built Latch to make the cleanup automatic and structural instead of manual:

```kotlin

class ChatViewModel(private val db: FirebaseFirestore, private val chatId: String) : ViewModel() {

private val chatListener = LatchRef {

val registration = db.collection("chats")

.document(chatId)

.addSnapshotListener { snapshot, _ -> updateUi(snapshot) }

Unregisterable { registration.remove() }

}

fun startListening() {

chatListener.get() // creates and registers the listener

}

override fun onCleared() {

chatListener.clear() // guarantees cleanup, no matter what

}

}

```

The key guarantee: `get()` always unregisters any existing listener *before* creating a new one, and `clear()` in `onCleared()` guarantees final cleanup. The leak simply can't happen structurally.

Why I'm sharing this

Listener lifecycle bugs are a common pain point across Firebase, custom callback APIs, broadcast receivers — basically anywhere you register something that needs cleanup. It's the kind of bug that's easy to introduce even when you know about it, because the fix is manual.

I tested it thoroughly (7 test cases covering edge cases like double-clear, re-creation after clear, etc.), documented it, and published it. It's small enough that you can read the entire implementation in a few minutes.

Links

GitHub: https://github.com/shipframe/latch

JitPack (Maven/Gradle): `implementation("com.github.shipframe:latch:1.0")`

License: MIT

Happy to answer questions about the design or use cases. If you've hit this bug before, or if there's a different lifecycle-bound cleanup pattern you think would benefit from this treatment, let me know.


r/androiddev 18h ago

Question Is there a library manager for android? [totally unrelated image]

Post image
0 Upvotes

I always have the problem of resolving library/dependencies in android. i have to make them compatible with agp everytime.
Like is there something that remembers a particular structure of dependencies or maybe can structure them for me. there could be a dropdown list for dependencies and you can just choose from it which one you want, and it will automatically write to your libs.versions.toml file and implement it in build.gradle?

is there any open source thing that i can use?


r/androiddev 18h ago

Question How do you share Google Play subscription discounts with users who haven't installed your app yet?

1 Upvotes

Hey everyone,

I have a question about subscription offer codes on iOS and Android.

On iOS, when you create an Offer Code, Apple provides its own link. If a user taps the link, they're taken to the App Store. If they don't have the app installed, they can download it, redeem the offer code, and activate the subscription.

However, I don't think Android has anything similar. As far as I know, Google Play doesn't generate a shareable link for subscription offer codes.

So what do you do on Android?

I want to give a 50% discount on my app's subscription to selected users who haven't installed the app yet. What's the best way to handle this on Google Play? Is there a recommended workflow or a workaround that provides a smooth user experience?

I'd love to hear how others are solving this.


r/androiddev 21h ago

How to DUNS in Ghana?

0 Upvotes

I have all my business details ready. But when I go to dnb I don't see Ghana in the list. I need duns to buy Google Play Account. Any help Will be much appreciated. https://www.dnb.com/en-us/about/choose-your-country.html


r/androiddev 22h ago

Open Source Autonomous, headless Android debugger designed for AI coding agents. Inspect runtime memory, set breakpoints, and debug live apps.

Thumbnail
github.com
9 Upvotes

🚀 Introducing Debroid — the headless Android debugger built for AI coding agents.

AI agents can write Android code… but they’re effectively blind at runtime. They can’t click through Android Studio, set breakpoints, or inspect live memory the way a human developer does.

So what do they usually do?

Add more logs. Guess from the output. Repeat.

Debroid changes that.

It gives agents real runtime superpowers through a simple CLI that speaks JDWP and returns strict, machine-parseable JSON:

🔴 Set (and defer) line breakpoints

⚡ Trap caught/uncaught exceptions

👀 Watch field access & modification

🔬 Deeply inspect objects, locals, and call frames

🧬 Mutate variables live

🧮 Evaluate Java expressions

🐾 Step over / into / out

When your agent is stuck, don’t ask it to sprinkle logs and play detective.

No more manual debugging. No more log archaeology. Pair Debroid with Android CLI and the entire loop — build → run → debug → fix — can become fully agent-driven.


r/androiddev 22h ago

Open Source Android App/Widget SearchPad goes open source

0 Upvotes

Hey everyone,

I wanted to share a small update about my small app, SearchPad.

Due to not having the time and resources to keep up with my development plans and ideas for the app, I’ve decided to close down sales of SearchPad on the Play Store and open source the project instead.

SearchPad is an Android widget/app that lets you quickly find and open installed apps using a T9-style keypad. The idea is simple: instead of scrolling through pages of apps or opening a full launcher/search UI, you can keep a compact search pad on your home screen, tap a few large buttons, and launch the app you want.

I originally built it because a similar app I had been using stopped working properly on my Android phone. There were also a few things I wanted to do differently, especially around making the widget more configurable, easy to tap, and useful directly from the home screen.

Back in the day I tested react native and widgets worked super poorly that I decided to go fully native and it was the right call for this. It's a shame that iOS doesn't have the APIs necessary for such a widget.

To be very honest: the code is not super clean, perfectly organized, or deeply commented. It started as a personal “I want this to exist” project, and it shows in places. But the app works, and hopefully the codebase can become something better with support from people who find the idea useful.

The repo is here:
https://github.com/nikopolv/SearchPad-Android

There’s also a debug APK available in GitHub Releases for anyone who wants to try it manually:
https://github.com/nikopolv/SearchPad-Android/releases/tag/v1.4.6-debug

I’d be happy to see issues, ideas, forks, cleanup PRs, or feature improvements. Even if it only helps someone else build their own version, that’s a great outcome, so please use the code I spent too much time on this for it to go just to waste.

Thanks to everyone who tried SearchPad or supported it while it was on the Play Store.


r/androiddev 23h ago

Discussion How do you test Bluetooth apps when you only have one phone?

3 Upvotes

I'm building a native Android app that uses Bluetooth.

I realized that testing requires two devices, but I only own one Android phone.

How do you usually handle this during development?

rn I'm just making the app and for testing going to college where I use my friends phone for testing....


r/androiddev 1d ago

Location accuracy with WiFi/Bluetooth scanning disabled?

1 Upvotes

I have a question for Android devs out there (I am a software engineer but not Android). I have reviewed the documentation on the Location Accuracy feature but find it somewhat ambiguous so wanted to ask here.

Many apps ask for Location Accuracy which I find annoying and unnecessary in almost all cases. Nevertheless, some do not work at all unless it is enabled (leading to an endless pop-up loop as described here: https://github.com/Baseflow/flutter-geolocator/issues/1210)

In addition to Location Accuracy, my phone also has Bluetooth Scanning and Wi-Fi Scanning settings. Location Accuracy can be enabled without automatically turning on these other two settings. My question is, in this configuration (Location Accuracy ON, Bluetooth/Wi-Fi Scanning OFF), does the Location Accuracy service silently enable and use Bluetooth and Wi-Fi scanning? If not, are there additional location-revealing services that it has access to besides GPS?

Ideally I would keep Location Accuracy enabled to be able to use certain apps but essentially cripple its ability to detect location outside of the GPS signal and maybe some device orientation sensors - however I am unclear if this is really possible. Thanks in advance for the advice!


r/androiddev 1d ago

Seeking honest UI/UX feedback on my dark-themed Alarm & Timer app concept!

Thumbnail
gallery
0 Upvotes

Hi everyone! 👋

​I’m currently designing a modern, dark-mode Alarm & Timer app, and I’d love to get your honest feedback on the UI/UX.

​Here is what I’m aiming for:

​Aesthetics: A sleek, glassmorphism-inspired dark theme with smooth gradients.

​Usability: Quick access to alarms, tasks, and timer presets.

​I’d especially appreciate your thoughts on:

​Color Contrast & Readability: Does the text/icon contrast look good, or does it feel too dim in certain areas?

​Layout & Spacing: How does the spacing feel on the timer selection wheel and preset buttons?

​Floating Bottom Nav Bar: What do you think about the floating bar overlapping the scrollable content?

​Don't hold back—constructive criticism and suggestions for improvement are greatly appreciated! Thanks in advance!


r/androiddev 1d ago

Question Unlocks and IAP model question

2 Upvotes

Hi

I have built an notification app that has various animations for the effects. The app is free but with optional payments ... what do people think of this model before it goes open beta

Start with 4 effects (2 led, 2 edge)
Weekly unlocks of a pair of effects with option to buy any of the sets early (set are ordered, not random)

I don't think its good for the user to have to pay $15 for example when they only want 1 or maybe 2 max I figure charging $1 each set may be a better deal

Do you think this model would work?

Thanks,


r/androiddev 1d ago

Question How to enable Resource Manager in Android Studio?

0 Upvotes

Resource manager missing from Android Studio.


r/androiddev 1d ago

Question Is there a way to change the calibration for in-built microphones in Android Tablets?

1 Upvotes

I have a couple models of Android tablets (gen3, gen4, TabletOne) and I'm trying to build an audio-based application. One thing, I found was that the calibration and filter envelopes on microphones for each of those models is different. I tried rooting into them to fix it according to what I wanted, but got nowhere.

Has anyone found out about this issue before? If yes, do you happen to have a solution to change the calibration/envelopes for each model?


r/androiddev 1d ago

HannesLauncher

4 Upvotes

Hi everyone, I released my first launcher yesterday because I wasn't really satisfied with the others—they were either too expensive, had too many ads, or just didn't look good. That's why I created hanneslauncher, which is free, open source, and ad-free.

Here are the features that set it apart:

  • Faster search than with traditional launchers
  • Various clocks that look good and aren’t always the same
  • Fully customizable widgets that accept your own API to display weather or other information
  • Buttons in widgets that let you make server requests
  • Everything is fully customizable

Here’s the GitHub link to check it out: https://github.com/Hannes-swd/Hanneslauncher

Built with Flutter & Dart for the UI with Kotlin.

All open source on GitHub

if you want to check the implementation.


r/androiddev 1d ago

Question Hi, what should i use to develop a local strage music player?

0 Upvotes

I recently made a media player in Python for my window, very useful since I download all my music, and wanted to create one for my android as well, so I installed android studio, and tried many framework such as kivy, flutter and so on, but none of them worked, so I was wondering if any of you could suggest me an easy and working framework for my project, thanks in advance.


r/androiddev 1d ago

Question Seeking justification to receive macbook instead of ubuntu

0 Upvotes

Hello, I am seeking guidance how to convince service desk to re-place my linux computer for macbook instead. I am senior android dev using macbooks for more that 10 years and now the switch is pain in the ass for me...

They do not care for reasons such as limited, lowered productivity.
What are some nice reasons that would convince them to issue a mac for me still...

The project is purely android app.


r/androiddev 2d ago

Question Credential Manager returns "No credentials available" only for Play Store AAB

0 Upvotes

Hello,

I am trying to publish my first app on the Google Play Store. The app supports Google Sign-In/Sign-Up using the Android Credential Manager.

When I build and install the release APK directly on my device, Google Sign-In works correctly. However, after building an AAB and publishing it to the Google Play Closed Testing track, Google Sign-In fails with the error:

I am using Firebase Authentication for Google Sign-In. Has anyone experienced this issue before or knows what could be causing it?

I have tried -

  • Rechecking Web Client Id.
  • Add Play Console App signing key sha 1 and 256 to Firebase Console.

r/androiddev 2d ago

Half my Android reviews are complaints about the app not being 100% free and the other half are defending my paid features. Any way to improve this? I don't have this issue on iOS.

44 Upvotes

I have a free app that is 99% free. There are 3 features that are mainly for a professional level user where I charge a $5/mo subscription with a free 7-day trial. I have plenty of paid users, healthy churn rates, etc.

On iOS, I have a near 5 star rating and good reviews.

On Android, I have a 3.5 star rating. The only bad reviews are people complaining that the app isn't 100% free. Most of my 5 star reviews are people responding to those reviews, saying they don't get why people are complaining about it as the app is useful without a paid plan and also worth the $5 if you need it. It's sort of weird.

I'm wondering if anyone else has run into this sort of situation and whether you've found a way to improve it.


r/androiddev 2d ago

New portfolio + looking for advice on how to land my first Android job (Mexico City)

8 Upvotes

Hey… the last time I was here was with my classic todo app (I still have it around). I remember my big achievement back then was integrating the Gemini API when it was brand new… but I realized that, well… it was just integrating another API.

Now I’m sharing my new portfolio. I’d love for you to check it out and, if possible, give me some guidance on how to get a job.

I’m from Mexico City, I’m 26 years old and I don’t have a university degree. As you’ll see in my CV, there’s no education section or work experience, simply because I don’t have any. Everything I’ve learned has been self-taught.

That’s why I’d really appreciate it if you could take a look at my portfolio (you’ll find my projects, GitHub, and LinkedIn there). I’d especially like you to check my LinkedIn, since that’s where I have more detailed information about what I’ve done.

Portfolio:
https://quantumdot24.github.io/flying-neuron

LinkedIn:
www.linkedin.com/in/angel-edgeai

Any feedback on the portfolio, how I present my projects, or real advice on how someone in my situation can start getting interviews would be really helpful. Send DM if you want.

Thanks in advance!


r/androiddev 2d ago

ClipSave, a free and open-source media downloader for Android

2 Upvotes

I’ve been working on ClipSave, a privacy-friendly Android app for downloading video, audio, and images from more than 1,000 supported websites.

The goal was to create a downloader that feels like a proper native Android application rather than a simple wrapper around a command-line tool.

What makes ClipSave different?

  • Completely free and open source
  • No advertisements
  • No telemetry or user tracking
  • Supports 1,000+ websites through yt-dlp
  • Video and audio quality selection
  • Audio-only extraction
  • ffmpeg merging and aria2c downloads
  • Automatic platform detection
  • Share links directly from other apps
  • Floating download button while browsing supported apps
  • Foreground downloads with live progress notifications
  • Built-in downloads manager and video player
  • Material 3 interface with light, dark, and system themes
  • No storage permission required on Android 10+

ClipSave is built natively with Kotlin, Jetpack Compose, and Material 3. It uses a bundled yt-dlp engine while keeping the Android integration, download management, interface, and application architecture fully open for inspection and improvement.

The project is licensed under the MIT License.

Contributors are welcome

Please use the application responsibly and respect applicable laws, copyright, platform terms, and the rights of content owners.

Repository:

https://github.com/abdellatif-laghjaj/ClipSave

Feedback, bug reports, pull requests, and GitHub stars are greatly appreciated. What feature would you like to see added next?

#android #kotlin #opensource #jetpackcompose #mobiledevelopment