Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix part of #1719, part of #3709: Add build stats CI workflow #4092

Merged
merged 244 commits into from
Jun 12, 2024

Conversation

BenHenning
Copy link
Member

@BenHenning BenHenning commented Jan 13, 2022

Explanation

Fixes part of #1719 and #3709

This PR introduces a new script & CI workflow for computing build stats to compare both AABs and universal APKs between develop and the changes in a given PR, as part of fixing #1719 (though this PR doesn't cover everything outlined in that PR). This information is then detailed and uploaded as a CI build artifact, and summarized & posted as a comment in the PR. Some details included in the summary report:

  • APK file/download size differences
  • Method count differences
  • Feature/permission differences
  • New/removed resources & assets

The script supports computing differences for multiple "profiles" at the same time, and the CI workflow has been set up to compute four:

  1. dev
  2. alpha
  3. beta
  4. GA

This workflow will be optional since it's very expensive to run (it has to assemble 8 builds, 6 of which are Proguarded). It also doesn't really need to be run in order to approve a PR, though reviewers may insist on waiting for large or suspicious changes
(such as PRs introducing new dependencies) to ensure the actual affected changes are as expected.

In order to mitigate this expense, the CI workflow runs on a scheduled cron job off of develop across all open PRs and checks them in a group. It runs at most once per day (based on https://github.com/orgs/community/discussions/55768#discussioncomment-5941720) so multiple changes to a PR will be picked up with a single check in the next cron run. Currently, it will run even for a PR that hasn't changed since the last run (but this is something that can be improved in the future if it needs to be). It's being scheduled for 2:30am (02:30) UTC which seems to have a few specific benefits:

  • Per GitHub documentation, initiating the workflow outside the start of the hour should reduce likelihood of cancellation (since the start of the hour tends to use the most resources): https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule.
  • This corresponds to 7:30pm PT, 2:30am GMT, 8:00am IST, 5:30am EAT, and 12:30pm AEST (just as a basis for a different part of the world). It's actually a very nice time that shouldn't overlap with almost any development in main locations around the world, so it hopefully won't impact Oppia organization GitHub CI resources.

The example output from these workflows can be observed in a few places:

Beyond that, implementing this utility involved several significant changes to various systems, including the build graph:

  • Three new utilities were added for the script: Aapt2Client, ApkAnalyzerClient, and BundleToolClient. Each of these correspond to Android CLI utilities, but each required special considerations:
    • Aapt2Client requires direct access to the Android SDK, but fortunately android_sdk_repository exposes this as a target so it's trivial to pass it in & call it. Some build information is needed, too (see next outer point).
    • ApkAnalyzerClient couldn't use the apkanalyzer CLI contained within the SDK since it's not exported by android_sdk_repository. Instead, we needed to depend on the CLI's internal implementation library (which I suspect is what Android Studio probably uses for its own APK Analyzer tool). This required some new implementation.
    • BundleToolClient fortunately can call right into the bundle tool library that we use when building AABs, but unfortunately that tool appears to not be designed to be called multiple times in the same process. Because Java doesn't support forking, we actually needed to fake a fork function by starting a new Java process using the current process's classpath in order to re-run bundle tool for each needed routine. Additionally, bundle tool required https://github.com/oppia/archive-patcher (which needed new BUILD files since it only supported Gradle building previously) and a non-Android version of Guava (see below for the changes this has caused).
  • A new build_vars.bzl was introduced to define the build SDK & build tools versions (this is done in a way where they can actually be passed to the new script's utilities since it needs to access aapt2).
  • rules_kotlin had a bug where resources wouldn't be pulled in properly for kt_jvm_library (see Cannot include generated file as a resource bazelbuild/rules_kotlin#281), but this was mitigated in a previous PR by upgrading rules_kotlin past alpha 2.
  • The new functionality required the JRE-compatible version of Guava (over the Android-constrained library used in the codebase today), but this introduces a one-version issue. The solution ended up being isolating the JRE-compatible Guava library to its own library with a slightly hacky direct reference to it in BundleToolClient. Some of the other attempts at solving this resulted in some Maven reference cleanups in existing script documentation. This functionality will be improved in downstream PRs, but other attempts that were originally made to isolate this cleanly were:
    • Introduce multiple maven_install files and isolate dependencies into: production, tests, scripts. This has a number of nice benefits (more correct licenses and faster Maven dependency fetches for production), but it results in very tricky one-version violations for test targets that cross dependencies between production and tests.
    • Isolated maven_install just for scripts. This is closer to the solution we'll want long-term, but it was too much complexity to fully introduce in this PR so it's been reworked into a downstream PR that can focus on cleaning up third-party dependency management across the whole codebase.

This PR is introducing a few new dependencies that, in turn, pull in a bunch of transitive dependencies. These are all due to the new apkanalyzer dependency. While it will affect licenses for this specific PR, once third-party dependencies for scripts are cleaned up in a downstream PR they will be moved out (since they are script-only dependencies).

Separately, also note that the AAPT2 utility requires stdout to be processed continuously in order for the process to finish. This was one of the primary reasons CommandExecutorImpl was reworked in #4929.

For testing: most of the changes in this PR have been extensively manually tested. However, the new utilities are lacking significant automated tests. Since this utility is a nice-to-have for the rest of the Bazel PR chain, it's being prioritized to be merged in spite of lacking code coverage. #4971 has been filed to track adding these missing tests in the long-term.

Essential Checklist

  • The PR title and explanation each start with "Fix #bugnum: " (If this PR fixes part of an issue, prefix the title with "Fix part of #bugnum: ...".)
  • Any changes to scripts/assets files have their rationale included in the PR explanation.
  • The PR follows the style guide.
  • The PR does not contain any unnecessary code changes from Android Studio (reference).
  • The PR is made from a branch that's not called "develop" and is up-to-date with "develop".
  • The PR is assigned to the appropriate reviewers (reference).

For UI-specific PRs only

N/A -- This only affects CI workflows & the build system. Technically, some dependency changes in the build system could have UI effects, but there should be no such changes in this PR.

This script primarily focuses on high-level differences, including:
- Sizes (file + download)
- New/old files, configurations, resource changes
- Method counts
This workflow is set up to build multiple binaries for both develop &
the local branch, then analyze and generate reports that are uploaded as
artifacts and added as a comment to the PR body.

This doesn't make a guarantee about exact differences since GitHub uses
a detached HEAD for the commit that may not exactly match.

This also introduces a new workflow for stats (that will initially only
contain optional workflows since they may be very expensive/time
consuming).
These allow some SDK properties to be shared across different
dependencies.
This updates the script to no longer require an Android SDK path to be
passed in since it now directly pulls in AAPT2 and directly performs the
work of apkanalyzer using its internal library rather than calling
through to the CLI library (since it's not exposed via
android_sdk_repository).

This also updates the report output to compute full comparisons for all
APKs (rather than just the universal APK) and include it as part of the
full summary (so that only 2 files are ever written regardless of the
number of profiles being compared).

This adds placeholder tests & documentation for all new utilities.

This commit includes substantial changes to the build system:
- A new dependency on https://github.com/oppia/archive-patcher
- A split between production, test, and script Maven dependencies (where
the license tools have been updated to only operate on production
dependencies since those are the ones being shipped to users)
- Two versions of Guava are now being pulled in since the scripts
require a JRE version of Guava rather than the Android version used in
production & test classes
- rules_kotlin has been upgraded to beta 3 (from alpha 2), but the
Kotlin version itself is stuck on 1.4 (to ensure interoperability with
previous builds). While this change doesn't upgrade Kotlin, it does
allow us to leverage better tooling per changes in rules_kotlin,
including enforcing strict deps.
Also, since I forgot to add these notes in the previous commit: the
executor has also been changed in this PR to support applications which
block on stdout/stderr being consumed.
Conflicts:
	third_party/maven_prod_install.json
Remove duplicated workflow.
I'm not entirely sure why this is needed yet.
@github-actions
Copy link

comment_body

@github-actions
Copy link

APK & AAB differences analysis

Note that this is a summarized snapshot. See the CI artifacts for detailed differences.

Dev

Universal APK

APK file size: 13 MiB (old), 13 MiB (new), -98039 bytes (difference)

APK download size (estimated): 12 MiB (old), 12 MiB (new), -95809 bytes (difference)

Method count: 166952 (old), 166635 (new), -317 (difference)

Features: 2 (old), 2 (new), 0 (difference)

Permissions: 6 (old), 6 (new), 0 (difference)

Resources: 4907 (old), 4907 (new), 0 (difference)

  • Anim: 47 (old), 47 (new), 0 (difference)
  • Animator: 15 (old), 15 (new), 0 (difference)
  • Array: 15 (old), 15 (new), 0 (difference)
  • Attr: 742 (old), 742 (new), 0 (difference)
  • Bool: 10 (old), 10 (new), 0 (difference)
  • Color: 345 (old), 345 (new), 0 (difference)
  • Dimen: 780 (old), 780 (new), 0 (difference)
  • Drawable: 354 (old), 354 (new), 0 (difference)
  • Id: 938 (old), 938 (new), 0 (difference)
  • Integer: 38 (old), 38 (new), 0 (difference)
  • Interpolator: 11 (old), 11 (new), 0 (difference)
  • Layout: 301 (old), 301 (new), 0 (difference)
  • Menu: 2 (old), 2 (new), 0 (difference)
  • Mipmap: 3 (old), 3 (new), 0 (difference)
  • Plurals: 10 (old), 10 (new), 0 (difference)
  • Raw: 1 (old), 1 (new), 0 (difference)
  • String: 535 (old), 535 (new), 0 (difference)
  • Style: 754 (old), 754 (new), 0 (difference)
  • Xml: 6 (old), 6 (new), 0 (difference)

Lesson assets: 71 (old), 71 (new), 0 (difference)

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 13 MiB (old), 13 MiB (new), -98039 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -92594 bytes (difference)
Method count: 166952 (old), 166635 (new), -317 (difference)

Configuration hdpi

APK file size: 57 KiB (old), 57 KiB (new), 0 bytes (difference)
APK download size (estimated): 23 KiB (old), 23 KiB (new), 0 bytes (difference)

Configuration ldpi

APK file size: 54 KiB (old), 54 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration mdpi

APK file size: 51 KiB (old), 51 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration tvdpi

APK file size: 99 KiB (old), 99 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xhdpi

APK file size: 64 KiB (old), 64 KiB (new), 0 bytes (difference)
APK download size (estimated): 28 KiB (old), 28 KiB (new), 0 bytes (difference)

Configuration xxhdpi

APK file size: 74 KiB (old), 74 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xxxhdpi

APK file size: 77 KiB (old), 77 KiB (new), 0 bytes (difference)
APK download size (estimated): 39 KiB (old), 39 KiB (new), 0 bytes (difference)

Alpha

Universal APK

APK file size: 7973 KiB (old), 7954 KiB (new), -19603 bytes (difference)

APK download size (estimated): 6883 KiB (old), 6864 KiB (new), -18911 bytes (difference)

Method count: 71192 (old), 70932 (new), -260 (difference)

Features: 2 (old), 2 (new), 0 (difference)

Permissions: 6 (old), 6 (new), 0 (difference)

Resources: 4064 (old), 4064 (new), 0 (difference)

  • Anim: 35 (old), 35 (new), 0 (difference)
  • Animator: 13 (old), 13 (new), 0 (difference)
  • Array: 14 (old), 14 (new), 0 (difference)
  • Attr: 709 (old), 709 (new), 0 (difference)
  • Bool: 8 (old), 8 (new), 0 (difference)
  • Color: 292 (old), 292 (new), 0 (difference)
  • Dimen: 573 (old), 573 (new), 0 (difference)
  • Drawable: 309 (old), 309 (new), 0 (difference)
  • Id: 883 (old), 883 (new), 0 (difference)
  • Integer: 34 (old), 34 (new), 0 (difference)
  • Interpolator: 11 (old), 11 (new), 0 (difference)
  • Layout: 266 (old), 266 (new), 0 (difference)
  • Menu: 2 (old), 2 (new), 0 (difference)
  • Mipmap: 3 (old), 3 (new), 0 (difference)
  • Plurals: 10 (old), 10 (new), 0 (difference)
  • String: 480 (old), 480 (new), 0 (difference)
  • Style: 421 (old), 421 (new), 0 (difference)
  • Xml: 1 (old), 1 (new), 0 (difference)

Lesson assets: 71 (old), 71 (new), 0 (difference)

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 7743 KiB (old), 7724 KiB (new), -19599 bytes (difference)
APK download size (estimated): 6765 KiB (old), 6747 KiB (new), -18369 bytes (difference)
Method count: 71192 (old), 70932 (new), -260 (difference)

Configuration hdpi

APK file size: 51 KiB (old), 51 KiB (new), 0 bytes (difference)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 0 bytes (difference)

Configuration ldpi

APK file size: 50 KiB (old), 50 KiB (new), 0 bytes (difference)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (difference)

Configuration mdpi

APK file size: 44 KiB (old), 44 KiB (new), 0 bytes (difference)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (difference)

Configuration tvdpi

APK file size: 87 KiB (old), 87 KiB (new), 0 bytes (difference)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (difference)

Configuration xhdpi

APK file size: 58 KiB (old), 58 KiB (new), 0 bytes (difference)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 0 bytes (difference)

Configuration xxhdpi

APK file size: 67 KiB (old), 67 KiB (new), 0 bytes (difference)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (difference)

Configuration xxxhdpi

APK file size: 70 KiB (old), 70 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Alpha_kitkat

Universal APK

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)

APK download size (estimated): 12 MiB (old), 12 MiB (new), -60161 bytes (difference)

Method count: 167864 (old), 167373 (new), -491 (difference)

Features: 2 (old), 2 (new), 0 (difference)

Permissions: 6 (old), 6 (new), 0 (difference)

Resources: 4907 (old), 4907 (new), 0 (difference)

  • Anim: 47 (old), 47 (new), 0 (difference)
  • Animator: 15 (old), 15 (new), 0 (difference)
  • Array: 15 (old), 15 (new), 0 (difference)
  • Attr: 742 (old), 742 (new), 0 (difference)
  • Bool: 10 (old), 10 (new), 0 (difference)
  • Color: 345 (old), 345 (new), 0 (difference)
  • Dimen: 780 (old), 780 (new), 0 (difference)
  • Drawable: 354 (old), 354 (new), 0 (difference)
  • Id: 938 (old), 938 (new), 0 (difference)
  • Integer: 38 (old), 38 (new), 0 (difference)
  • Interpolator: 11 (old), 11 (new), 0 (difference)
  • Layout: 301 (old), 301 (new), 0 (difference)
  • Menu: 2 (old), 2 (new), 0 (difference)
  • Mipmap: 3 (old), 3 (new), 0 (difference)
  • Plurals: 10 (old), 10 (new), 0 (difference)
  • Raw: 1 (old), 1 (new), 0 (difference)
  • String: 535 (old), 535 (new), 0 (difference)
  • Style: 754 (old), 754 (new), 0 (difference)
  • Xml: 6 (old), 6 (new), 0 (difference)

Lesson assets: 71 (old), 71 (new), 0 (difference)

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)
  • standalone-hdpi (same)
  • standalone-ldpi (same)
  • standalone-mdpi (same)
  • standalone-tvdpi (same)
  • standalone-xhdpi (same)
  • standalone-xxhdpi (same)
  • standalone-xxxhdpi (same)

