Publishing an Android App on RuStore: A Complete Guide

Releasing updates gets stuck in moderation and manual reviews, while the team spends weeks on approvals. We set up turnkey publishing on RuStore: from app audit to access handover. A well-established process cuts update release time dramatically and takes the load off your developers.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a mobile application for FEEDME
    Development of a mobile application for FEEDME
    971
  • Development of a mobile application for XOOMER
    Development of a mobile application for XOOMER
    869
  • Development of a mobile application for RHL
    Development of a mobile application for RHL
    1289
  • Development of a mobile application for ZIPPY
    Development of a mobile application for ZIPPY
    1143
  • Development of a mobile application for Affhome
    Development of a mobile application for Affhome
    1076
  • Development of a mobile application for the FLAVORS company
    Development of a mobile application for the FLAVORS company
    677

Publishing to RuStore: where the Android app release breaks

Publishing to RuStore breaks not at the stage of uploading the file, but earlier — on the mismatch between the build and the store's requirements.

The most common reason for rejection is the app signature: the release key is lost or regenerated, and the store sees the new certificate as a different app.

In this case, an update over the old version won't install, and users will remain on the previous build with no way to receive fixes.

The second line of failures is store policies. Moderation rejects a build for permissions that aren't backed by functionality, for behavior on first launch without consent to data processing, for advertising identifiers without an explicit purpose.

Formally the app works, but it doesn't pass review — and the release goes another round, losing weeks.

The third layer is the technical state of the build itself. Different versions of libraries within a single project, a mismatch between the target and minimum OS version, missing 64-bit variants, a broken rollback on update failure.

These aren't compilation errors, but discrepancies between what has been built and what the store is ready to accept and distribute.

We go through such releases step by step: we verify the signature and certificate chain, go through the policy checklist before submission, check version compatibility and update scenarios on real devices.

Publishing to RuStore stops being a lottery when every item is checked before moderation, not after the build is rejected.

What a well-established update release process delivers

A well-established release process removes the main source of losses in app maintenance — the time between finished code and an update in the store.

When building, signing, checks, and submission for review follow a single proven route, a release stops being a week-long event and becomes a routine operation.

Release speed grows not by "writing code faster" but because there are no more manual pauses and approvals between commit and publication.

The share of rejected builds is the second metric that directly depends on the process. The store rejects not only for functional defects: the reasons include policy non-compliance, incomplete descriptions, incorrect permissions, and signature mismatches during updates.

If these checks are built into the pipeline before submission rather than performed by eye before publication, the number of returns drops predictably — typical causes are filtered out automatically.

Update stability is about users not losing data and settings when moving to a new version. What matters here is storage schema migrations, backward compatibility of formats, and correct operation on older system versions.

Regression checks on real devices, not just emulators, catch exactly those defects that affect part of the audience and hurt the rating.

Post-release app maintenance is not only about fixing bugs but also about version management: staged rollout, the ability to quickly roll back a problematic build, and separate channels for testers.

When such a loop is set up, the team ships updates more often and in smaller increments, and each release carries less risk. Let's break down how this works in practice.

Publication methods: manual upload, auto-build, hybrid

The choice of release method determines how much manual work goes into each release and how quickly the team can roll back in case of failure.

Manual publication through the developer console is good for first versions and infrequent updates: the engineer uploads the signed package themselves, fills in the listing, attaches the changelog, and submits the build for review.

When releases happen once a month, this is justified — the overhead is lower than setting up automation.

Build automation pays off with frequent releases: the pipeline builds the package, runs checks, signs it, and uploads the artifact to the developer console itself.

A hybrid release is a compromise: building and testing are automated, while the final submission for moderation and work on the listing are handled by a person to control the text and screenshots.

Option When it fits Limitations
Manual publication First versions, infrequent updates, small team Every release involves manual steps, risk of error grows
Build automation Frequent releases, multiple environments, teamwork Requires pipeline setup and storage of signing keys
Hybrid release Regular releases with manual content control Requires a process and clear division of responsibilities

In practice, most teams arrive at a hybrid: the pipeline takes the routine out of building and signing, while the developer console remains the point of deliberate decision-making about the release.

This mode provides predictable time from commit to the version appearing for users and allows rolling back to a previous build without rebuilding.

Release stages: from app audit to access handover

