56
Stay up-to-date with latest news on Android Development! Content directly fetched from the subreddit just for you. Powered by : @r_channels
(HWC)? `service call SurfaceFlinger 1000 i32 1` returned `Operation not permitted` on this build.
4. **Buffer format override** — Should I change `IMPLEMENTATION_DEFINED` to `YCBCR_420_888` (0x23) or even `RGBA_8888` (0x1) for the preview stream, and handle format conversion myself?
# Technical Details for Reference
**Stream configuration:**
Stream[0]: Output
Dims: 1080 x 1920, format 0x22 (IMPLEMENTATION_DEFINED), dataspace 0x0
Combined usage: 0x1930
max HAL buffers: 24
**HAL buffer fill path:**
auto& mapper = ::android::GraphicBufferMapper::get();
mapper.importBufferNoValidate(rawHandle, &importedHandle);
mapper.lock(importedHandle, GRALLOC_USAGE_SW_WRITE_OFTEN | CAMERA_OUTPUT, bounds, &vaddr);
memcpy(vaddr, nv21FrameData, frameSize);
mapper.unlock(importedHandle);
// importedHandle returned in processCaptureResult, NOT freed
**Logs show zero** `Camera3-Stream` **timeouts** with the current code. The consumer is not starving. It simply renders black.
If anyone has experience with Tensor GS201 gralloc, AFBC buffer handling, or forcing linear buffer allocation in a Camera HAL context, I would really appreciate your input. I have been stuck on this display pipeline issue for days and I'm confident the capture side is solid, it's purely a buffer format/compression mismatch with the HWC/GPU composition path.
https://redd.it/1tf5ejn
@reddit_androiddev
I got sick of ugly, ad-filled 20-20-20 timers that die in the background. I built Blink: a 1.7MB, Material 3 daemon that actually works.
The Play Store is overflowing with "eye care" apps that are fundamentally broken. They are bloated with trackers, look like they were designed in 2014, and inevitably get killed by Android’s aggressive battery optimization after 30 minutes.
If you want a 20-20-20 rule timer that actually fires, you have to build a system-level daemon. So I did.
Blink is an entirely open-source (MIT), zero-tracker, 1.76MB utility built natively with Kotlin and Jetpack Compose. It doesn't beg the OS for background processing; it uses Exact Alarms and a Foreground Service to survive Doze mode.
I also didn't want a functional app that looked like terminal output. It needs to feel like part of the OS.
Aesthetics & Customization:
True Material 3: It uses dynamic theming to pull colors directly from your system wallpaper.
The Overlay: Instead of a jarring Activity switch that rips you out of your workflow, Blink uses TYPE_APPLICATION_OVERLAY. It floats beautifully on top of whatever you are doing.
3 Visual Styles: I built custom 60fps Compose animations for the rest screen. You can choose between Expressive (animated rings/ripple waves), Calm (smooth arcs), or Minimal (clean progress circle).
Granular Control: You can adjust the overlay opacity (30–100%), tweak the work/rest intervals (1-60m / 10-60s), and choose whether you want the overlay, a notification, or both.
The Power-User Feature:
For people who despise Android's battery throttling, I integrated Shizuku. If you have it enabled, Blink uses the Shizuku IPC bridge to silently execute cmd deviceidle whitelist on itself. It grants itself immunity from Doze mode without you ever opening the settings app.
It’s completely free. The code is clean, native, and aggressive about doing exactly what it's supposed to do.
GitHub (Releases & Source):
https://github.com/character-flat/Blink
https://redd.it/1teo2yg
@reddit_androiddev
What ASO tools are solo Android app developers using for Play Store optimization?
Solo Android app owners/devs — what ASO tools are you actually using for Play Store optimization?
I’m an indie Android developer trying to improve Play Store visibility organically and wanted to know what tools other solo developers are using for ASO.
Things I’m mainly interested in:
* Keyword research
* Competitor tracking
* A/B testing ideas
* Title/description optimization
* Icon & screenshot optimization
* Ranking/visibility tracking
I know about tools like AppTweak, App Radar, Sensor Tower, Mobile Action, etc., but many of them seem expensive for solo developers.
So I’m curious:
* Which ASO tools are actually worth paying for?
* Are there any good free or budget-friendly options?
* What has genuinely helped improve installs for your apps?
Would love to hear real experiences from indie devs instead of marketing articles.
https://redd.it/1tf1f74
@reddit_androiddev
An open source driver for bit-perfect playback is now available for free
While native Media3's bit perfect playback support is implemented on Android, here is an open source driver for bit-perfect USB Audio output that can be implemented on ANY music app for free.
https://redd.it/1texlpq
@reddit_androiddev
Motorola says device ineligible but the setting to unlock bootloader is ticked
https://redd.it/1terxlg
@reddit_androiddev
Gapless - a visual gapless media player Composable for Android
Most "gapless playback" discussions focus on audio: music apps, podcast players, seamless track transitions.
Even the Wikipedia article for gapless playback is entirely about audio content.
But there’s a whole category of Android apps where gapless matters just as much, and there’s very little reusable infrastructure for it: continuous visual playback.
This is mostly needed in digital signage and kiosks.
These systems cycle through videos, images, and web content continuously, and any black frame or flicker between assets immediately reads as a broken system.
So I built Gapless, a self-contained Jetpack Compose Composable for seamless visual playlist playback.
The key idea is that you don’t really manage playback anymore. You manage the asset list.
Everything else is handled by the player: preloading, scheduling, rendering, transitions.
Updating the asset list is also safe by design. If the currently playing asset still exists in the new list, playback continues uninterrupted while the rest of the playlist updates around it.
That shifts the mental model away from a media player state machine toward a reactive timeline of content.
What it handles internally:
* preloading the next asset before the current one ends
* dual render slots for seamless swap
* video (ExoPlayer), images (Coil 3), WebView in one playlist
* scheduling per asset (date ranges, weekdays, time windows including overnight ranges)
* hot-swappable playlists with continuity guarantees
* rotation (0/90/180/270) without affecting layout bounds
* shuffle with no immediate repeats
A lot of digital signage systems exist, but most are proprietary and tightly coupled to vendor ecosystems. Meanwhile there are tens of millions of TVs and professional displays used for signage, and a large chunk of them are Android-based, often on fairly constrained hardware.
I’m keeping this open source and evolving it based on real-world signage use cases. The focus is reliability and smooth playback.
Repo: [https://github.com/514sid/gapless](https://github.com/514sid/gapless)
Maven Central:
implementation("io.github.514sid:gapless:0.0.13")
If anyone ends up testing it in a real setup, feedback and issues on GitHub would be really helpful, especially for edge cases in kiosk and signage deployments.
https://redd.it/1tesgmu
@reddit_androiddev
Roast my idea - Instagram's comment section is broken. So I built a fix alone solo dev
​
Summary :- Built an app that filters Instagram spam comments. Solo. On my phone. No laptop. Need honest feedback.
I'm a 19-year-old guy from a small city in Madhya Pradesh and I'm building an Android app completely alone on my phone. No laptop. No CS degree. Just my phone, free tools, and YouTube.
You know how Instagram Reels comments are completely destroyed? Creator says "comment FIRE to get the link" and suddenly there's 50,000 fire comments and every real review, every genuine opinion, every actual human thought gets buried under spam.
My app puts a small floating bubble on your screen when you open Instagram comments. It automatically hides spam comments (under 5 words) and if you type any keyword like "fire" it hides every comment that's basically just that word. Then it shows you "1/47" and lets you navigate through only the real comments. Like Chrome's Find in Page but for Instagram comments.
I've been building this for months. Learning Java, Android accessibility APIs, debugging things I've never seen before, failing, starting over. No mentor. No team. Just me.
We always talk about how India needs more product builders, not just coders who work for foreign companies. I'm trying to be that. From a small city. With zero resources.
I'm not asking for money. I'm not asking you to buy anything.
Just:
\\- Tell me if this problem is real for you
\\- Would you actually use this?
\\- Any feedback on the idea
If enough people want it I'll push harder to finish it. If nobody cares I'd rather know now.
Be honest. I can take it.
(Used AI to write this post sorry)
https://redd.it/1teol0e
@reddit_androiddev
Accessibility permissions
https://redd.it/1temyej
@reddit_androiddev
without the hardware-backed cryptographic keys to decrypt it, they are left holding nothing but useless, scrambled ciphertext. Normally, an attacker would just try to find the decryption key hidden somewhere in your app's code. But because Jetpack Security delegates key management to the Android Keystore, that key is isolated in the phone's secure hardware chip (TEE/StrongBox). Even with root access, the attacker cannot easily extract that key from the hardware.
Let me conclude by saying that by implementing Jetpack Security library, you are effectively decoupling your app data's safety from the integrity of the file system.
Rooting the device might shatter the sandbox walls, but strong, authenticated encryption backed by hardware-isolated keys ensures your data remains safe.
https://preview.redd.it/wet64h4o5f1h1.png?width=1408&format=png&auto=webp&s=03aa52a8764a98dcb4d54b789cc8bd33addef975
It is time to audit our codebases, and move past plain-text storage assumptions, and embrace a Zero-Trust posture for local mobile data.
https://redd.it/1tehw0z
@reddit_androiddev
State Management in Jetpack Compose
https://slicker.me/android/compose-state-management.html
https://redd.it/1teg7eb
@reddit_androiddev
Moving side-loaded app to Google Play
What is the best way to add Google Play distribution to my existing app that I have been distributing directly for years? I have a significant customer base, and I already have other apps in Google Play. I have even verified my side-loaded app's package name with Google Play as required so that I can continue to distribute it on Google-certified devices after 2026. I would like to get the added exposure that Google Play would give me for that app. But I can't abandon my existing customers. Should I make a version of my app with a different package name and simply maintain two parallel distribution channels - one direct and one through Google Play? Or is there a simpler way?
https://redd.it/1te8c8x
@reddit_androiddev
What would you take into account when porting Android app to iOS
I have been working with my first Android-app using Kotlin and Jetpack Compose. Got the app published a quarter back to the App store and I'm really happy with the end result. However from time to time I'm thinking if the app should be ported to iOS. As a solo hobbyist I don't have too much resources running development on multiple platforms.
So what would be your suggestion? Any good resources or frameworks available how to do the porting elegantly. I'm not really in favor of learning another platform and programming language. Any thoughts or experiences are welcome.
https://redd.it/1te0k8q
@reddit_androiddev
Two months ago, I published my first Guitar toolkit app on Android. Today, I made my first sale!
Just wanted to share because I'm completely over the moon. I had put it out of my mind and just assumed it was dead in the water, but someone bought a year subscription!
I'm totally stoked! It's not a lot, but it's something. Hoping it helps them get where they are trying to be musically. I've been a musician for some 20 years, and wanted to make something that would have helped me when I got started.
https://redd.it/1te1594
@reddit_androiddev
Who’s building the best mobile app UI/UX right now?
Lately I’ve been exploring apps with really polished UI/UX, smooth interactions, and high-quality animations (especially Rive-style motion design).I’m particularly interested in:
modern mobile interfaces
clean component systems
creative onboarding flows
micro-interactions
smooth animations
well-crafted React Native experiences
Would love to discover companies, products, or teams doing exceptional work in mobile app design and development right now.
https://redd.it/1tdtcmg
@reddit_androiddev
Android app auth migration while Google Cloud project suspended
Hello!
I have suspended the project because of "hijacking". The most sad part is that this key is most likely generated by Firebase itself and used in some AI features inside it. And hijacking happened because this key for some reason was equal to the app public key.
I appealed more than a 20 days ago, but still no luck. Just no answer (although I deleted this key and rotated the Firebase key).
So the question is, has anyone migrated from GC in their Android apps while their GC project is suspended? Or, maybe, I need to wait while they answer the appeal?
I'm mostly scared because of possible consequences for the app, as the algorithm may think I'm trying to bypass the suspension. Although I want to migrate to my own, self-hosted auth/db mechanism.
https://redd.it/1tdsuxj
@reddit_androiddev
Replace physical cameras with an mp4 via v4l2loopback + custom Camera HAL3 provider
**Device:** Google Pixel 9A (Tegu)
**SoC:** Tensor GS201
**Android Version:** 16
**Kernel:** 6.1.145-android14-11-gfa1d6308d1fe-ab14691759 + KernelSU
**Goal:** Replace physical cameras with an RTSP stream via v4l2loopback + custom Camera HAL3 provider
# What I Built
I wrote a full AIDL Camera HAL3 provider (`virtual_camera_provider`) that:
* Registers as `internal/0` to hijack camera IDs 0 and 1
* Creates a `VirtualCameraSession` backed by `/dev/video0` (v4l2loopback)
* Reads YU12 frames from V4L2, converts to NV21
* Uses `GraphicBufferMapper::importBufferNoValidate` → `lock()` → CPU fill → `unlock()` to populate gralloc buffers
* Returns buffers via `processCaptureResult`
The provider is deployed via my own root module with kernelSU
# What Works (Confirmed)
|Component|Status|
|:-|:-|
|Provider registration with `CameraProviderManager`|✅|
|`configureStreams` with `IMPLEMENTATION_DEFINED` (0x22)|✅|
|V4L2 reader thread: opens `/dev/video0`, negotiates YU12, MMAPs buffers, streams|✅|
|`GraphicBufferMapper` import + lock + CPU write + unlock|✅|
|Buffer return to framework|✅|
|SurfaceFlinger receives buffers (`frame=61` on layer)|✅|
|BYTECHECK confirms valid non-zero pixel data in buffer|✅|
# The Problem
**The preview is completely black.** The camera app opens, the shutter button works, and the framework reports no errors. But the SurfaceView shows only black.
SurfaceFlinger dumps confirm:
visible reason= buffer=10565619548428 frame=61
The buffer **is** reaching SurfaceFlinger. The data **is** valid. But the display pipeline renders black.
# Root Cause Analysis
After exhaustive debugging, the issue appears to be **AFBC (Arm Frame Buffer Compression)**.
**Evidence:**
1. **CPU view has valid data** — `BYTECHECK` after `unlock()` shows:
2. The `memcpy` from V4L2 is persisting.
3. **SurfaceFlinger layer dump** shows system buffers are allocated as:
4. **Composition path** uses `DEVICE` (HWC overlay planes), not `CLIENT` (GPU).
5. **Buffer format is** `IMPLEMENTATION_DEFINED` (0x22) with usage `0x1930` (`CPU_WRITE_OFTEN | GPU_TEXTURE | CAMERA_OUTPUT | 0x800`).
**Hypothesis:** Tensor's gralloc allocates the camera preview buffer as an AFBC-compressed surface when `GPU_TEXTURE` and `CAMERA_OUTPUT` flags are present. `GraphicBufferMapper::lock()` provides a temporary linear CPU view, but `unlock()` does not correctly re-tile/re-compress the linear NV21 data back into AFBC blocks. The GPU/HWC reads the AFBC-compressed version and sees effectively black blocks.
# What I Tried
|Fix|Result|
|:-|:-|
|Raw `mmap()` from DMA-BUF fd|Same black screen; overwrites gralloc metadata header|
|`GraphicBufferMapper::lock/unlock` with proper import|Same black screen; CPU view is correct but display still black|
|`maxBuffers=4` instead of 24|No change|
|`consumerUsage=0`|No change|
|`producerUsage = stream.usage | 0x30 | 0x1000`|No change|
|Test patterns (color bars) instead of V4L2 data|Same black screen|
|`NV12` vs `NV21` chroma order|No visible difference|
# The Core Question
**How do I allocate a CPU-writable camera preview buffer on Tensor/Pixel that is NOT AFBC-compressed?**
Or alternatively: **How do I write pixel data in a way that produces valid AFBC-compressed blocks for the Tensor display pipeline?**
I know the stock Google Camera HAL uses the same `IMPLEMENTATION_DEFINED` path and works. The difference is that the stock HAL likely fills buffers via the **ISP** or **GPU compute**, not CPU `memcpy`. I am trying to do this from a CPU thread.
# What I Need Help With
1. **Tensor-specific gralloc flags** — Is there a `GRALLOC_USAGE_` flag or vendor private bit that forces linear/uncached allocation and disables AFBC for a specific buffer?
2. **AFBC re-compression** — Does `GraphicBufferMapper::unlock()` on Tensor actually trigger AFBC compression? Is there a separate flush or sync required?
3. **Alternative composition** — Can I force SurfaceFlinger to use `CLIENT` (GPU) composition for the camera layer instead of `DEVICE`
Where do you find ideas and inspiration for your personal Android side projects?
Hi everyone,
I work as a project manager by day, but in my free time, I'm an indie Android developer. I’ve built a few apps already—mostly things that solve my own everyday problems, like a local-first recipe app and a daily motivation tool.
However, I’m currently looking to start a new project and I feel like I've hit a bit of a creative wall.
I'm curious about how the rest of you come up with ideas for your personal apps. Do you actively look for problems to solve in specific niches or subreddits? Do you browse public API directories to see what data is available, or do you strictly build tools for your own personal use?
I would love to hear about your brainstorming processes and where you look when you want to build something new. Thanks!
https://redd.it/1teqfle
@reddit_androiddev
Affordable AI solution needed
Hi Guys,
I am an Android Dev & jobless at present.
I tried 5$ in both Claude and Open AI but seems like budget flies fast than the speed of light.
For example, my first query in Open AI GPT 5.5 exhausted 20 cents.
============
Although I have downgraded the model to 5.4 now for Open AI, but still looking for affordable options so I can properly use the AI tools for my journey.
https://redd.it/1tf0otm
@reddit_androiddev
Question about app name change and ranking
Question about app renaming and ranking
I’ve flip flopped on my app name a few times over the last month and have changed it back and forth several times.
After ranking not improving much for my first or second choice keywords after my last change about 8 days ago, I changed it back this morning.
My ranking immediately jumped from the 40’s to top 5-10 for a few of my preferred keywords. Literally minutes after the updates I checked.
Does this mean Google sees the new name as a mic better fit and ranks better for that reason, or do they temporarily boost your rank after a name change to see how users respond to it?
I remember seeing incredible rankings when I first launched as well, in the top 10 with the very established players in the category, but those eventually dropped off. I figured that was definitely the initial boost they provide to feel things out
But I was very surprised about the immediate ranking changes today after changing the title and short descriptions
https://redd.it/1tews4k
@reddit_androiddev
Storing Images Outside Project
Playing around with Power Automate to send data and can't get it to send me a url for my images that Glide can read. Using Box or other repository it keeps sending a web preview url instead of one with "image.png" at the end. Any advice how to get this to work?
https://redd.it/1tetarg
@reddit_androiddev
Ported Zed IDE to Android
literally started as a joke. I was like Rust compiles for aarch64, figured Zed might port. Kept going. Couldn't stop. gpui renders through Vulkan, the upstream Editor/Workspace/Project/Search/GitGraph/Extensions/Terminal crates run unchanged, the Rust .so is the app process, every pixel straight straight into that Adreno driver. subprocesses like (bash, apt, LSPs, git, ssh, node, go, rust-analyzer) route through a runtime adapter: a Termux-derived userland rebuilt under our package for the non root ed path, or a Magisk-spawned chroot for rooted users. Currently using a Samsung Tab S9 Ultra with hardware keyboard, touch input is rough , plenty of polish work left.
The termux route is brittle long term with google clamping down on noexec, probably will be figuring something for that.
Source plus signed APK , if anyone wants to take a look ,curious as to what breaks on other devices
https://github.com/Dylanmurzello/zed-android-port
https://redd.it/1terma1
@reddit_androiddev
Crypto analyser app honest review please
https://redd.it/1tempph
@reddit_androiddev
Introducing Fadocx v1.0.0 - open source document viewer with OCR for Android
You might already know **FadCam**. Today we are releasing our second open source app with the same privacy-first principles: **Fadocx**, an Android document viewer built to keep files local, private, and fully under the user's control.
A lot of file apps are filled with trackers and ads. Fadocx takes a different route: no trackers, no ads, and 100% open source.
# Highlights
* opens PDFs, Office files, spreadsheets, presentations, images, audio, video, and code files
* imports files into isolated private app storage so they stay hidden from the rest of the device
* extracts text from documents on-device with OCR using OpenCV and Tesseract
* lets you search inside documents
* sorts files into categories automatically
* supports trash and restore
* includes recent files and reading stats
What matters most here is privacy. Nothing is uploaded to a server. There is no account system, no tracking, and no ads. It is also fully open source, so the whole app is auditable.
Office documents are rendered with LibreOfficeKit for native performance, which is why the app size is a bit larger than a lightweight viewer. And Fadocx for iOS is planned for the future.
If you want to try it, the GitHub repo is here: [https://github.com/anonfaded/Fadocx](https://github.com/anonfaded/Fadocx)
Thanks for reading. It is still a first release, so feedback is welcome:)
https://redd.it/1tef90z
@reddit_androiddev
You need more than just the Android Sandbox for android app. Here’s why
As an Android developer, we probably understand that the Android application runs in its own sandbox. This running of application in its own sandbox does offer some basic layer of security.
>It isolates apps from each other.
In other words, the android app sandbox model works well in ensuring that App A cannot peek into the memory or storage of App B.
This 'horizontal' security works brilliantly on a healthy device. Now, we need to understand that this sandbox model was never intended to defend against a 'compromised' or rooted device where the user (or a malicious process) has escalated privileges.
In a rooted device scenario, the protective wall offered by the app sandbox model vanishes.
But why? Let's understand that a bit better.
In a standard environment, Android uses a UID-based isolation model where the Linux kernel (yes android under the hood use Linux kernel) acts as the gatekeeper, strictly forbidding one User ID from accessing another’s file path.
Rooting introduces the Superuser with UID 0, an identity that
>In the Linux system, User ID 0 is the "Root" user and The kernel is engineered to ignore standard file permissions for UID 0.
If a process identifies as UID 0, the kernel's response to an open() system call for a private file is always "Yes," regardless of who owns that file and hence the UID of 0 sits above the kernel's permission checks and possesses the authority to 'see all' and 'do all.'
By granting an app or user Root access, we are essentially providing a master key that renders these UID boundaries invisible, allowing direct access to the raw data stored within any app's private directory.
https://preview.redd.it/dtwmgp7r3f1h1.png?width=1408&format=png&auto=webp&s=dec4f2f7ff9dd32db9eef6ed7a1314fa07c9dd1d
And this where as an android app developer, you need to look beyond the app sand-boxing. You as an android developer should look at how to protect the app's data even when the app sandboxing is breached.
In cybersecurity, this is known as the Zero Trust Architecture principle: "Never trust, always verify."
As an Android developer, you must assume that the device your app is running on is compromised, rooted, malware-infected, or being inspected by a malicious actor with physical access and a debugger.
But how to achieve that?
>Enter Jetpack Security - Moving Protection from the OS to the Data
So, if we cannot completely trust the environment or the devices our app runs on, we, as developers must shift our strategy. We need to stop relying entirely on the operating system to hide our files, and start ensuring that the files themselves are impenetrable.
This is where Google’s Jetpack Security (JetSec) library comes into play.
Jetpack Security provides an enterprise-grade crypto wrapper that implements modern, authenticated encryption practices natively within the Android ecosystem. Instead of forcing developers to manually handle complex cryptographic primitives or risk making implementation errors with javax.crypto, JetSec offers a developer-friendly abstraction built on top of Google’s open-source Tink cryptography framework.
It essentially transforms standard, vulnerable storage mechanisms into hardware-backed storage spaces.
If you are interested in using this Jetpack security lib. I found this link useful. It is super simple to follow and shows how to make use of this lib. to save the key-value pair data in a Encrypted shared preference.
By rooting the android device gives an attacker the map and the keys to navigate anywhere within the device's file system, which means your app's private directory is no longer private. That is bad. However, by leveraging Jetpack Security, we ensure that reaching the file does not mean compromising the data.
https://preview.redd.it/egak2pyl5f1h1.png?width=1408&format=png&auto=webp&s=112867cd0ddefe1c6ebd4e68e6b53851c4eb8005
The attacker might successfully steal the file, but
Introducing Fadocx v1.0.0 - open source document viewer with OCR for Android
https://redd.it/1tefex4
@reddit_androiddev
Google Play Data Safety form silently drops Precise location declaration — anyone else?
Data Safety form silently drops Precise location declaration when both Approximate + Precise are declared. Step 4 shows "Completed," published listing shows only Approximate. Forced us into a functional regression. I asked Tier 1 support about it and they cheerily said "your app has been approved!" Not super helpful.
https://redd.it/1te8p9z
@reddit_androiddev
If your gradle build in Androidstudio is taking a long time, try building & launching via a .bat file
My gradle builds took way too long (anywhere between 1-4 minutes each time). I asked AI for speedups and apparently the normal gradle build creates multiple versions. But one can tell Gradle to build native code only for x86_64 emulator, instead of building armeabi-v7a, arm64-v8a, and x86_64.
That means it wont launch on physical phone but it builds way faster for emulator, taking only seconds instead of minutes for me. Your results may vary but it could be worth a shot.
My .bat file looks similar to this but you can surely vibe-code your own with just a few prompts, just like I did:
@echo off
set "ADB=%LOCALAPPDATA%\Android\Sdk\platform-tools\adb.exe"
set "APK=app\build\outputs\apk_from_bundle\debug\app-debug-universal.apk"
call gradlew.bat :app:packageDebugUniversalApk -PdevAbi=x86_64
"%ADB%" install -r "%APK%"
"%ADB%" shell am start -n com.mytestapp.mytestapp/.MainActivity
pause
https://redd.it/1te3cr0
@reddit_androiddev
what actually made you better at android dev besides coding?
been thinking about this lately because most people focus only on learning new tech stacks/frameworks, but honestly some of the biggest improvements for me came from stuff outside pure coding:
\- reading other people’s production code
\- debugging terrible bugs for hours
\- publishing apps and dealing with real users
\- performance optimization
\- handling play store issues/rejections
\- learning how to structure projects properly over time
curious what unexpectedly made you better as an android dev besides just “building more apps”
https://redd.it/1te06cj
@reddit_androiddev
I'm writing an article about Google's restrictions to come on Android indie devs - I need someone to talk to me about it !
Hello,
I'm a french journalist for the website "Derrière le Vacarme" : https://derriere-le-vacarme.com/
A friend recently talked to me about Google wanting to have a better grasp on Android apps that are installed on user's phones, and the campaign against this measures : https://keepandroidopen.org/fr/
I'm looking for someone that is concerned by this topic in some way, ideally a developer but Android users also have a say.
If you're interested send me a DM, the testimony can be totally anonymous, as my goal is only to understand better the whole situation.
Thanks !
https://redd.it/1tdvypd
@reddit_androiddev
Made a free keyword-aware Play Store listing translator (BYOK, no signup)
I was tired of Google Translate killing our keywords across 10 markets, so built a tool that flags it. Paste a Play Store URL, it translates into 86 languages via your own OpenRouter key, counts your primary keyword in source vs target, and flags any language where it dies. Respects 30 / 80 / 4000 char limits, auto-retries on overshoot. App is free only, you pay OpenRouter directly (\~$0.05 to $0.20 per 20-language run).
Web App Link: https://localizelistings.com
https://redd.it/1tdtxqa
@reddit_androiddev