Base APK

APK file size: 13 MiB (old), 13 MiB (new), -61275 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -64263 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

Configuration hdpi

APK file size: 57 KiB (old), 57 KiB (new), 0 bytes (difference)
APK download size (estimated): 23 KiB (old), 23 KiB (new), 0 bytes (difference)

Configuration ldpi

APK file size: 54 KiB (old), 54 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration mdpi

APK file size: 51 KiB (old), 51 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration tvdpi

APK file size: 99 KiB (old), 99 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xhdpi

APK file size: 64 KiB (old), 64 KiB (new), 0 bytes (difference)
APK download size (estimated): 28 KiB (old), 28 KiB (new), 0 bytes (difference)

Configuration xxhdpi

APK file size: 74 KiB (old), 74 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xxxhdpi

APK file size: 77 KiB (old), 77 KiB (new), 0 bytes (difference)
APK download size (estimated): 39 KiB (old), 39 KiB (new), 0 bytes (difference)

Configuration standalone-hdpi

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -62687 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

Configuration standalone-ldpi

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -62339 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

Configuration standalone-mdpi

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -62319 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

Configuration standalone-tvdpi

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -63110 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

Configuration standalone-xhdpi

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -60542 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

Configuration standalone-xxhdpi

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -64011 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

Configuration standalone-xxxhdpi

