<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>react native android google play store release &#8211; Sibeesh Passion</title>
	<atom:link href="https://sibeeshpassion.com/tag/react-native-android-google-play-store-release/feed/" rel="self" type="application/rss+xml" />
	<link>https://sibeeshpassion.com</link>
	<description>My passion towards life</description>
	<lastBuildDate>Wed, 25 Jun 2025 18:07:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>/wp-content/uploads/2017/04/Sibeesh_Passion_Logo_Small.png</url>
	<title>react native android google play store release &#8211; Sibeesh Passion</title>
	<link>https://sibeeshpassion.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>React Native Android Release with Azure DevOps and Google Play Store</title>
		<link>https://sibeeshpassion.com/react-native-android-release-with-azure-devops-and-google-play-store-2/</link>
					<comments>https://sibeeshpassion.com/react-native-android-release-with-azure-devops-and-google-play-store-2/#disqus_thread</comments>
		
		<dc:creator><![CDATA[SibeeshVenu]]></dc:creator>
		<pubDate>Wed, 25 Jun 2025 18:06:57 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[azure devops]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[react native android azure devops pipeline yaml]]></category>
		<category><![CDATA[react native android custom app version pipeline]]></category>
		<category><![CDATA[react native android google play store release]]></category>
		<category><![CDATA[react native android release]]></category>
		<category><![CDATA[react native android signing]]></category>
		<category><![CDATA[react native azure devops]]></category>
		<guid isPermaLink="false">https://sibeeshpassion.com/?p=14718</guid>

					<description><![CDATA[In this post, we will see how we can release a React native Android application to Google play store with custom app signing, custom app version configured from Azure DevOps pipeline build number]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Introduction</h1>



<p>We can use React native, an open source mobile application framework by Facebook, to develop application for Android, IOS, UWP, and Web. In this post, we will see how we can release a React native Android application to Google play store with custom app signing, custom app version configured from Azure DevOps pipeline build number. Sounds interesting, right?</p>



<h1 class="wp-block-heading">Prerequisites </h1>



<ol class="wp-block-list">
<li>Make sure you have a React native application. You can follow <a href="https://learn.microsoft.com/en-us/windows/dev-environment/javascript/react-native-for-android">this doc</a> to create a dummy application.</li>



<li><a href="https://azure.microsoft.com/en-us/products/devops">Azure DevOps</a> </li>
</ol>



<h1 class="wp-block-heading">Create a dummy android pipeline</h1>



<p>Go to Pipelines in Azure DevOps and click on New pipeline, select Azure Devops, select your repository. In the Configure your pipeline section, select Android. </p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image-1.png"><img fetchpriority="high" decoding="async" width="1024" height="320" src="/wp-content/uploads/2025/06/image-1-1024x320.png" alt="" class="wp-image-14727" srcset="/wp-content/uploads/2025/06/image-1-1024x320.png 1024w, /wp-content/uploads/2025/06/image-1-300x94.png 300w, /wp-content/uploads/2025/06/image-1-768x240.png 768w, /wp-content/uploads/2025/06/image-1-1536x480.png 1536w, /wp-content/uploads/2025/06/image-1-2048x641.png 2048w, /wp-content/uploads/2025/06/image-1-400x125.png 400w, /wp-content/uploads/2025/06/image-1-1918x600.png 1918w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>Rename your YAML file and click save. You don&#8217;t have to run your pipeline yet.</p>



<h1 class="wp-block-heading">Application Configuration</h1>



<p>Before we create the pipeline, let&#8217;s do some configuration in our application. </p>



<h2 class="wp-block-heading">Update the Gradle file</h2>



<p>A gradle file helps us to,</p>



<ul class="wp-block-list">
<li>Add libraries and dependencies</li>



<li>Define how to build different environments (debug vs. release)</li>



<li>Sign Android APKs/AABs</li>



<li>Automate tasks (e.g., tests, publishing, versioning)</li>
</ul>



<h3 class="wp-block-heading">Configure the app versioning</h3>



<p>By default, the app gets the verson that is mentioned in the <strong>app.json</strong> file in the root folder. Just like all the other deployments, it is a great idea to have our app version name and app version code configured to the build number and build id from the pipeline. To do that let&#8217;s do the changes below in the <strong>android\build.gradle</strong> file. Remember there is also another build.gradle file in android/app folder. Under the buildscript section, add the below methods. </p>



<pre class="wp-block-code"><code>def getMyVersionCode = { -&gt;
        def code = project.hasProperty('versionCode') ? versionCode.toInteger() : -1
        println "VersionCode is set to $code"
        return code
    }

    def getMyVersionName = { -&gt;
        def name = project.hasProperty('versionName') ? versionName : "1.0"
        println "VersionName is set to $name"
        return name
    }</code></pre>



<p>Update the ext section as below.</p>



<pre class="wp-block-code"><code>ext {
        buildToolsVersion = "35.0.0"
        minSdkVersion = 24
        compileSdkVersion = 35
        targetSdkVersion = 34
        ndkVersion = "26.1.10909125"
        kotlinVersion = "1.9.24"
        versionName = getMyVersionName()
        versionCode = getMyVersionCode()
    }</code></pre>



<p>Below is the full <strong>android/build.gradle</strong> file content.</p>



<pre class="wp-block-code"><code>buildscript {
    def getMyVersionCode = { -&gt;
        def code = project.hasProperty('versionCode') ? versionCode.toInteger() : -1
        println "VersionCode is set to $code"
        return code
    }

    def getMyVersionName = { -&gt;
        def name = project.hasProperty('versionName') ? versionName : "1.0"
        println "VersionName is set to $name"
        return name
    }
    ext {
        buildToolsVersion = "35.0.0"
        minSdkVersion = 24
        compileSdkVersion = 35
        targetSdkVersion = 34
        ndkVersion = "26.1.10909125"
        kotlinVersion = "1.9.24"
        versionName = getMyVersionName()
        versionCode = getMyVersionCode()
    }
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath("com.android.tools.build:gradle")
        classpath("com.facebook.react:react-native-gradle-plugin")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
    }
}

