gradle-play-publisher

GPP is Android's unofficial release automation Gradle Plugin. It can do anything from building, uploading, and then promoting your App Bundle or APK to publishing app listings and other metadata.

MIT License

Stars
4.1K

Bot releases are visible (Hide)

gradle-play-publisher - Gradle Play Publisher 2.4.2

Published by SUPERCILEX about 5 years ago

  • Fix another AGP 3.6 incompatibility - #696, #711
  • Fix regression causing build failure on unproguarded builds - #711
  • Fix not all hidden files being ignored - #703
gradle-play-publisher - Gradle Play Publisher 2.4.1

Published by SUPERCILEX about 5 years ago

Fixed an incompatibility with the Android Gradle Plugin v3.5.x - #693

gradle-play-publisher - Gradle Play Publisher 2.4.0

Published by SUPERCILEX about 5 years ago

This release transitions GPP into a new publishing model. Previously, every task would create an edit against the Play Store and then commit that edit at the end of the task. In the new model, one build == one commit per app package, meaning one edit will be used across tasks for the same app package. This makes each publishing build an atomic operation: if anything fails, everything is reset and put back into a clean state. See #629 for full details.

Note: Gradle 5.6.1 and AGP 3.5.0 are the new minimum dependency versions.

Artifact retention

GPP v2.4 supports retaining the main and patch OBB files. GPP can also retain releases if, for example, you want to retain your WearOS artifact. See the docs for more details.

In-app products bug fixes/improvements - #690

  • You can now create a completely new product with GPP (previously, it had to first be created in the Play Console)
  • Prices are now auto expanded into different currencies so you don't have to explicitly specify them all
  • Bootstrapping more than 100 products is now supported

Other changes

  • You can now publish and promote artifacts within the same build - #643
  • Listing upload tasks now run in parallel - #628
  • An incompatibility with bundles in AGP 3.6 was fixed - #633
  • An incompatibility with Gradle 6.0 was fixed - #688
  • Cascading play config merge bugs were fixed - #642
  • --artifact-dir inconsistencies have been fixed: all relative paths now start from the root project directory - #691
  • Support for uploading multiple internal sharing APKs is now available - #691
gradle-play-publisher - Gradle Play Publisher 2.3.0

Published by SUPERCILEX over 5 years ago

The theme of this release is polish, polish everywhere. 🌈

Required dependencies - #564

This release of GPP enforces modern tooling. That means you'll need Gradle 5.4 and the Android Gradle Plugin 3.5.0 at a minimum. These dependency requirements were needed in order to use the new APIs that enable GPP v2.3.0's improvements.

Notable changes

Massive performance improvements - #573

GPP now uses Gradle's Worker API in all applicable tasks. Depending on how many variants your project has and what you're uploading, you'll see fairly significant performance gains.

Revamped logging

On top of error message and task description improvements, GPP now logs the current status of every publishing task being run. This makes validating the correctness of your build much easier. Here's a sample log from running ./gradlew publish:

> Task :app:publishReleaseListing
Uploading app details
Uploading en-US listing
Uploading fr-FR listing
Committing changes

> Task :app:publishReleaseBundle
Starting App Bundle upload
App Bundle upload complete
Starting mapping file upload
Mapping file upload complete
Updating [completed] release (com.supercilex.test:[380135]) in track 'internal'
Committing changes

Support for uploading Internal Sharing artifacts - #576

Google announced support for Internal Sharing artifacts which GPP now supports. Simply run ./gradlew uploadPrivateArtifact and copy the link outputted in the console.

CLI options cleanup - #568, #567, #588

Previously, all CLI options from every task were available to all other tasks. This made things very confusing when, say, ./gradlew publishApk --default-to-app-bundles was valid. Now, every task has a tailored set of CLI options that are directly applicable to the task in question. As usual, you can find out what a task's CLI options are by running ./gradlew help --task [task]

Furthermore, the promote task now has an --update [track] option which is equivalent to --from-track [track] --track [track]; the --skip-commit CLI option has been renamed to --no-commit, following common naming conventions; and a --release-name option was added to change a release's name in the Play Console.

Bug fixes

Bootstrap task

  • A new line is now added to the end of text files - #566
  • The task name has been simplified from bootstrap[Variant]PlayResources to bootstrap[Variant] - #569
    • The old name will be removed in v3.0
  • The play src directory is now wiped out to guarantee a clean slate - #575
  • Screenshot order from the Play Store is now properly respected - #575
  • If running the bootstrap and publishListing task in the same build, the tasks will now execute in the correct order - #575

Other

  • App Bundle uploading broke in AGP 3.6 alpha 2β€”it's now fixed - #581
  • Universal APKs are now uploaded again - #595
  • The promote task now always selects the highest version code available if no from-track is specified instead of picking something non-deterministic from the API response - #571
  • Local listing validation has been removed in favor of the Publishing API's validation - #601
  • Fixed tons of incremental processing bugs
