Android May Soon Restrict On-Device ADB, Affecting Shizuku, libadb and Developers
https://kitsumed.github.io/blog/posts/android-may-soon-restrict-on-device-adb/
https://redd.it/1v5jv18
@reddit_androiddev
https://kitsumed.github.io/blog/posts/android-may-soon-restrict-on-device-adb/
https://redd.it/1v5jv18
@reddit_androiddev
Kitsumed Blog
Android May Soon Restrict On-Device ADB, Affecting Shizuku, libadb and Developers
Changes proposed for ADB could kill an entire ecosystem of open-source power-user apps, mobile developer setups, and rootless privacy tools based on Shizuku.
Would you use a to-do app that calls you instead of just sending notifications?
I'm thinking of building a minimalist, aesthetic to-do app with 3 reminder modes:
🔔 Normal notification
📌 Persistent notification (can't be swiped away)
📞 Incoming call-style reminder
The idea is simple: make reminders harder to ignore, without adding a bunch of unnecessary features.
Would you use something like this? What feature would make you switch from your current to-do app?
https://redd.it/1v5xhb0
@reddit_androiddev
I'm thinking of building a minimalist, aesthetic to-do app with 3 reminder modes:
🔔 Normal notification
📌 Persistent notification (can't be swiped away)
📞 Incoming call-style reminder
The idea is simple: make reminders harder to ignore, without adding a bunch of unnecessary features.
Would you use something like this? What feature would make you switch from your current to-do app?
https://redd.it/1v5xhb0
@reddit_androiddev
Reddit
From the androiddev community on Reddit
Explore this post and more from the androiddev community
A Fully Compose Android Library for iOS Emoji Rendering
I built an Android library that renders iOS-style emojis in Jetpack Compose.
Unlike most existing solutions, this library is 100% Compose—no
GitHub: https://github.com/abbas-esfandiair/EmojiTextLibrary
https://redd.it/1v5yy1g
@reddit_androiddev
I built an Android library that renders iOS-style emojis in Jetpack Compose.
Unlike most existing solutions, this library is 100% Compose—no
TextView, AndroidView, or View-based implementation behind the scenes.GitHub: https://github.com/abbas-esfandiair/EmojiTextLibrary
https://redd.it/1v5yy1g
@reddit_androiddev
GitHub
GitHub - abbas-esfandiair/EmojiTextLibrary
Contribute to abbas-esfandiair/EmojiTextLibrary development by creating an account on GitHub.
Google Play Billing Library 9+ wrapper
Hello, probably you already received the Google Play reminder to update your GPB library to at least version 9.
I used until now a library wrapper that is no longer updated (at least not yet), so I started working on my own.
I does not support all newer stuff like rented items and alternative billing, but it works pretty fine for in-app purchases and subscriptions.
The project on GitHub does not have a README yet, I stopped working on it to integrate it as it is on my apps (it is sufficient for my monetization needs), so if you want to learn how to use it there is a sample app in the repository itself.
repo:
https://github.com/Mirkoddd/Charon
implementation 'com.mirkoddd:charon:1.0.1'
https://redd.it/1v61env
@reddit_androiddev
Hello, probably you already received the Google Play reminder to update your GPB library to at least version 9.
I used until now a library wrapper that is no longer updated (at least not yet), so I started working on my own.
I does not support all newer stuff like rented items and alternative billing, but it works pretty fine for in-app purchases and subscriptions.
The project on GitHub does not have a README yet, I stopped working on it to integrate it as it is on my apps (it is sufficient for my monetization needs), so if you want to learn how to use it there is a sample app in the repository itself.
repo:
https://github.com/Mirkoddd/Charon
implementation 'com.mirkoddd:charon:1.0.1'
https://redd.it/1v61env
@reddit_androiddev
GitHub
GitHub - Mirkoddd/Charon: Android Google Billing Library Wrapper 9+ | do not use in prod
Android Google Billing Library Wrapper 9+ | do not use in prod - Mirkoddd/Charon
Browser Developers: Please Build a Truly Universal Video Speed Controller Browser
As a student, I'd love to see a browser dedicated to universal video speed control.
Apps like these already exist:
https://play.google.com/store/apps/details?id=com.codedev.videospeedcontrollerbrowser
https://play.google.com/store/apps/details?id=com.yh.vscb
The idea is great, but they're often buggy, laggy, slow, require too many steps, have outdated UI, and include intrusive app-opening/interstitial ads.
Features I'd love:
Universal video speed control on almost every website.
Speed range from 0.25× to 5×.
Quick preset buttons (1×, 1.5×, 2×, 2.5×, 2.75×, etc.) or a YouTube-style slider with 0.25× increments.
Press & hold anywhere on the video for temporary 2×, then release to instantly return to the selected speed.
Lightweight, fast, modern UI with minimal setup.
No app-opening/interstitial ads (a premium version or non-intrusive ads would be much better).
I believe many students would use a browser like this for online lectures and educational content.
If you're a developer interested in building this, please DM me. I have more ideas and feature suggestions I'd love to discuss.
https://redd.it/1v62owr
@reddit_androiddev
As a student, I'd love to see a browser dedicated to universal video speed control.
Apps like these already exist:
https://play.google.com/store/apps/details?id=com.codedev.videospeedcontrollerbrowser
https://play.google.com/store/apps/details?id=com.yh.vscb
The idea is great, but they're often buggy, laggy, slow, require too many steps, have outdated UI, and include intrusive app-opening/interstitial ads.
Features I'd love:
Universal video speed control on almost every website.
Speed range from 0.25× to 5×.
Quick preset buttons (1×, 1.5×, 2×, 2.5×, 2.75×, etc.) or a YouTube-style slider with 0.25× increments.
Press & hold anywhere on the video for temporary 2×, then release to instantly return to the selected speed.
Lightweight, fast, modern UI with minimal setup.
No app-opening/interstitial ads (a premium version or non-intrusive ads would be much better).
I believe many students would use a browser like this for online lectures and educational content.
If you're a developer interested in building this, please DM me. I have more ideas and feature suggestions I'd love to discuss.
https://redd.it/1v62owr
@reddit_androiddev
Google Play
Video Speed Controller Browser - Apps on Google Play
save time - watch videos in more playback speed than 2x upto 10x on mobile web.
E2E Testing for Compose Multiplatform
I built an end-to-end testing library for Compose Multiplatform called Parikshan
https://redd.it/1v66up4
@reddit_androiddev
I built an end-to-end testing library for Compose Multiplatform called Parikshan
https://redd.it/1v66up4
@reddit_androiddev
Reddit
From the androiddev community on Reddit
Explore this post and more from the androiddev community
Spent €350 in ads + 1M+ TikTok views ➔ 11,000 Installs ➔ €0 Revenue. Need a brutal teardown of my conversion funnel.
https://redd.it/1v6hmtr
@reddit_androiddev
https://redd.it/1v6hmtr
@reddit_androiddev
Reddit
From the androiddev community on Reddit: Spent €350 in ads + 1M+ TikTok views ➔ 11,000 Installs ➔ €0 Revenue. Need a brutal teardown…
Explore this post and more from the androiddev community
Am I the only one facing this issue with Copilot in Android Studio?
Needed to make some tweaks and some additional features in my old app which I kind of manually coded with a bit of AI usage.
Now, as usual I prompt in all required changes and it's on this loop of adding and deleting stuff, the app isn't even that big.
It was done once but as soon as I tried to build, errors shown up
So , I asked AI to resolve it but it's been like 2 hrs now , no progress, I would've manually been done by now.
Is it only copilot thing or just common behaviour,might shift to another model now.
https://redd.it/1v6j3y1
@reddit_androiddev
Needed to make some tweaks and some additional features in my old app which I kind of manually coded with a bit of AI usage.
Now, as usual I prompt in all required changes and it's on this loop of adding and deleting stuff, the app isn't even that big.
It was done once but as soon as I tried to build, errors shown up
So , I asked AI to resolve it but it's been like 2 hrs now , no progress, I would've manually been done by now.
Is it only copilot thing or just common behaviour,might shift to another model now.
https://redd.it/1v6j3y1
@reddit_androiddev
Reddit
From the androiddev community on Reddit
Explore this post and more from the androiddev community
Startup app security
I’ve noticed a weird gap in the app ecosystem.
Enterprise companies have AppSec teams, dedicated security engineers, and expensive tooling.
Most indie developers and startups don’t. We’re trying to ship features, fix bugs, market the product, and security often becomes “I’ll come back to it later.”
I’ve been building a security platform with those smaller teams in mind, and I’d rather have real developers using it than trying to guess what people need.
So I set it up to give the first 50 organizations free Team access. No codes, no DMing me, no application, just sign up and claim it if it’s still available.
Strata-security.com
The trade-off is simple: use it on your projects, and if you run into bugs, false positives, confusing UX, or features you’d like to see, let me know. I’d much rather improve it with real-world feedback than build in a vacuum.
Even if you never use my platform, I’m curious, what’s the biggest security challenge you’ve run into as an indie developer or startup? Is it mobile apps, dependency management, secrets, CI/CD, or just finding time to think about security at all?
https://redd.it/1v6ki0w
@reddit_androiddev
I’ve noticed a weird gap in the app ecosystem.
Enterprise companies have AppSec teams, dedicated security engineers, and expensive tooling.
Most indie developers and startups don’t. We’re trying to ship features, fix bugs, market the product, and security often becomes “I’ll come back to it later.”
I’ve been building a security platform with those smaller teams in mind, and I’d rather have real developers using it than trying to guess what people need.
So I set it up to give the first 50 organizations free Team access. No codes, no DMing me, no application, just sign up and claim it if it’s still available.
Strata-security.com
The trade-off is simple: use it on your projects, and if you run into bugs, false positives, confusing UX, or features you’d like to see, let me know. I’d much rather improve it with real-world feedback than build in a vacuum.
Even if you never use my platform, I’m curious, what’s the biggest security challenge you’ve run into as an indie developer or startup? Is it mobile apps, dependency management, secrets, CI/CD, or just finding time to think about security at all?
https://redd.it/1v6ki0w
@reddit_androiddev
Reddit
From the androiddev community on Reddit
Explore this post and more from the androiddev community
This media is not supported in your browser
VIEW IN TELEGRAM
[Help needed] I need advice about a new video on the Play Store for my app
https://redd.it/1v6r9l0
@reddit_androiddev
https://redd.it/1v6r9l0
@reddit_androiddev
Identity of Composeable instances
In https://developer.android.com/develop/ui/compose/lifecycle#composition-anatomy
, they explain that the identity of a composeable instance is its call site, which they define to be “The call site is the source code location in which a composable is called. This influences its place in Composition, and therefore, the UI tree.”
I understand this as being the place in the source file where the composeable is called. But I find that there must be more to it than that, as it’s hard to imagine a robust, efficient system that literally keeps track of the exact line of code where each composeable gets called for a composition. For example, the compiler would have to build out a table for every composeable and store it as part of the build, and if the composeable never gets called in the user session, then it’s just storage space being wasted. I assume the identity of each instance of a composeable is established during initial composition where the Compose layout system behind the scenes builds out some kind of a tree to see the composeables and their location relative to other composeables in same function. Just looking for insights.
Thanks!
https://redd.it/1v6u81e
@reddit_androiddev
In https://developer.android.com/develop/ui/compose/lifecycle#composition-anatomy
, they explain that the identity of a composeable instance is its call site, which they define to be “The call site is the source code location in which a composable is called. This influences its place in Composition, and therefore, the UI tree.”
I understand this as being the place in the source file where the composeable is called. But I find that there must be more to it than that, as it’s hard to imagine a robust, efficient system that literally keeps track of the exact line of code where each composeable gets called for a composition. For example, the compiler would have to build out a table for every composeable and store it as part of the build, and if the composeable never gets called in the user session, then it’s just storage space being wasted. I assume the identity of each instance of a composeable is established during initial composition where the Compose layout system behind the scenes builds out some kind of a tree to see the composeables and their location relative to other composeables in same function. Just looking for insights.
Thanks!
https://redd.it/1v6u81e
@reddit_androiddev
Android Developers
Lifecycle of composables | Jetpack Compose | Android Developers
This document explains the lifecycle of a composable in Jetpack Compose, from initial composition to recomposition, and how Compose optimizes UI updates, including the role of keys and stable types.
A CLI Tool to Audit and Auto-Fix Android Gradle Performance Issues Open Source
I built a CLI tool that audits Android Gradle performance problems and safely fixes them.
Unlike the usual build-speed advice that's all manual, it detects bottlenecks across config cache, build cache, Kotlin incremental, daemon and parallel execution, then applies reversible fixes with a dry-run preview. It also covers KMP and Flutter Android projects, and has CI/CD and an simple webpage dashboard. Just try
npx droidperf audit /path/to/project
GitHub: GitHub - rudradave1/droidperf: CLI tool to audit and auto-fix Android Gradle performance issues. It detects bottlenecks, suggests optimizations, and supports CI workflows for Android/KMP + Flutter projects. · GitHub
https://redd.it/1v6w3u6
@reddit_androiddev
I built a CLI tool that audits Android Gradle performance problems and safely fixes them.
Unlike the usual build-speed advice that's all manual, it detects bottlenecks across config cache, build cache, Kotlin incremental, daemon and parallel execution, then applies reversible fixes with a dry-run preview. It also covers KMP and Flutter Android projects, and has CI/CD and an simple webpage dashboard. Just try
npx droidperf audit /path/to/project
GitHub: GitHub - rudradave1/droidperf: CLI tool to audit and auto-fix Android Gradle performance issues. It detects bottlenecks, suggests optimizations, and supports CI workflows for Android/KMP + Flutter projects. · GitHub
https://redd.it/1v6w3u6
@reddit_androiddev
GitHub
GitHub - rudradave1/droidperf: CLI tool to audit and auto-fix Android Gradle performance issues. It detects bottlenecks, suggests…
CLI tool to audit and auto-fix Android Gradle performance issues. It detects bottlenecks, suggests optimizations, and supports CI workflows for Android/KMP + Flutter projects. - rudradave1/droidperf
Made an open source tool to stop multiple adb clients (AI agents, scripts, Studio) from fighting over the same device
I kept running into an annoying problem with multiple Claude Code sessions on the same machine.
I'd have two Android app apps building by two or more claude sessions, usually with one or two phones plugged in. Both agents were doing the usual install → launch → screenshot verification loop over ADB, and they kept picking the same device at the same time.
The result was chaos:
Agent A screenshots Agent B's app and assumes its own app crashed or something has happened.
It reinstalls and/or relaunches.
Agent B does the same.
Both end up stuck reinstalling and relaunching over each other.
So I built AdbHarbor.
It works as a broker that sits on port 5037 (the default ADB server port) and moves the real ADB server to 5038. Since every ADB client already connects to 5037 by default, existing tools—including
Features:
One device lease per session.
Automatically identifies sessions by walking the client's process tree back to the owning agent.
Other sessions wait in a queue.
Read-only commands (
Stale leases are reclaimed automatically if the owning process crashes.
One funny bug while recording the demo: both Claude sessions sat waiting for three minutes because my scrcpy window had already taken the lease. 😅 That led me to add an observer mode so screen mirrors never acquire exclusive device locks.
I'm curious how other people solve this problem. If you're running multiple AI agents, CI jobs, Android Studio, or other tooling on the same machine, how do you avoid device contention? Is everyone just relying on "one device per tool" by convention?
Repo: https://github.com/msomu/AdbHarbor
Demo: https://youtu.be/CCmopZ\_jFDY
https://redd.it/1v6wndf
@reddit_androiddev
I kept running into an annoying problem with multiple Claude Code sessions on the same machine.
I'd have two Android app apps building by two or more claude sessions, usually with one or two phones plugged in. Both agents were doing the usual install → launch → screenshot verification loop over ADB, and they kept picking the same device at the same time.
The result was chaos:
Agent A screenshots Agent B's app and assumes its own app crashed or something has happened.
It reinstalls and/or relaunches.
Agent B does the same.
Both end up stuck reinstalling and relaunching over each other.
adb -s lets you target a specific device, but there's no ownership or queuing on top of the shared ADB server. Nothing prevents multiple independent processes from trying to drive the same phone.So I built AdbHarbor.
It works as a broker that sits on port 5037 (the default ADB server port) and moves the real ADB server to 5038. Since every ADB client already connects to 5037 by default, existing tools—including
adb from any path, Maestro, ddmlib, Gradle, Android Studio, etc.—work without any configuration changes.Features:
One device lease per session.
Automatically identifies sessions by walking the client's process tree back to the owning agent.
Other sessions wait in a queue.
Read-only commands (
getprop, pm list, etc.) bypass locking.Stale leases are reclaimed automatically if the owning process crashes.
acquire --any atomically picks a free device and returns its serial, so multiple agents naturally spread across a device fleet instead of all grabbing the same phone.One funny bug while recording the demo: both Claude sessions sat waiting for three minutes because my scrcpy window had already taken the lease. 😅 That led me to add an observer mode so screen mirrors never acquire exclusive device locks.
I'm curious how other people solve this problem. If you're running multiple AI agents, CI jobs, Android Studio, or other tooling on the same machine, how do you avoid device contention? Is everyone just relying on "one device per tool" by convention?
Repo: https://github.com/msomu/AdbHarbor
Demo: https://youtu.be/CCmopZ\_jFDY
https://redd.it/1v6wndf
@reddit_androiddev
GitHub
GitHub - msomu/AdbHarbor: Lock broker for shared Android devices — exclusive ADB leases, queueing, and session cleanup for multi…
Lock broker for shared Android devices — exclusive ADB leases, queueing, and session cleanup for multi-agent development - msomu/AdbHarbor
log4k 2.3.0 — a Kotlin IR compiler plugin that instruments your functions with tracing, logging and metrics
/r/Kotlin/comments/1v6x5wp/log4k_230_a_kotlin_ir_compiler_plugin_that/
https://redd.it/1v6x62p
@reddit_androiddev
/r/Kotlin/comments/1v6x5wp/log4k_230_a_kotlin_ir_compiler_plugin_that/
https://redd.it/1v6x62p
@reddit_androiddev
Reddit
From the androiddev community on Reddit: log4k 2.3.0 — a Kotlin IR compiler plugin that instruments your functions with tracing…
Posted by smyrgeorge - 3 votes and 0 comments
What do you think about this monetization approach?
I'm working right now on publishing my first Android app.
This is supposed to be a paid app that will be fully on-device with no ads or tracking.
This is a dialer/launcher type app.
The initial approach is:
\- search is always for free,
\- first 20 actions on contacts or apps are free
\- afterwards a 30-day Google Play free trial (card required in Google Play but otherwise free) leading to an annual subscription worth roughly a coffee at a coffee shop
or a
\- lifetime purchase worth roughly 4 years of subscription.
What do you think about this approach?
https://redd.it/1v6z0tb
@reddit_androiddev
I'm working right now on publishing my first Android app.
This is supposed to be a paid app that will be fully on-device with no ads or tracking.
This is a dialer/launcher type app.
The initial approach is:
\- search is always for free,
\- first 20 actions on contacts or apps are free
\- afterwards a 30-day Google Play free trial (card required in Google Play but otherwise free) leading to an annual subscription worth roughly a coffee at a coffee shop
or a
\- lifetime purchase worth roughly 4 years of subscription.
What do you think about this approach?
https://redd.it/1v6z0tb
@reddit_androiddev
Reddit
From the androiddev community on Reddit
Explore this post and more from the androiddev community
Submitted my first ever game!
I've been working on a hypercasual mobile game for about 3 months now, with zero experience. It has been a long journey with MANY frustrating moments. It went from just a small side project to something I was working on every single day after work. I'm so invested in this that I even created my very own LLC. Now all that's left is to wait on Apple, and start my google play submission! Will update my status.
https://redd.it/1v6upg8
@reddit_androiddev
I've been working on a hypercasual mobile game for about 3 months now, with zero experience. It has been a long journey with MANY frustrating moments. It went from just a small side project to something I was working on every single day after work. I'm so invested in this that I even created my very own LLC. Now all that's left is to wait on Apple, and start my google play submission! Will update my status.
https://redd.it/1v6upg8
@reddit_androiddev
Reddit
From the androiddev community on Reddit
Explore this post and more from the androiddev community