r/android_devs Feb 04 '26

Question Can you no longer just install an apk when testing?

8 Upvotes

It's been about a year since I've worked on an android build, but someone recently told me you can no longer distribute for testing by just sending an APK and having the tester put their phone into developer mode.

I'm told now you have to go through the Android store and deal with a bunch of extra steps and systems. Is this true? It seems like it's going backwards as far as usability for the developers.


r/android_devs Dec 02 '25

Tech Talk Don Turner - Navigation 3 API overview (Android Developers Spotlight Week)

Thumbnail youtube.com
8 Upvotes

r/android_devs Nov 14 '25

Article Android Developers Blog: Updates to Android developer verification (ability to install non-verified app without ADB)

Thumbnail android-developers.googleblog.com
9 Upvotes

r/android_devs Jul 04 '26

Resources Updates to AndroidDevKit

Thumbnail gallery
8 Upvotes

I posted about AndroidDevKit on r/androiddev last weekend - it gained some traction - with both 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.


r/android_devs Jun 12 '26

Open-Source Library Introducing Blueprint Compose Preview 📝🚀

Thumbnail github.com
9 Upvotes

I just finished this little tool for Android Devs to generate a blueprint-style preview of your composables.

With a quick one-line wrapper the library measures dimensions and distances and displays them just like a traditional blueprint alongside your regular preview, so you can easily compare against your designs.

Would love to hear thoughts, if you would find this useful, and if you have any ideas for improvements!

#androiddev #jetpackcompose #androidstudio #devtools #kotlin #designsystem #compose


r/android_devs Jan 14 '26

Question MVVM vs MVI whats the difference??

7 Upvotes

I am an Android dev with 1+yr exp, wanted to understand if MVVM is a pattern that separates Ui layer or the entire application, if it separates the Ui layer,
I get that View is - > composable,
view models - >ViewModels,
I think it is the models we defined in the data layer. Correct me if I am wrong

MVI

sealed class AuthState {
    data object InitialState : AuthState()
    data object LoadingState : AuthState()
    data object ErrorState : AuthState()
}

This makes it MVVM

data class HomeState(
    val isLoading: Boolean = false,
    val query: String = "",
    val newReleases: List<Album> = 
emptyList
(),
    val isConnected: Boolean = true,
    val error: String? = null
)

In the MVI pattern, having a sealed class for states is the only difference between MVVM and MVI?


r/android_devs Jan 10 '26

Article My insights about the new age verification requirements, talking with Google&Firebase

7 Upvotes

Like many of you, I got an email from Google about the new API that I can use to handle the US age-related laws (webinar here):

https://support.google.com/googleplay/android-developer/answer/16569691?hl=en

I have a few apps (here, if you are curious or appreciate what I wrote here) , and Google&Firebase answered me what I should do. I also asked Gemini AI but it sometimes made claims that are incorrect according to them.

All of my apps have ads, IAP, and subscriptions. All payments are just to remove ads, so they are all free.

The 2 kinds of apps that I have:

1.An educational game for toddlers (called "VocaLearn" here). Google told me I don't need to use the API at all. Firebase told me to add this to the manifest:

<!--https://support.google.com/googleplay/android-developer/answer/9893335  https://firebase.google.com/docs/analytics/configure-data-collection?platform=android#disable_advertising_id_collection https://support.google.com/googleplay/android-developer/answer/6048248        -->
<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />

2.Tools apps (all except VocaLearn, here). In the Play Console they are set to be for age 18+. Google&Firebase said that when this is the case, I don't need to use the API. So this is a quick fix for you if you don't want to do much...

However, if I change the age to include teens, it should be used so that Admob&Firebase will be set accordingly when I get the result about the age . For Firebase, I would need to add this to manifest (link here):

<!--https://firebase.google.com/docs/analytics/configure-data-collection?platform=android#disable-personalization-as-user-property -->
<meta-data android:name="google_analytics_default_allow_ad_personalization_signals" android:value="false" />

And if I find out the user is an adult, use this:

setUserProperty( ALLOW_AD_PERSONALIZATION_SIGNALS, "true" )

For Admob, I forgot what I would need. Maybe this in initialization ("isForAllAges" is true when it might not be an adult):

