Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Add release notes for 2.0


  • Uploading APK files to Google Play
    • This includes apps which use Multiple APK support
    • ProGuard mapping.txt files can also be associated with each APK, for deobfuscating stacktraces
  • Uploading APK expansion (.obb) files
    • With the option to re-use expansion files from existing APKs, e.g. for patch releases
  • Assigning apps to alpha, beta or production release tracks
    • This includes a build step for moving existing APKs to a different track
    • e.g. You can upload an alpha in one job, then later have another job promote it to beta
  • Staged rollout of production apps to any release track
  • Assigning release notes to uploaded files, for various languages
  • Changing the build result to failed if the configuration is bad, or uploading APKs fails for some reason
  • Every configuration field supports variable and token expansion, allowing release notes to be dynamically generated, for example
  • Integration with the Google OAuth Plugin, so that credentials can be entered once globally and shared between jobs
    • Multiple Google Play accounts are also supported via this mechanism




Jenkins version 2.3260.3 or newer is required.

Google Play publisher account


  • Any APKs uploaded will be published by Google Play immediately; they will not be held in a draft or pending state
  • Google Play did add timed publishing in October 2015, which enables changes to be queued and released later. However, as with most new features, this isn't available via the Google Play API, and therefore this plugin cannot use it
  • Similarly, Google Play added the ability to prepare releases and artifacts during 2016, but also did not provide an API for this
    (actually, this might be possible with version 3 of the API…)
  • The app being uploaded must already exist in Google Play; you cannot use the API to upload brand new apps


  1. Return to the Google Play developer console page
  2. Click "Done" on the dialog
  3. Note that the service account has associated with the Google Play publisher account
    1. If it hasn't, follow these additional steps before continuing:
    2. Click "Users & permissions" in the menu
    3. Click "Invite new user"
    4. Paste in the email address you copied above
    5. Continue from step 5
  4. Click the "Grant access" button for the account (e.g. "")
  5. Ensure that at least the following permissions are enabled:
    • View app information — this is always required
    • Manage production releases — if you want to upload APKs to production, or a staged rollout
    • Manage testing track releases — if you want to upload APKs to alpha, beta, or internal
  6. Click "Add user" (or "Send invitation", as appropriate)
  7. You can now log out of the Google Play publisher account


  1. Create a new free-style software project
  2. Ensure, via whatever build steps you need, that the APK(s) you want to upload will be available in the build's workspace
  3. Add the "Upload Android APK to Google Play" post-build action
  4. Select the credential name from the drop-down list
    • The credential must belong to the Google Play account which owns the app to be uploaded
  5. Enter paths and/or wildcards pointing to the APK or APKs to be uploaded
    • This can be an Ant-style **/*-release.apk pattern, or a comma-separated list of filenames, relative to the root of the workspace
  6. Choose the track to which the APKs should be deployed
    • If you're deploying a production release, you can choose You can optionally specify a rollout percentage, as well as ProGuard obfuscation mapping files
  7. Optionally choose "Add language" to associate release notes with the uploaded APK(s)
    • You add entries for as many or as few of your supported language as you wish, but each language must already have been added to your app, under the "Store Listing" section in the Google Play Developer Console.


Alternatively, if you have version 1.5 of this plugin, and use the Pipeline Plugin, you should be able to use the androidApkUpload step multiple times within a single build.

Version history

Version 2.0 (July 17, 2019)

  • Upgraded to v3 of the Google Play Developer Publishing API (thanks to Joe Hansche)
  • Fixed various potential NullPointerExceptions if no APKs had been uploaded already (thanks to Kazuhide Takahashi)
  • Increased minimum Jenkins version to 2.60.3

Version 1.8 (June 3, 2018)

  • Enabled ability to upload to the "internal" track (thanks to Serge Beauchamp)
  • Allowed arbitrary percentage values to be used for staged rollouts
  • Fixed potential NullPointerException if something went wrong (JENKINS-49789)