apply plugin: "com.facebook.react.rootproject"</code></pre>



<p>Now go to the <strong>android\app\build.gradle</strong> file and use the new configs there. Under the android section, go to the defaultConfig and add the content below.</p>



<pre class="wp-block-code"><code>versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName</code></pre>



<p>Your final defaultConfig would looks like below.</p>



<pre class="wp-block-code"><code>defaultConfig {
        applicationId "com.yourapplicationid"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode rootProject.ext.versionCode
        versionName rootProject.ext.versionName

        manifestPlaceholders = &#91;
            appAuthRedirectScheme: "com.yourapplicationid"
        ]
    }</code></pre>



<h3 class="wp-block-heading">Create and upload keystore to the Secure files</h3>



<p>By default the app uses debug configuration to sign, you can see this setting <strong>signingConfigs.debug</strong> in the section buildTypes for release. You can also see that in the both cases it uses the same <strong>debug.keystore</strong> file to sign, which is not recommended for the production releases. Let&#8217;s create a new keystore file for our releases first. Run the command below. To run the keytool command, make sure to insall the <a href="https://www.oracle.com/java/technologies/downloads/?er=221886">Java development kit (JDK)</a>. Also make sure to reference the appropriate JDK version in the command.</p>



<pre class="wp-block-code"><code>C:\"Program Files"\Java\jdk-24\bin\keytool -genkeypair -v -keystore yourkey-key.keystore -alias your-alias -keyalg RSA -keysize 2048 -validity 200000</code></pre>



<p>Make sure to give <strong>large number as validity</strong> in the command as stated <a href="https://developer.android.com/studio/publish/app-signing">in this post</a>. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Validity (years):</strong> Set the length of time in years that your key will be valid. Your key should be valid for at least 25 years, so you can sign app updates with the same key through the lifespan of your app.</p>
</blockquote>