Releasing on RuStore is not "upload the file and wait." The store checks the build, the listing, and brand rights, and a rejection at any step sends the release back to the start of the queue. That is why we run the process in stages, recording the result at each one.

How the work is structured

  1. App audit. We review the current build: target OS versions, permissions, offline behavior, handling of backgrounding, and background task operation. Separately, we look at what the app requests from the user and how it explains those requests. The output is a list of fixes without which the review cannot be passed.
  2. Build preparation. We assemble a signed release artifact, set the version and version code, and remove debug logs and test server addresses. We verify that the signing key is stored separately and handed over to the client — losing the key blocks updates.
  3. Listing setup. We fill in the name, description, category, age rating, screenshots, and graphics according to the store's requirements. This also includes the privacy policy and payment information, if applicable.
  4. Pre-submission check. We run the build on real devices of different tiers, checking installation, updating over a previous version, and uninstallation. We catch crashes before moderation, not after.
  5. Submission and passing moderation. We publish the build, track reviewer comments, and respond to the point. Typical reasons for return are a mismatch between the description and functionality and disputed permissions.
  6. Publication and staged rollout. We release to a share of the audience, monitor failures and reviews, then open it to everyone. This way a failure does not affect the entire user flow.
  7. Access handover. We transfer to the client ownership of the developer account, the signing key, console access, and a brief guide to releasing updates.

Each stage ends with an artifact: an audit report, a signed build, a completed listing, a verification report. These show where the process stands and what remains until release.

What the client receives after publication

Publishing to RuStore is not the final button, but the handover point of the project to the client. After it, you should be left with a package that the team can use to release updates without us: signed builds, documentation, access credentials, and a process. Below is exactly what the handover includes and why each item matters in practice.

  • Signed builds. The release APK/AAB and a debug variant, signed with the project key, with the certificate fingerprint specified. Without a correct signature, RuStore will reject the upload, and an update over an installed version will not install.
  • Signing keys and their storage. The keystore, passwords, and instructions for secure storage. Losing the key means the app cannot be updated under the same identifier — it will have to be published anew.
  • Account access. Developer accounts in RuStore, the store console, and related services, registered to the client rather than the contractor. Plus roles for your employees.
  • Build documentation. A description of the environment, dependencies, and build commands so that the release can be reproduced on a clean machine, not just on the author's computer.
  • Update process. The procedure for releasing versions: how the build is prepared, who approves it, how the store listing is filled in, and what to do if moderation rejects it.
  • App listing instructions. The description, screenshots, icons, and texts in a format suitable for reuse in the next release.
  • Rollback procedure. What to do if a new version breaks a scenario: how to quickly revert to the previous build and how to notify users.

Such a package removes dependence on specific people: an update can be released by any engineer on the team, not just the one who led the project. If needed, we will discuss the task and come back with an estimate and a handover plan.

Case study: how we accelerated release delivery threefold

Before the work, the release cycle took 9–12 days: manual build on a local machine, artifact signing "by eye", manual upload to the console, waiting for review, and a separate stage of rollout to devices.

Each release dragged technical debt along with it — some fixes were simply postponed to the next window, because restarting the process was more expensive than waiting.

What was changed

We built a build and publication pipeline: the build is triggered by a tag, the artifact is signed automatically, the version and build number are set from the change history.

Then — automatic submission to RuStore via API, separate channels for internal testing and production rollout. We also set up a staged release: first 10% of the audience, then 50%, then everyone — with automatic rollback based on the error rate.

Metrics before and after

Metric Before After
Release cycle 9–12 days 3–4 days
Manual operations per release 14 2
Share of rollbacks after an update 6% 1.2%
Time to roll back a version ~4 hours 15 minutes

The key thing is not the speed itself, but that it stopped being a one-off action. Previously, the team accumulated fixes so as not to trigger the heavy process one more time; now the release goes out in small portions, and each portion is tested on a limited audience.

The share of rollbacks dropped fivefold precisely because of this: an error is caught on 10% of users, not on the entire base.

A separate effect is predictability. Release timelines no longer depend on which engineer is free on a particular day: the pipeline works the same on Friday evening and at the height of vacation season.

How is publishing to RuStore different from Google Play?

Procedurally, RuStore is closer to Google Play than it seems: the same AAB format, the same console dashboard, the same principle of staged rollout to a share of the audience. The differences begin in the build requirements and in how the store checks the app before publishing.