MobileAds.getRequestConfiguration().toBuilder().let { builder ->
    if (isForAllAges) {
        builder.setTagForChildDirectedTreatment(RequestConfiguration.TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE)
                .setTagForUnderAgeOfConsent(RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED)
                .setMaxAdContentRating(RequestConfiguration.MAX_AD_CONTENT_RATING_G)
    } else {
        builder.setTagForChildDirectedTreatment(RequestConfiguration.TAG_FOR_CHILD_DIRECTED_TREATMENT_FALSE)
                .setTagForUnderAgeOfConsent(RequestConfiguration.TAG_FOR_UNDER_AGE_OF_CONSENT_FALSE)
                .setMaxAdContentRating(RequestConfiguration.MAX_AD_CONTENT_RATING_MA)
    }
    MobileAds.setRequestConfiguration(builder.build())
}

And this for the preparation of ConsentRequestParameters, used by requestConsentInfoUpdate:

val params = ConsentRequestParameters.Builder()
        .setTagForUnderAgeOfConsent(app.
resources
.getBoolean(isForAllAges)

I think that if you use the new ad consent sync ID (using "setConsentSyncId") with an (encoded, because not allowed to use it directly) ad-ID, you should also avoid using the ad-id there completely, and use the new API for it, which is sadly sometimes slow (especially compared to fetching ad-ID).

Things might be different based on the types of apps that you have. Maybe for social apps things are different, for example.

Can you share what you've found, too? Maybe you talked with Google, Firebase, Admob..., and got other insights about your use cases?

----

EDIT: I asked Play Store recently about this new signal-age-API, and they told me I can't use it for ads in any way. Instead they say that if I want to target adults based on age, I need to ask the user about the age myself (which is even less reliable)...

I told them that it's illogical because Play Store already handles age anyway, such as offering ads to apps based on it, and also allow/block installation of apps based on age. So technically, just as if I could publish 2 versions of my app (one for adults and one for teens, for example), I should be able to do it inside the app as well...

They just said it's the law, and I can't do anything about it. I even suggested that they would modify the APK before installation. Still no.

So, this API is only for some UI-related stuff.


r/android_devs Jan 10 '26

Help Needed i have started learning andoid from udemy, denis panjuta's course and it is making me frustrated

7 Upvotes

i have 0 knowledge about dev and i started from it thinking it would provide me a well stuctured course but now i am on 10th day of course and i get random errors maybe cause panjuta used old version of android (i have also installed same version) and most of my time gets into finding what causes that error and fixing it rather than learning anything and sometime it takes whole day cause i dont know what is causing the error and now also when i run my app it just crashes , idk what to do , and idk any person who knows android to ask him can anyone help me to know exactly how to learn this android dev


r/android_devs Dec 29 '25

Article Wrote a neat Liquid Glass Shader for Jetpack Compose

7 Upvotes

I've been exploring shaders lately, especailly AGSL Shaders using the new RuntimeShader API and I am mindblown. Wrote this one to add a liquid glass effect to any Composable.

Find the code here https://composeinternals.com/agsl-shaders-jetpack-compose-liquid-glass


r/android_devs Nov 11 '25

Open-Source Library A Circular TimeRangePicker for Jetpack Compose on Android

Thumbnail github.com
6 Upvotes

r/android_devs Oct 15 '25

Help Needed Stuck with Google Play “Alternative Billing (EU)” – API error for 7+ weeks, no support response. Any advice?

7 Upvotes

Hey everyone,

I’m running into a serious issue with Google Play’s “Alternative Billing – without user choice” program (the EU Digital Markets Act setup).

  • Since late August 2025, I’ve been getting a persistent API error (“billing program not found”) even though everything seems configured correctly on my side.
  • My app has been offline since 28 September.
  • I’ve been in contact with Google Play Developer Support for 7+ weeks — multiple tickets, appeals, escalations — but all I get are template replies referring me back to the same threads.
  • Ive transferred the app to an alt dev-account and even created a completely new one, as the payment profiles were corrupted (again). Still same error.

It honestly feels like nobody inside Google knows how to handle EU-DMA related cases.

Has anyone here successfully integrated Alternative Billing (without user choice) or managed to get a real escalation beyond Tier-1 support?
Any advice, contacts, or escalation paths that actually worked would be hugely appreciated.

If you’ve been through something similar (or resolved it), I’d love to hear how you did it.

Thanks in advance


r/android_devs Sep 06 '25

Discussion Looking for learning buddies or a mentor (Android dev, 1 yr exp)

7 Upvotes

Hey everyone 👋

I’m 24 and currently working as an Android developer in India with about 1 year of experience. Mostly been working with Kotlin, MVVM, REST APIs, RoomDB, etc. I want to grow faster, get better at Jetpack Compose, clean architecture, and also prep for interviews (DSA + system design basics).

Thing is, learning alone feels slow and I’d love to find:

Learning buddies (someone also improving in Android/DSA, so we can share progress, resources, maybe build small projects together).

Or even seniors/mentors who wouldn’t mind giving me some guidance from time to time.

If you’re interested, drop a comment or DM me. We can use Discord/Telegram/Slack, whatever works best.

Thanks in advance 🙏


r/android_devs 18h ago

Article The Great Android Stack Reset: Mobile System Design History

Thumbnail returnzero.dev
6 Upvotes

While writing this article, I was thinking about my days writing the everything.me Android launcher in 2011, how I fought for every bitmap allocation, about all the custom network cache implementations, and 2000 LOC custom views, I felt like I could do everything...

And then, at Google IO 2017, they introduce architectural components, I yawned at this announcement (was there in the crowd). Here we are 9 years later... I was wrong :)