APK file size: 13 MiB (old), 13 MiB (new), -61279 bytes (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -62864 bytes (difference)
Method count: 167864 (old), 167373 (new), -491 (difference)

The current comment is a bit too long, so adding additional collapsing
per-flavor.
This reverts the split prod/test deps since it results in one version
issues.

This commit also fixes the nice byte formatting in the report not
working correctly for negative sizes.
@github-actions
Copy link

APK & AAB differences analysis

Note that this is a summarized snapshot. See the CI artifacts for detailed differences.

Dev

Expand to see flavor specifics

Universal APK

APK file size: 13 MiB (old), 13 MiB (new), -44 KiB (difference)

APK download size (estimated): 12 MiB (old), 12 MiB (new), -44 KiB (difference)

Method count: 166952 (old), 167601 (new), 649 (difference)

Features: 2 (old), 2 (new), 0 (difference)

Permissions: 6 (old), 6 (new), 0 (difference)

Resources: 4907 (old), 4907 (new), 0 (difference)

  • Anim: 47 (old), 47 (new), 0 (difference)
  • Animator: 15 (old), 15 (new), 0 (difference)
  • Array: 15 (old), 15 (new), 0 (difference)
  • Attr: 742 (old), 742 (new), 0 (difference)
  • Bool: 10 (old), 10 (new), 0 (difference)
  • Color: 345 (old), 345 (new), 0 (difference)
  • Dimen: 780 (old), 780 (new), 0 (difference)
  • Drawable: 354 (old), 354 (new), 0 (difference)
  • Id: 938 (old), 938 (new), 0 (difference)
  • Integer: 38 (old), 38 (new), 0 (difference)
  • Interpolator: 11 (old), 11 (new), 0 (difference)
  • Layout: 301 (old), 301 (new), 0 (difference)
  • Menu: 2 (old), 2 (new), 0 (difference)
  • Mipmap: 3 (old), 3 (new), 0 (difference)
  • Plurals: 10 (old), 10 (new), 0 (difference)
  • Raw: 1 (old), 1 (new), 0 (difference)
  • String: 535 (old), 535 (new), 0 (difference)
  • Style: 754 (old), 754 (new), 0 (difference)
  • Xml: 6 (old), 6 (new), 0 (difference)

Lesson assets: 71 (old), 71 (new), 0 (difference)

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 13 MiB (old), 13 MiB (new), -44 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), -39 KiB (difference)
Method count: 166952 (old), 167601 (new), 649 (difference)