<p> As we have created the keystore file, let&#8217;s save them in a secured place, and good news is that the <a href="https://learn.microsoft.com/en-us/azure/devops/pipelines/library/secure-files?view=azure-devops">Azure DevOps already has a place for this</a>. </p>



<p>From Azure DevOps, go the Library under Pipelines, and click on the +Secure file option under under Secure files. </p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image.png"><img decoding="async" width="1024" height="387" src="/wp-content/uploads/2025/06/image-1024x387.png" alt="" class="wp-image-14725" srcset="/wp-content/uploads/2025/06/image-1024x387.png 1024w, /wp-content/uploads/2025/06/image-300x113.png 300w, /wp-content/uploads/2025/06/image-768x290.png 768w, /wp-content/uploads/2025/06/image-1536x580.png 1536w, /wp-content/uploads/2025/06/image-2048x774.png 2048w, /wp-content/uploads/2025/06/image-400x151.png 400w, /wp-content/uploads/2025/06/image-1589x600.png 1589w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>After the secure file is uploaded, it is important to allow permission for our pipeline to use it. Go to the secure file, and click on the Pipeline permissions and then click on the Add pipeline plus icon and select your pipeline. </p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image-3.png"><img decoding="async" width="1024" height="373" src="/wp-content/uploads/2025/06/image-3-1024x373.png" alt="" class="wp-image-14729" srcset="/wp-content/uploads/2025/06/image-3-1024x373.png 1024w, /wp-content/uploads/2025/06/image-3-300x109.png 300w, /wp-content/uploads/2025/06/image-3-768x280.png 768w, /wp-content/uploads/2025/06/image-3-1536x560.png 1536w, /wp-content/uploads/2025/06/image-3-2048x746.png 2048w, /wp-content/uploads/2025/06/image-3-400x146.png 400w, /wp-content/uploads/2025/06/image-3-1647x600.png 1647w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">Configure the keystore password as pipeline variables</h3>



<p>Now it is time to create a variable group in Azure DevOps and add the secured variables. Here keyAlias and keystorePassword is the details you had provided when you were creating the keystore. </p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image-4.png"><img decoding="async" width="1024" height="717" src="/wp-content/uploads/2025/06/image-4-1024x717.png" alt="" class="wp-image-14730" srcset="/wp-content/uploads/2025/06/image-4-1024x717.png 1024w, /wp-content/uploads/2025/06/image-4-300x210.png 300w, /wp-content/uploads/2025/06/image-4-768x538.png 768w, /wp-content/uploads/2025/06/image-4-1536x1076.png 1536w, /wp-content/uploads/2025/06/image-4-2048x1435.png 2048w, /wp-content/uploads/2025/06/image-4-400x280.png 400w, /wp-content/uploads/2025/06/image-4-856x600.png 856w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">Update the Signing config for release</h3>



<p>Let&#8217;s create a release configuration under <strong>signingConfigs</strong> like below.</p>



<pre class="wp-block-code"><code>release {
            if (project.hasProperty("KEYSTORE_PATH")) {
                storeFile file(KEYSTORE_PATH)
                storePassword KEYSTORE_PASSWORD
                keyAlias KEY_ALIAS
                keyPassword KEY_PASSWORD
            }
        }</code></pre>



<p>From the above code, the variables KEY_PASSWORD, KEY_ALIAS, KEYSTORE_PASSWORD, KEYSTORE_PATH will be set from the pipeline itself. This is to sign the files using our secure file from Azure DevOps.</p>



<p>As there is a separate signingConfig for release, let&#8217;s configure that. Update the release section under the buildTypes. </p>



<pre class="wp-block-code"><code>release {
            // Caution! In production, you need to generate your own keystore file.
            // see https://reactnative.dev/docs/signed-apk-android.
            signingConfig signingConfigs.release
            minifyEnabled enableProguardInReleaseBuilds
            // Enables resource shrinking.
            shrinkResources true
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }</code></pre>



<p>Make sure to set the minifyEnabled and shrinkResources to true as this will reduce the overall size of your app bundle and time to install the app. You can read more on the app optimization <a href="https://developer.android.com/topic/performance/app-optimization/enable-app-optimization">here</a>.</p>