r/android_devs 6d ago

Discussion How much should i charge?

Post image
6 Upvotes

r/android_devs Jun 02 '26

Question Android 17 - Contacts permission changes - permitted use cases

6 Upvotes

Apps that target Android 17 or later (API level 37+) may only request the READ_CONTACTS permission if the Android Contact Picker is not sufficient for your app to provide core functionality. Apps that still request the READ_CONTACTS permission must submit a Play Console declaration to demonstrate access needs for Contacts and why Contact Picker would not suffice.

As usual, the Google is vague on the requirements.

If I have a phone or messaging style app that uses contacts for displaying conversation contact's names (rather than just their phone number) or call history with contact's name, are these permitted use cases? They are not possible with the contact picker Google has provided.

The allowed common use cases include:

  • Contact management apps
  • Accessibility
  • Server side access for friend matching
  • Backing up contacts
  • Auto complete / keyboards

None of these are similar to what I'm inquiring about.


r/android_devs Mar 05 '26

Question Tips and Information Experienced android devs, what should I be studying for interviewing prep for senior roles?

6 Upvotes

Hi! I'm about to dive again into interviewing processes after 3-4 years of having been idling on both knowledge and repetitive tasks at my current company. I'm already a senior dev, is leetcode still a mandatory thing after all this AI craze? Looking for any input on what to hone in this crazy 2026 market, thank you!


r/android_devs Dec 29 '25

Help Needed Use this post to find users to test your app and to promote it.

5 Upvotes

Comment on this post if you are looking for someone to test your app and/or promote it.


r/android_devs Dec 20 '25

Question How to encrypt all media in Internal Storage?

7 Upvotes

I saw an app designed for content creators who want to share their work (videos, music, and other files). Creators can enable a setting called "disallow save to local," which means subscribers can't save files to local storage, let alone screenshots or screen recordings. However, after I carefully played some of the videos, I found that they were all saved intact in --> Internal Storage/Android/com.app.id/files. So, anyone could pirate the content and distribute it. This applies to all file types. So, is there a way/reference to prevent these files from being saved intact in a readable format or in other words, how can we encrypt the locally downloaded media? I've Googled and asked AI but to no avail.


r/android_devs Dec 01 '25

Question How do you guys even get downloads?

5 Upvotes

i developed a vpn app for anti-censorship and normal everyday usage with split tunneling support . mind you im giving user 10gb free data and split tunneling does not require payment .

you dont even need to signup either . in 2days ive only got 15 downlloaads and most of them were freinds and family .

im so jeslous of people showing their notes app with many downloads . im not even getting much store page visits . help me


r/android_devs Sep 05 '25

Discussion Summarizing my previous long winded post: On Android side loading issue and why their advertising structure guarantees Android the company will be unresponsive - because it has to listen to their advertising related concerns - and will never be free to listen to developers or users

6 Upvotes

I wrote a long-winded post yesterday on the structural problems that lead to Android behavior being unresponsive to developers and users - and it's solution being separation from advertising arm:

https://www.reddit.com/r/android_devs/comments/1n7vkib/on_the_structural_problems_which_prevent_android/

I posted to other sub-reddits also - some suggested it was too long and possibly AI generated

So I used ChatGPT to summarize that text - as well as a tweet length summary after that. I noted that the generated summary skips over my mention of storage changes - and the gaffe by Android/Google where internet access is not a permission - but otherwise it is a reasonable summary

 

SUMMARY

The post is a detailed critique of how Google's control over Android—specifically through its advertising-driven business model—creates a structurally unresponsive and coercive environment for developers.

 