Configuration hdpi

APK file size: 57 KiB (old), 57 KiB (new), 0 bytes (difference)
APK download size (estimated): 23 KiB (old), 23 KiB (new), 0 bytes (difference)

Configuration ldpi

APK file size: 54 KiB (old), 54 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration mdpi

APK file size: 51 KiB (old), 51 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration tvdpi

APK file size: 99 KiB (old), 99 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xhdpi

APK file size: 64 KiB (old), 64 KiB (new), 0 bytes (difference)
APK download size (estimated): 28 KiB (old), 28 KiB (new), 0 bytes (difference)

Configuration xxhdpi

APK file size: 74 KiB (old), 74 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xxxhdpi

APK file size: 77 KiB (old), 77 KiB (new), 0 bytes (difference)
APK download size (estimated): 39 KiB (old), 39 KiB (new), 0 bytes (difference)

Alpha

Expand to see flavor specifics

Universal APK

APK file size: 7973 KiB (old), 7977 KiB (new), 3413 bytes (difference)

APK download size (estimated): 6883 KiB (old), 6887 KiB (new), 4007 bytes (difference)

Method count: 71192 (old), 71244 (new), 52 (difference)

Features: 2 (old), 2 (new), 0 (difference)

Permissions: 6 (old), 6 (new), 0 (difference)

