/ Miscellaneous

Gradle plugin for publishing Android artifacts to Google Play

Gradle plugin for publishing Android artifacts to Google Play


Gradle plugin for publishing Android artifacts to Google Play.


  • Autoplay is optimized for CI/CD usage:

    • it does not trigger assembly task - you can reuse build artifacts from previous build steps;
    • it accepts JSON key as base64-encoded string, which is secure and convenient way of providing sensitive data.
  • Autoplay is developer friendly:

    • it does not require storing any dummy keys in source control;
    • it can be used without provided credentials in development;
    • it has a single publish task for uploading akp, mapping file and release notes.
  • Autoplay is reliable and future-proof:

    • it has very clean and concise implementation, which is easy to understand;
    • it's covered by unit tests and easy to maintain and extend;
    • it's built using latest technologies and tools like Kotlin, Kotlin-DSL for Gradle, Android Gradle plugin etc.


In the main build.gradle

buildscript {
  repositories {
  dependencies {
    classpath "de.halfbit:autoplay:<version>"

Releases of Autoplay are published to mavenCentral() repository. Check releases section to find lastest release version.

In the application module's build.gradle

apply plugin: 'com.android.application'
apply plugin: 'android-autoplay'

autoplay {
    track "internal"
    secretJsonBase64 project.hasProperty('SECRET_JSON') ? project.property('SECRET_JSON') : ''

Call ./gradlew tasks and you will see a new publishing task publishApk<BuildVariant> in the list. Autoplay adds this task for each build variant of release type. For a project without custom build flavors configured, the task is called publishApkRelease.

Now you can call this task from a central build script. Here is an example of how to use it with Gitlab CI.

  - assemble
  - release

  stage: assemble
    - master
    - ./gradlew clean assembleRelease -PSTORE_PASS=${STORE_PASS} -PKEY_PASS=${KEY_PASS}
      - app/build/outputs/

  stage: release
    - assemble
    - master
    - ./gradlew publishApkRelease -PSECRET_JSON=${SECRET_JSON}

You can encode JSON key file into base64 string using following shell command (linux, mac)

base64 -i secret.json -o -

and provide the value to the build script using a protected variable.

Release Notes

Autoplay takes apk- and mapping-files for uploading from the respective build output directories. Release notes assigned to a release should be provided additionally. Autoplay expects release notes to be stored under src/main/autoplay/release-notes directory in accordance with the structure shown down below.

  +- main
       +- java
       +- autoplay
            +- release-notes
                 +- <track>           e.g. internal
                     +- <locale>.txt  e.g. en-US.txt