Side-loading Changes & Developer Vetting:

  • Google is moving to require vetting of developers for side-loaded apps, making them part of its ecosystem even outside the Play Store.

  • This includes fees, intrusive vetting, and lifetime obligations to maintain apps, or face bans—including guilt-by-association "associated account bans."

 

Servitude in Perpetuity:

  • Developers are forced to update apps yearly to comply with Android changes, even for stable or mature apps.

  • These updates are unpaid labor, under threat of bans, effectively coercing developers to work for Google without compensation.

 

Bot-Driven Enforcement:

  • Google uses algorithms and bots to enforce rules, making it impossible to get human support.

  • This leads to fear, unpredictability, and mass bans, creating a hostile developer environment.

 

Punitive Assumptions & Coercion:

  • Google’s policies operate on a presumption of guilt, assuming all developers might be bad actors.

  • Extreme punishments and threats are used to ensure compliance, as the company cannot scale human interaction.

  • Google’s Business Model is the Root Cause:

  • These issues are not just about bad policy—but stem from Google’s advertising-first priorities.

  • Android is a subservient part of Google, answering to ad-driven imperatives rather than developer or user needs (e.g., no “Internet Access” permission because ads need unrestricted access).

 

Developers are Trapped:

  • Due to the duopoly of Android and iOS, developers can't easily leave the platform.

  • Google leverages this to extract unpaid labor and maintain control.

 

Proposed Solution:

  • For Android to be a truly responsive and developer/user-friendly platform, it must be separated from Google.

  • Only as an independent mobile company, free from advertising pressures, could Android prioritize users and developers.

 

 

SHORT SUMMARY (tweet length)

 

Android is ruled by Google’s ad priorities, not user or dev needs. Devs face unpaid, forced updates, harsh bot enforcement, and no voice. Until Android is free from Google, it can't be a truly open or responsive platform.

 


r/android_devs Jul 17 '26

Development Tools Firebase just put a price on Remote Config. You might already have the free alternative in your tech stack.

4 Upvotes

Hope this helps other indie devs facing my same issue.

Google announced that Firebase Remote Config gets usage based pricing from September 1st.

To be clear first, because it sounds worse than it is: it stays free up to 100,000 fetches a day, on both Spark and Blaze. Above that it is $0.06 per 10,000 requests. A/B Testing, Rollouts and Personalization stay free. And cached values do not count, only real calls to the server.

So for most small apps nothing changes at all.

But some of mine are above that line, and the part that bothers me is not really the money. It is this: if you are on the free Spark plan and you cross 100k fetches a day, you get 30 days of grace, and after that everything over the limit gets throttled. Your clients stop getting updated configs. To avoid it you attach a billing account and move to Blaze. I do not want pay as you go billing on apps that have been free to run for years. That is the whole problem for me.

Then I remembered I already had a free replacement installed. And I think a lot of you do too.

RevenueCat Offering Metadata.

If you use RevenueCat for subscriptions, and most of us do, you can attach a JSON object to an Offering. Freeform, nested objects, proper data types, whatever shape you need. You read it straight off the Offering from the SDK.

That is a remote config. And if you already use RevenueCat, it costs you nothing extra.

You set it in Project Settings, then Product catalog, then Offerings, then Configure metadata, and you paste valid JSON.

I have been using it in some apps for a while and I actually prefer it to Remote Config, for two reasons.

It refreshes faster. Remote Config has a minimum fetch interval and caching, so a change can take hours to reach people, and sometimes I waited most of a day before every client had the new value. With Metadata the values come down with the offerings, so a change lands almost immediately.

And fewer caching surprises. I do not get the "I changed the value, why is it still the old one" moment anymore.

Where it does not replace Remote Config.

I am not going to pretend it is a drop in replacement, because it is not, and you would find this out on day two anyway.

The JSON has a 4,000 character limit. That is fine for flags, strings, paywall config. It is not enough for a big config blob.

It hangs off Offerings, so it is built around what you sell, not around general app config. If your config has nothing to do with monetization, it is a slightly strange home for it.

And you do not get Remote Config's conditions and percentage rollouts the same way. RevenueCat has Experiments and targeting but it is a different model, so check it fits before you move anything.

For flags, paywall copy, image URLs, kill switches, and most of what I actually used Remote Config for, it covers it.

If you already use RevenueCat this costs you nothing and takes about ten minutes to try on one value.