Resources: 4064 (old), 4064 (new), 0 (difference)

  • Anim: 35 (old), 35 (new), 0 (difference)
  • Animator: 13 (old), 13 (new), 0 (difference)
  • Array: 14 (old), 14 (new), 0 (difference)
  • Attr: 709 (old), 709 (new), 0 (difference)
  • Bool: 8 (old), 8 (new), 0 (difference)
  • Color: 292 (old), 292 (new), 0 (difference)
  • Dimen: 573 (old), 573 (new), 0 (difference)
  • Drawable: 309 (old), 309 (new), 0 (difference)
  • Id: 883 (old), 883 (new), 0 (difference)
  • Integer: 34 (old), 34 (new), 0 (difference)
  • Interpolator: 11 (old), 11 (new), 0 (difference)
  • Layout: 266 (old), 266 (new), 0 (difference)
  • Menu: 2 (old), 2 (new), 0 (difference)
  • Mipmap: 3 (old), 3 (new), 0 (difference)
  • Plurals: 10 (old), 10 (new), 0 (difference)
  • String: 480 (old), 480 (new), 0 (difference)
  • Style: 421 (old), 421 (new), 0 (difference)
  • Xml: 1 (old), 1 (new), 0 (difference)

Lesson assets: 71 (old), 71 (new), 0 (difference)

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)