<h3 class="wp-block-heading">Optional: Increase the memory during the build</h3>



<p>You may get the error below when you run your pipeline. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Execution failed for task &#8216;:app:collectReleaseDependencies&#8217;. &gt; Java heap space</p>
</blockquote>



<p>To fix this, go to your gradle.properties and update the settings below.</p>



<pre class="wp-block-code"><code># Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m</code></pre>



<h2 class="wp-block-heading">Azure DevOps YAML </h2>



<p>As we have done the configurations, let&#8217;s start updating the YAML file by setting a name first.</p>



<pre class="wp-block-code"><code>name: $(date:yyyy).$(Month)$(rev:.r) </code></pre>



<p>Below is the full YAML file.</p>



<pre class="wp-block-code"><code># Android
# Build your Android project with Gradle.
# Add steps that test, sign, and distribute the APK, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/android
# https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/android
name: $(date:yyyy).$(Month)$(rev:.r)
trigger:
  - main
  - development

pool:
  vmImage: "macos-latest"

variables:
  - group: GooglePlayStore
  - name: KEYSTORE_FILE_NAME
    value: 'yourapp-gplaystore-key.keystore'

steps:
  - checkout: self
  - task: UseNode@1
    inputs:
      version: "22.x"
    displayName: "Use Node.js 22.x"
  - script: |
      ls -la $(Build.SourcesDirectory)
      ls -la $(Build.SourcesDirectory)/android
    displayName: "List Android Directory"
  - script: |
      npm install
    displayName: "npm install"
  - task: DownloadSecureFile@1
    name: keyStore
    displayName: "Download keystore from secure files"
    inputs:
      secureFile: $(KEYSTORE_FILE_NAME)
  - script: echo $(keyStore.secureFilePath)
    displayName: "Echo Keystore Path"
  - script: |
      ls -la $(Build.SourcesDirectory)/android
      ls -la $(Build.SourcesDirectory)/android/app
    displayName: "List Files"
  - task: Gradle@3
    displayName: "Gradle Build"
    inputs:
      workingDirectory: "$(Build.SourcesDirectory)/android"
      gradleWrapperFile: "android/gradlew"
      gradleOptions: "-Xmx3072m"
      publishJUnitResults: false
      testResultsFiles: "**/TEST-*.xml"
      tasks: "assembleRelease bundleRelease"
      options: "-PversionName=$(Build.BuildNumber) -PversionCode=$(Build.BuildId) -PKEYSTORE_PATH=$(keyStore.secureFilePath) -PKEYSTORE_PASSWORD=$(keystorePassword) -PKEY_ALIAS=$(keyAlias) -PKEY_PASSWORD=$(keyPassword)"
  - task: AndroidSigning@3
    inputs:
      apkFiles: "**/*.apk"
      apksignerKeystoreFile: "$(KEYSTORE_FILE_NAME)"
      apksignerKeystorePassword: "$(keystorePassword)"
      apksignerKeystoreAlias: "$(keyAlias)"
      apksignerKeyPassword: "$(keyPassword)"
      zipalign: false
  - task: CopyFiles@2
    displayName: "Copy APK Files"
    inputs:
      contents: "**/*.apk"
      targetFolder: "$(Build.ArtifactStagingDirectory)"
  - task: CopyFiles@2
    displayName: "Copy AAB App Bundle"
    inputs:
      sourceFolder: "android/app/build/outputs/bundle/release"
      contents: "**/*.aab"
      targetFolder: "$(Build.ArtifactStagingDirectory)/android/app/build/outputs/bundle/release"
  - task: PublishBuildArtifacts@1
    displayName: "Publish artifacts"
    inputs:
      pathToPublish: $(Build.ArtifactStagingDirectory)
      artifactName: yourapp</code></pre>



<p>We use the task <strong>DownloadSecureFile@1</strong> to download the keystore file and provide its path in the <strong>Gradle@3</strong> task. We set the name to keystore and use the property secureFilePath to get its path. </p>