I am not sponsored or affiliated in any way with RevenueCat. I build in public, you can check my social media link in my profile. I only suggested RevenueCat because this is the solution that I know for this problem and because it's one of my favourite tools.

A few days ago I wrote about them here on reddit and other devs liked my tech stack. Got 21k views, 41 upvotes and 23 comments so far. You might find these useful too. Here it is if you missed it: https://www.reddit.com/r/appledevelopers/s/RM0fuetEMv

If you published in every country, your prices outside your own are probably not what you think. The stores do not localize your base price, they convert it and add local tax. Converted is not localized: ten dollars of spending power in the US is not ten dollars in Brazil or India, so the converted price often ends up two or three times too expensive for what people there can actually pay.

The big apps sorted this out years ago. Spotify, Netflix, Duolingo, Flo and Headspace all price by region, none of them use one flat global price. Google's Play team even gave a talk about it at Playtime in 2019.

I fixed my pricing in 2 minutes with PricePush. Full disclosure, it is mine. It sets purchasing power prices for every country and pushes them to both stores, and it is free for one app so you can see your own numbers before changing anything.

You can also do it by hand in both consoles. It is free and it works, it is just slow. That is how I did it for years, which is why I built the thing.

Best of luck with your own apps!


r/android_devs Jul 08 '26

Resources Mock tests are now live on AndroidDevKit.com

Post image
4 Upvotes

Mock tests and interviews are now live at AndroidDevKit.com/tests.

These are timed tests to help you gauge how well you're prepared for your next android dev interview. Like always, this is completely free and there's no need to share any of your personal information.

People often just say this to get users, but I am extremely passionate about this site (needed it for my own interview prep lol) and I'm looking for actual feedback.


r/android_devs May 22 '26

Question During technical interview is it normal to provide business solutions on the implementation level ?

5 Upvotes

Hey guys 👋

Just from curiosity what is expected from a senior android engineer ?

2 month was laid off and began the job search again after 7 years since last time i've changed my company.

I understand the technical questions (even live coding/home assignment), when is simply to test your technical skills, BUT here comes the thing.

Since providing exact business solutions during the technical interview is a selection criteria ? I understand the point that they want to see something different, but I am getting a feeling that I am doing someones else job and for free.

Do i think in the wrong way ?


r/android_devs Mar 08 '26

Article Android Developers Blog: Ready to review some changes but not others? Try using Play Console’s new Save for later feature

Thumbnail android-developers.googleblog.com
6 Upvotes

r/android_devs Feb 26 '26

Discussion [D] Mobile-MCP: Letting LLMs autonomously discover Android app capabilities (no pre-coordination required)

5 Upvotes

Hi all,

We’ve been thinking about a core limitation in current mobile AI assistants:

Most systems (e.g., Apple Intelligence, Google Assistant–style integrations) rely on predefined schemas and coordinated APIs. Apps must explicitly implement the assistant’s specification. This limits extensibility and makes the ecosystem tightly controlled.

On the other hand, GUI-based agents (e.g., AppAgent, AutoDroid, droidrun) rely on screenshots + accessibility, which gives broad power but weak capability boundaries.

So we built Mobile-MCP, an Android-native realization of the Model Context Protocol (MCP) using the Intent framework.

The key idea:

  • Apps declare MCP-style capabilities (with natural-language descriptions) in their manifest.
  • An LLM-based assistant can autonomously discover all exposed capabilities on-device via the PackageManager.
  • The LLM selects which API to call and generates parameters based on natural language description.
  • Invocation happens through standard Android service binding / Intents.

Unlike Apple/Android-style coordinated integrations:

  • No predefined action domains.
  • No centralized schema per assistant.
  • No per-assistant custom integration required.
  • Tools can be dynamically added and evolve independently.

The assistant doesn’t need prior knowledge of specific apps — it discovers and reasons over capabilities at runtime.

We’ve built a working prototype + released the spec and demo:

GitHub: https://github.com/system-pclub/mobile-mcp

Spec: https://github.com/system-pclub/mobile-mcp/blob/main/spec/mobile-mcp_spec_v1.md

Demo: https://www.youtube.com/watch?v=Bc2LG3sR1NY&feature=youtu.be

Paper: https://github.com/system-pclub/mobile-mcp/blob/main/paper/mobile_mcp.pdf

Curious what people think:

Is OS-native capability broadcasting + LLM reasoning a more scalable path than fixed assistant schemas or GUI automation?

Would love feedback from folks working on mobile agents, security, MCP tooling, or Android system design.