gradle-play-publisher - Gradle Play Publisher 2.2.1

Published by SUPERCILEX over 5 years ago

Credential validation changes

Credential validation has been a point of contention for GPP. In this release, we're striving to make it as simple and developer-friendly as possible. The new validation is as follows: any variant that is enabled (this is the default) must specify a serviceAccountCredentials or else inherit them from the default play configuration. Any variant that is disabled does not need to specify any credentials.

These checks will always occur at configuration time when the android variant is added. This strikes a good balance between the flexibility to disable GPP at any time without worrying about credentials, and the guarantees around clear error messages and no silent failures when you're actually trying to publish something.

See #555 for details.

Other bug fixes

  • Configuration properties weren't always merged correctly - #555
  • BuildConfig values weren't updated when outputProcessor made modifications (this still isn't quite fixed, see https://github.com/Triple-T/gradle-play-publisher/issues/553#issuecomment-487323765) - #554
  • App was built even with artifact dir specified - #557
  • Mapping files in the artifact dir weren't being uploaded - #558
  • Various bugs with language merges - #561
gradle-play-publisher - Gradle Play Publisher 2.2.0

Published by SUPERCILEX over 5 years ago

This release addresses feature requests and reported bugs.

New features

  • Support disabling GPP (docs) - #528
  • Support uploading pre-built artifacts (docs) - #538
  • Support proving Play Console artifact release names (docs) - #539

Bug fixes

  • If no release notes were present when promoting a release, they weren't always retrieved from your local machine - #506
  • outputProcessor didn't run if the artifacts already had valid version codes - #537
  • Permanently fix timeout issues by making the timeout infinite - #540
  • Screenshots were incorrectly merged across languages - #541
gradle-play-publisher - Gradle Play Publisher 2.1.1

Published by SUPERCILEX over 5 years ago

  • Fixed broken app bundle uploading - #526
  • An error is now logged if a debuggable release build is detected - #500
gradle-play-publisher - Gradle Play Publisher 2.1.0

Published by SUPERCILEX almost 6 years ago

Major new features

Pending commits are now supported

You can now run a build without actually committing the changes to the Play Store. This makes uploading wear APKs and other use cases possible. See the docs to get started.

A side effect of supporting this features is that each flavor can uniquely configure all of its play properties.

Credential validation has been significantly reworked

  • Validation no longer occurs at configuration time, only when a GPP task is scheduled to run
    • Note: we will still fail the build if no credentials are provided for any flavor
  • Tasks that aren't configured with credentials will be skipped

In essence, you no longer have to configure global credentials. Only flavors you plan to publish need to be configured before their tasks' execution. For more information on using different credentials, see the docs.

Arbitrary tracks are now supported

This means you can upload changes to custom alpha tracks in the Play Store.

Bug fixes and improvements

  • Hidden files/folders are ignored in the play folder - #471
  • Clarified the unauthenticated service account error message - #487
  • Image downloads in the bootstrap task are parallelized - #492
  • Network request timeout values have been further increased to 5 mins - #479
  • HTTPS proxies are now supported - #481

Required dependency versions

Android Gradle Plugin: >= 3.1.0

gradle-play-publisher - Gradle Play Publisher 2.0.0

Published by SUPERCILEX almost 6 years ago

v2.0 is now official! πŸŽ‰

Breaking changes

The rollout track has been removed (Google no longer supports it). #456, #457

Bug fixes

When publishing an artifact with the inProgress status, existing releases are no longer overwritten. This means you can safely publish an inProgress artifact to a channel with active releases. #457

Changelogs from prereleases

gradle-play-publisher - Gradle Play Publisher 2.0.0 rc 2

Published by SUPERCILEX almost 6 years ago

If all goes well, this will be the last release before 2.0 GA. If you've got any last-minute feedback, now's the time.

Breaking changes

We finally moved to the Gradle Plugin Repository! You'll want to remove the buildscript dependency and set the plugin's version when declaring it in the plugins block. Feel free to have a look at our new installation documentation.

Bug fix

The plugin wasn't compatible with Gradle 5. This has been fixed. (#451, #453)

gradle-play-publisher - Gradle Play Publisher 2.0.0 rc 1

Published by SUPERCILEX almost 6 years ago

Breaking changes

playAccountConfigs has been renamed to playConfigs. In addition, the DSL entry names must now match the product flavor names you wish to override. See the new docs here for examples.

New Features

Play extensions are now fully configurable for each target product flavor using the mechanism linked to above.

gradle-play-publisher - Gradle Play Publisher 2.0.0 beta 2