<p>Note that in <strong>Gradle@3</strong> task even though you have set the workingDirectory as <strong>$(Build.SourcesDirectory)/android</strong>, you will need to se <strong>gradleWrapperFile </strong>as <strong>android/gradlew</strong>. Also check the options we pass to that task, that&#8217;s how we are setting the variables to the <strong>build.gradle</strong> files. The task value assembleRelease is to generate the APK file and bundleRelease is to create Android App Bundle (aab) for Google Play Store.</p>



<h1 class="wp-block-heading">Google Play Integrations</h1>



<p>Once the pipeline is run, you should be able to manually download the App bundle file from the artifacts. </p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image-5.png"><img decoding="async" width="1024" height="888" src="/wp-content/uploads/2025/06/image-5-1024x888.png" alt="" class="wp-image-14736" srcset="/wp-content/uploads/2025/06/image-5-1024x888.png 1024w, /wp-content/uploads/2025/06/image-5-300x260.png 300w, /wp-content/uploads/2025/06/image-5-768x666.png 768w, /wp-content/uploads/2025/06/image-5-1536x1332.png 1536w, /wp-content/uploads/2025/06/image-5-400x347.png 400w, /wp-content/uploads/2025/06/image-5-692x600.png 692w, /wp-content/uploads/2025/06/image-5.png 1681w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>You can upload to the Play store console for doing an internal release to test the app internally now. Select your application, click on the Test and release menu and then under Testing, select internal testing. This is where you can create a few internal users and upload your aab file. You can share the invite link with them. Please be noted that your internal tester would need to accept the request on their first visit to install the app. They should also be able to update the application from Play store when you release a new version.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image-7.png"><img decoding="async" width="1024" height="851" src="/wp-content/uploads/2025/06/image-7-1024x851.png" alt="" class="wp-image-14742" srcset="/wp-content/uploads/2025/06/image-7-1024x851.png 1024w, /wp-content/uploads/2025/06/image-7-300x249.png 300w, /wp-content/uploads/2025/06/image-7-768x638.png 768w, /wp-content/uploads/2025/06/image-7-1536x1276.png 1536w, /wp-content/uploads/2025/06/image-7-400x332.png 400w, /wp-content/uploads/2025/06/image-7-722x600.png 722w, /wp-content/uploads/2025/06/image-7.png 1904w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h2 class="wp-block-heading">Service account and permission in Google Cloud Console</h2>



<p>Unfortunately the doc <a href="https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/android?view=azure-devops#release">here</a> and <a href="https://marketplace.visualstudio.com/items?itemName=ms-vsclient.google-play#user-content-google-play---release">here</a> are outdated and it took a while for me to configure this. You won&#8217;t be able to see the Setup and API access menu in <a href="https://play.google.com/console/">https://play.google.com/console/</a> as Google had moved them to another process. The new steps are, </p>



<h3 class="wp-block-heading"><strong>Create your service account in Google Cloud</strong></h3>



<ol start="1" class="wp-block-list">
<li>Go to <strong><a href="https://console.cloud.google.com/">Google Cloud Console</a> → IAM &amp; Admin → Service Accounts</strong></li>



<li>Create a new service account, grant it the <strong>Owner</strong> role (or at least Project > Editor)</li>



<li>Under the service account, add a <strong>JSON key</strong> and save the downloaded file. Please make sure to download this to a secure place, as this contains your key in it</li>
</ol>



<h3 class="wp-block-heading"><strong>Invite the service account in Play Console</strong></h3>



<ol start="1" class="wp-block-list">
<li>In the Play Console, go to <strong>Users and permissions</strong>.</li>



<li>Click <strong>Invite new user</strong>.</li>



<li>Paste the client_email from your JSON file (e.g. foo@bar.iam.gserviceaccount.com).</li>



<li>Assign your service account permissions:
<ul class="wp-block-list">
<li>Select your app</li>



<li>Give at least the permissions below
<ul class="wp-block-list">
<li>View app information (read-only)</li>



