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
Bot releases are visible (Hide)
Published by SUPERCILEX about 5 years ago
Published by SUPERCILEX about 5 years ago
Fixed an incompatibility with the Android Gradle Plugin v3.5.x - #693
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.
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.
--artifact-dir
inconsistencies have been fixed: all relative paths now start from the root project directory - #691Published by SUPERCILEX over 5 years ago
The theme of this release is polish, polish everywhere. π
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.
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.
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
Google announced support for Internal Sharing artifacts which GPP now supports. Simply run ./gradlew uploadPrivateArtifact
and copy the link outputted in the console.
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.
bootstrap[Variant]PlayResources
to bootstrap[Variant]
- #569
play
src directory is now wiped out to guarantee a clean slate - #575bootstrap
and publishListing
task in the same build, the tasks will now execute in the correct order - #575from-track
is specified instead of picking something non-deterministic from the API response - #571Published by SUPERCILEX over 5 years ago
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.
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) - #554Published by SUPERCILEX over 5 years ago
This release addresses feature requests and reported bugs.
outputProcessor
didn't run if the artifacts already had valid version codes - #537Published by SUPERCILEX over 5 years ago
Published by SUPERCILEX almost 6 years ago
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.
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.
This means you can upload changes to custom alpha tracks in the Play Store.
play
folder - #471Android Gradle Plugin: >= 3.1.0
Published by SUPERCILEX almost 6 years ago
v2.0 is now official! π
The rollout
track has been removed (Google no longer supports it). #456, #457
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
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.
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.
The plugin wasn't compatible with Gradle 5. This has been fixed. (#451, #453)
Published by SUPERCILEX almost 6 years ago
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.
Play extensions are now fully configurable for each target product flavor using the mechanism linked to above.
Published by SUPERCILEX almost 6 years ago
The play.outputProcessor
signature has changed to improve compatibility across Kotlin and Groovy DSLs:
outputProcessor = { ... }
β‘ outputProcessor { ... }
promoteArtifact
task - #424gpp
should one occur - #427, #428bootstrap
task now downloads high resolution images instead of previews - #426Published by SUPERCILEX about 6 years ago
signingConfig
is missing - #244, #298de.triplet.gradle.play
to com.github.triplet.gradle.play
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.
uploadImages
: Since the plugin now makes use of Gradle's caching system and incremental buildsuntrackOld
: With the introduction of conflict resolution strategies (#301), this property haserrorOnSizeLimit
: The plugin will now always error on size limit to provide deterministicThe jsonFile
and pk12File
properties have been replaced with a unified
serviceAccountCredentials
property.
For example, publishApkRelease
-> publishReleaseApk
. Note: the old tasks are still available for
now, but will be removed in a future release.
The AGP needs to be depended on explicitly.
Published by SUPERCILEX about 6 years ago
Published by SUPERCILEX about 6 years ago
Published by SUPERCILEX about 6 years ago
Published by SUPERCILEX about 6 years ago
Published by SUPERCILEX about 6 years ago
Published by SUPERCILEX about 6 years ago