RuStore is stricter about native libraries and explicitly requires specifying the target API level, and it also limits the set of permissions the app requests from the user — extra entries in the manifest become a reason for rejection during moderation.

Google Play, in turn, relies on automated checks and security policies: code scanning, behavior analysis, requirements for a data collection declaration.

RuStore checks the app faster and more readily approves niche builds, but it looks more closely at payment integration and at how the app works without Google services.

If you have a dependency on Google Play Services — maps, push, authorization — it will have to be replaced with alternatives, otherwise some functions will break for RuStore users.

A separate difference is how payments work. In Google Play, in-app purchases go through the store's billing, while RuStore has its own payment mechanism, and subscriptions need to be reconnected to it. This is not a rewrite of the app, but a noticeable amount of work in the payment layer.

In terms of moderation timelines, RuStore usually responds faster than Google Play and less often sends apps back for revision over formal nitpicking. On the other hand, Google Play has broader analytics and testing tools — closed tracks, internal groups, pre-release reports. RuStore has some of these capabilities, but in a reduced form.

The main difference for the team is not in the publishing itself, but in maintaining two build branches. One codebase, two configurations, different dependencies, and different payment modules.

If you plan for this from the start, publishing to RuStore goes without rework; if you add it as a second store to an already finished app, you will have to spend time on the payment layer and on replacing Google services.

Common technical questions during publishing

Before publishing, almost every team runs into the same set of questions: how long to wait for review, what to do with the signing key when releasing an update, and how to avoid a rejection during testing. Below are answers to the technical concerns that most often come up at this stage.

How long does moderation take and what determines the timeframe?

Review usually takes from a few hours to two business days. The timeframe stretches if the description contains discrepancies with the actual functionality, supporting documents are not attached, or the app requests permissions that are not explained in the privacy policy.

We prepare the store listing and the justification for permissions in advance — this eliminates most returns for revision.

What happens to the signing key when releasing an update?

An update must be signed with the same key as the first version, otherwise the store will reject the upload. We store the key and passwords in a secure vault with a backup: losing the key means being unable to update the app under the same identifier.

If the key was lost by a previous contractor, we work through the options — from restoring access to releasing under a new identifier with user migration.

How does testing before publishing work?

We build the release, run it on a closed channel, and check the scenarios that most often break: first launch, authorization, payment, offline operation, and updating over the previous version. We also separately look at behavior on low-end devices and older OS versions.

Only after that do we submit for review — this way a moderation rejection does not turn into lost days.

Can an unsuccessful update be rolled back?

Yes, the previous version remains available, and we restore it as the current one while we prepare a fix. That is why releases go out in stages: first to a share of users, then to everyone. If the metrics drop, we halt the rollout before the problem affects the entire audience.

Do I need to publish the app again when changing contractors?

No. We request access to the developer account, transfer the signing keys, and continue releasing updates under the same identifier — users do not lose the app and do not have to reinstall it. If the credentials are lost, we help restore them through the store's support.

If your question is not on the list — describe your situation, and we will get back to you with an estimate and a work plan.

Let's discuss your app release task

To release an app in RuStore without surprises at the moderation stage, we first analyze your product and only then give timelines.

The conversation starts not with a template "we'll do it turnkey," but with specifics: what kind of app it is, which scenarios are critical, whether there is already a build and a developer account. Based on the discussion, you get an estimate and a work plan where each stage is tied to a result.

How the work proceeds

  • Task analysis. We clarify the app type, target devices, requirements for authorization, payments, and notifications. We record what is already ready and what still needs to be built.
  • Readiness check for RuStore. We review the signed release package, version, target platform, and privacy policy. Some moderation rejections are eliminated before submission.
  • Estimate and plan. We agree on the scope of work, the release order, and the points where your decision is needed. You see how long each step will take.
  • Build preparation. We configure signing, versioning, and publication parameters to meet the store's requirements.
  • Store listing setup. We prepare the description, category, screenshots, and graphics — this determines how users will find the app.
  • Submission and moderation. We submit the build, track the status, and promptly respond to reviewers' comments.
  • Release and support. We publish the release, monitor reviews, and prepare updates as the product evolves.

If you already have an app for another platform, we separately estimate the migration and adaptation — this affects timelines and scope. Describe the task: app type, current status, and desired release timeline. We'll get back to you with an estimate and work plan.