<li>Release to production, exclude devices, and use Play App Signing</li>



<li>Release apps to testing tracks</li>
</ul>
</li>
</ul>
</li>



<li>Send the invite, this will be auto approved</li>
</ol>



<h2 class="wp-block-heading">Create Azure DevOps service connection</h2>



<ol start="1" class="wp-block-list">
<li>Go to your AZDO project → <strong>Project settings → Service connections</strong>.</li>



<li>Create a <strong>New service connection → Google Play</strong>.</li>



<li>For <strong>service account email</strong>, use the JSON’s client_email; for <strong>private key</strong>, paste the entire key (include \n line breaks exactly)</li>



<li>Save it with the name yourapp-google-play. Make sure to replace yourapp with your app name.</li>
</ol>



<h2 class="wp-block-heading">Update the release YAML with GooglePlayRelease task</h2>



<p>The final step in the YAML file is to update it with the GooglePlayRelease task so that we can release app directly from the pipeline. </p>



<pre class="wp-block-code"><code>  - task: GooglePlayRelease@4
    inputs:
      serviceConnection: 'yourapp-google-play'
      applicationId: 'com.yourappid'
      action: 'SingleBundle'
      bundleFile: '$(Build.ArtifactStagingDirectory)/android/app/build/outputs/bundle/release/*.aab'
      track: 'internal'</code></pre>



<p>Finally, run your pipeline and if everything goes well, you should see that your pileline result as below.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image-8.png"><img decoding="async" width="1024" height="517" src="/wp-content/uploads/2025/06/image-8-1024x517.png" alt="" class="wp-image-14745" srcset="/wp-content/uploads/2025/06/image-8-1024x517.png 1024w, /wp-content/uploads/2025/06/image-8-300x151.png 300w, /wp-content/uploads/2025/06/image-8-768x388.png 768w, /wp-content/uploads/2025/06/image-8-1536x776.png 1536w, /wp-content/uploads/2025/06/image-8-2048x1034.png 2048w, /wp-content/uploads/2025/06/image-8-400x202.png 400w, /wp-content/uploads/2025/06/image-8-1188x600.png 1188w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>You should also be able to see the new version released for your internal test users in Google play console.</p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2025/06/image-9.png"><img decoding="async" width="1024" height="480" src="/wp-content/uploads/2025/06/image-9-1024x480.png" alt="" class="wp-image-14746" srcset="/wp-content/uploads/2025/06/image-9-1024x480.png 1024w, /wp-content/uploads/2025/06/image-9-300x141.png 300w, /wp-content/uploads/2025/06/image-9-768x360.png 768w, /wp-content/uploads/2025/06/image-9-1536x720.png 1536w, /wp-content/uploads/2025/06/image-9-2048x960.png 2048w, /wp-content/uploads/2025/06/image-9-400x188.png 400w, /wp-content/uploads/2025/06/image-9-1280x600.png 1280w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>You can promote or increase the rollout of your application by following this <a href="https://learn.microsoft.com/en-us/azure/devops/pipelines/ecosystems/android?view=azure-devops#promote">doc</a>. </p>



<h1 class="wp-block-heading">About the Author</h1>



<p>I am yet another developer who is passionate about writing and sharing knowledge. I have written more than 500 blogs on my&nbsp;<a rel="noreferrer noopener" href="https://sibeeshpassion.com/" target="_blank">blog</a>. If you like this content, consider following me here,</p>



<ul class="wp-block-list">
<li><a href="https://github.com/SibeeshVenu">GitHub</a></li>



<li><a href="https://medium.com/@sibeeshvenu">medium</a></li>



<li><a href="https://twitter.com/sibeeshvenu">Twitter</a></li>
</ul>



<h1 class="wp-block-heading">Your turn. What do you think?</h1>



<p>Thanks a lot for reading. Did I miss anything that you may think is needed in this article? Could you find this post useful? Kindly do not forget to share your feedback.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://sibeeshpassion.com/react-native-android-release-with-azure-devops-and-google-play-store-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