Base APK

APK file size: 7743 KiB (old), 7746 KiB (new), 3417 bytes (difference)
APK download size (estimated): 6765 KiB (old), 6769 KiB (new), 4447 bytes (difference)
Method count: 71192 (old), 71244 (new), 52 (difference)

Configuration hdpi

APK file size: 51 KiB (old), 51 KiB (new), 0 bytes (difference)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 0 bytes (difference)

Configuration ldpi

APK file size: 50 KiB (old), 50 KiB (new), 0 bytes (difference)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (difference)

Configuration mdpi

APK file size: 44 KiB (old), 44 KiB (new), 0 bytes (difference)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (difference)

Configuration tvdpi

APK file size: 87 KiB (old), 87 KiB (new), 0 bytes (difference)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (difference)

Configuration xhdpi

APK file size: 58 KiB (old), 58 KiB (new), 0 bytes (difference)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 0 bytes (difference)

Configuration xxhdpi

APK file size: 67 KiB (old), 67 KiB (new), 0 bytes (difference)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 0 bytes (difference)

Configuration xxxhdpi

APK file size: 70 KiB (old), 70 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Alpha_kitkat

Expand to see flavor specifics

Universal APK

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)

APK download size (estimated): 12 MiB (old), 12 MiB (new), 26 KiB (difference)

Method count: 167864 (old), 168335 (new), 471 (difference)

Features: 2 (old), 2 (new), 0 (difference)