Published by SUPERCILEX almost 6 years ago

Breaking changes

The play.outputProcessor signature has changed to improve compatibility across Kotlin and Groovy DSLs:
outputProcessor = { ... } ➑ outputProcessor { ... }

Bug fixes

  • Crash when moving a draft to the completed stage using the promoteArtifact task - #424
  • Compatibility issues with Gradle versions less than 4.4 - #432, #443
  • Application not found errors are now ignored when using the automatic version conflict resolution strategy - #441, #442
  • Task naming conflicts are now handled by prefixing task names with gpp should one occur - #427, #428

Improvements

  • The bootstrap task now downloads high resolution images instead of previews - #426
  • Image uploading is now smarter to save you bandwidth: images will only be uploaded if the task is out-of-date and the file on disk is different from the one already uploaded to the Play Store - #423, #425
gradle-play-publisher - Gradle Play Publisher 2.0.0 beta 1

Published by SUPERCILEX about 6 years ago

Features and improvements

  • Support Android App Bundles - #262, #319
  • Support promoting existing releases - #389, #284, #104
  • Support publishing in-app purchases - #322, #181
  • Allow overriding configuration via command line options - #326
  • Allow bootstrapping only certain listing metadata - #375, #372
  • Fully support multi-dimensional flavors - #130, #311
  • Fill missing metadata with data from the default language - #107, #323
  • Support Gradle cache and incremental builds - #304, #308
  • Support Gradle task configuration avoidance - #388
  • Support different resolution strategies in case of version conflicts - #301
  • Add group tasks to publish all variants at once - #117, #273
  • Move all public tasks to "Publishing" group instead of "Play Store" - #365
  • Improve error messages and logging - #238, #268
  • Add status indicators and upload progress - #298

Bug fixes

  • Don't upload the universal APK if splits are provided - #393, #380
  • Provide publishing tasks even when signingConfig is missing - #244, #298
  • Don't upload 0 byte mapping files - #370, #319
  • A ton of other fixes we didn't track πŸ˜…

Maintenance

  • Convert plugin to Kotlin
  • Bump Android Publisher plugin version to v3
  • Moved package from de.triplet.gradle.play to com.github.triplet.gradle.play

Breaking changes

Updated listings structure

As a precondition for supporting multi-dimensional flavors, the structure of listings metadata
has changed:

For example, english listing files have moved:

../play/en-US/listing/shortdescription --> ../play/listings/en-US/shortdescription

The new structure and file names are available here.

Removed configuration properties

  • uploadImages: Since the plugin now makes use of Gradle's caching system and incremental builds
    (#308) to only upload images if they have changed, this property has become obsolete.
  • untrackOld: With the introduction of conflict resolution strategies (#301), this property has
    become obsolete.
  • errorOnSizeLimit: The plugin will now always error on size limit to provide deterministic
    behavior.
Simplified Service Account credentials API

The jsonFile and pk12File properties have been replaced with a unified
serviceAccountCredentials property.

Renamed tasks to follow AGP conventions

For example, publishApkRelease -> publishReleaseApk. Note: the old tasks are still available for
now, but will be removed in a future release.

AGP no longer bundled

The AGP needs to be depended on explicitly.

gradle-play-publisher -

Published by SUPERCILEX about 6 years ago

gradle-play-publisher - Gradle Play Publisher 1.2.2

Published by SUPERCILEX about 6 years ago

  • More descriptive error message when texts exceed allowed length - #172
  • Update character limit for app title to 50 characters - #224, #229
  • Support for internal test track - #253
gradle-play-publisher - Gradle Play Publisher 1.2.0

Published by SUPERCILEX about 6 years ago

  • Support for multiple service accounts - #76, #161
  • Support ABI splits - #39
  • Support for uploading proguard mapping files - #132
  • Automatically untrack older versions in other channels during upload - #121
  • Make sure to only read the first line for items that expect a single line string - #143
  • Remove trailing linebreaks - #187
gradle-play-publisher - Gradle Play Publisher 1.2.0 beta 1

Published by SUPERCILEX about 6 years ago

gradle-play-publisher - Gradle Play Publisher 1.1.5

Published by SUPERCILEX about 6 years ago

  • Support Filipino in Metadata - #142
  • Support Screenshots for Wear devices - #127
  • Fixed character count for line breaks on Windows - #136
gradle-play-publisher - Gradle Play Publisher 1.1.4

Published by SUPERCILEX about 6 years ago

  • Do not require signingConfig for bootstrap and listing tasks - #100
  • Support JSON file credentials - #97
gradle-play-publisher - Gradle Play Publisher 1.1.3

Published by SUPERCILEX about 6 years ago

  • Support staged rollouts - #79, #80
  • Bugfix: Bootstrap into main source set for projects without flavors - #87