Permissions: 6 (old), 6 (new), 0 (difference)

Resources: 4907 (old), 4907 (new), 0 (difference)

  • Anim: 47 (old), 47 (new), 0 (difference)
  • Animator: 15 (old), 15 (new), 0 (difference)
  • Array: 15 (old), 15 (new), 0 (difference)
  • Attr: 742 (old), 742 (new), 0 (difference)
  • Bool: 10 (old), 10 (new), 0 (difference)
  • Color: 345 (old), 345 (new), 0 (difference)
  • Dimen: 780 (old), 780 (new), 0 (difference)
  • Drawable: 354 (old), 354 (new), 0 (difference)
  • Id: 938 (old), 938 (new), 0 (difference)
  • Integer: 38 (old), 38 (new), 0 (difference)
  • Interpolator: 11 (old), 11 (new), 0 (difference)
  • Layout: 301 (old), 301 (new), 0 (difference)
  • Menu: 2 (old), 2 (new), 0 (difference)
  • Mipmap: 3 (old), 3 (new), 0 (difference)
  • Plurals: 10 (old), 10 (new), 0 (difference)
  • Raw: 1 (old), 1 (new), 0 (difference)
  • String: 535 (old), 535 (new), 0 (difference)
  • Style: 754 (old), 754 (new), 0 (difference)
  • Xml: 6 (old), 6 (new), 0 (difference)

Lesson assets: 71 (old), 71 (new), 0 (difference)

AAB differences

Expand to see AAB specifics

Supported configurations:

  • hdpi (same)
  • ldpi (same)
  • mdpi (same)
  • tvdpi (same)
  • xhdpi (same)
  • xxhdpi (same)
  • xxxhdpi (same)
  • standalone-hdpi (same)
  • standalone-ldpi (same)
  • standalone-mdpi (same)
  • standalone-tvdpi (same)
  • standalone-xhdpi (same)
  • standalone-xxhdpi (same)
  • standalone-xxxhdpi (same)

Base APK

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 21 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

Configuration hdpi

APK file size: 57 KiB (old), 57 KiB (new), 0 bytes (difference)
APK download size (estimated): 23 KiB (old), 23 KiB (new), 0 bytes (difference)

Configuration ldpi

APK file size: 54 KiB (old), 54 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration mdpi

APK file size: 51 KiB (old), 51 KiB (new), 0 bytes (difference)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (difference)

Configuration tvdpi

APK file size: 99 KiB (old), 99 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xhdpi

APK file size: 64 KiB (old), 64 KiB (new), 0 bytes (difference)
APK download size (estimated): 28 KiB (old), 28 KiB (new), 0 bytes (difference)

Configuration xxhdpi

APK file size: 74 KiB (old), 74 KiB (new), 0 bytes (difference)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (difference)

Configuration xxxhdpi

APK file size: 77 KiB (old), 77 KiB (new), 0 bytes (difference)
APK download size (estimated): 39 KiB (old), 39 KiB (new), 0 bytes (difference)

Configuration standalone-hdpi

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 24 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

Configuration standalone-ldpi

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 21 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

Configuration standalone-mdpi

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 21 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

Configuration standalone-tvdpi

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 21 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

Configuration standalone-xhdpi

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 26 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

Configuration standalone-xxhdpi

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 22 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

Configuration standalone-xxxhdpi

APK file size: 13 MiB (old), 13 MiB (new), 23 KiB (difference)
APK download size (estimated): 12 MiB (old), 12 MiB (new), 24 KiB (difference)
Method count: 167864 (old), 168335 (new), 471 (difference)

@oppiabot
Copy link

oppiabot bot commented Jan 20, 2022

Hi @BenHenning, I'm going to mark this PR as stale because it hasn't had any updates for 7 days. If no further activity occurs within 7 days, it will be automatically closed so that others can take up the issue.
If you are still working on this PR, please make a follow-up commit within 3 days (and submit it for review, if applicable). Please also let us know if you are stuck so we can help you!

@oppiabot oppiabot bot added the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Jan 20, 2022
@BenHenning
Copy link
Member Author

BenHenning commented Jan 22, 2022

Message so that this PR is not considered stale. I'm not actively working on it yet, but I don't want it to be closed.

@oppiabot oppiabot bot removed the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Jan 22, 2022
@oppiabot
Copy link

oppiabot bot commented Jan 29, 2022

Hi @BenHenning, I'm going to mark this PR as stale because it hasn't had any updates for 7 days. If no further activity occurs within 7 days, it will be automatically closed so that others can take up the issue.
If you are still working on this PR, please make a follow-up commit within 3 days (and submit it for review, if applicable). Please also let us know if you are stuck so we can help you!

@oppiabot oppiabot bot added the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Jan 29, 2022
@BenHenning
Copy link
Member Author

Still planning to revive this (hopefully sometime next week).

@oppiabot oppiabot bot removed the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Feb 5, 2022
@oppiabot
Copy link

oppiabot bot commented Feb 12, 2022

Hi @BenHenning, I'm going to mark this PR as stale because it hasn't had any updates for 7 days. If no further activity occurs within 7 days, it will be automatically closed so that others can take up the issue.
If you are still working on this PR, please make a follow-up commit within 3 days (and submit it for review, if applicable). Please also let us know if you are stuck so we can help you!

@oppiabot oppiabot bot added the PR: LGTM label May 30, 2024
Copy link

oppiabot bot commented May 30, 2024

Hi @BenHenning, this PR is ready to be merged. Please address any remaining comments prior to merging, and feel free to merge this PR once the CI checks pass and you're happy with it. Thanks!

Copy link

oppiabot bot commented Jun 6, 2024

Hi @BenHenning, I'm going to mark this PR as stale because it hasn't had any updates for 7 days. If no further activity occurs within 7 days, it will be automatically closed so that others can take up the issue.
If you are still working on this PR, please make a follow-up commit within 3 days (and submit it for review, if applicable). Please also let us know if you are stuck so we can help you!

@oppiabot oppiabot bot added the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Jun 6, 2024
Add a config to allow warnings-as-errors to be disabled for local
development to make things easier. The default is still to treat them as
errors (and that will be the build configuration for CI, so PRs
shouldn't be mergeable with Kotlin build warnings).
@oppiabot oppiabot bot removed the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Jun 11, 2024
Copy link
Member Author

@BenHenning BenHenning left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed latest merge changes--merge was clean.

Copy link
Member Author

@BenHenning BenHenning left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-reviewed upstream merge (was clean).

Base automatically changed from upgrade-to-kotlin1.6 to develop June 12, 2024 08:51
@adhiamboperes adhiamboperes requested review from a team as code owners June 12, 2024 08:51
Copy link
Member Author

@BenHenning BenHenning left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-reviewed latest changes (merge). They actually didn't seem 100% correct, but the actual WORKSPACE file is correct. I haven't seem that sort of thing come up before; it's a bit strange.

@BenHenning
Copy link
Member Author

Enabling auto-merge since there haven't been changes, the branch is up-to-date, and everything is resolved.

Note that the new workflow should kick in starting tomorrow after the PR is merged; I will keep an eye out to make sure it actually runs as expected.

@BenHenning BenHenning enabled auto-merge (squash) June 12, 2024 17:13
@BenHenning BenHenning disabled auto-merge June 12, 2024 17:14
@BenHenning BenHenning changed the title Fix part of #1719, part of #3709: Add build stats CI workflow [Blocked: #4937] Fix part of #1719, part of #3709: Add build stats CI workflow Jun 12, 2024
@BenHenning BenHenning enabled auto-merge (squash) June 12, 2024 17:15
@BenHenning BenHenning merged commit 23def1b into develop Jun 12, 2024
43 checks passed
@BenHenning BenHenning deleted the add-build-stats-ci-workflow branch June 12, 2024 17:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants