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

Add support for strict and unused dependency detection [Blocked: #4920] #4978

Closed

Conversation

BenHenning
Copy link
Member

Explanation

TODO: Finish.

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

If your PR includes UI-related changes, then:

  • Add screenshots for portrait/landscape for both a tablet & phone of the before & after UI changes
  • For the screenshots above, include both English and pseudo-localized (RTL) screenshots (see RTL guide)
  • Add a video showing the full UX flow with a screen reader enabled (see accessibility guide)
  • Add a screenshot demonstrating that you ran affected Espresso tests locally & that they're passing

Targets may not fully build at this stage since some changes to build
toolchains (especially rules_kotlin) were done, but are being committed
in a follow-up commit.

This also involves very broad changes and significant complexity
reduction throughout the app targets (by eliminating the need for
genrules, reducing the amount of databinding generation needed, and
simplifying defining both library and test targets).
This customizes rules_kotlin to support a variety of fixes to make both
strict and unused deps viable for the Oppia Android codebase (though
much more of the changes benefit unused deps checking).

This includes significant patched-in customizations to rules_kotlin and
changes the build pipeline such that rules_kotlin itself is built prior
to using it. This is a small add-on in build time (particularly
noticeable for initial builds) that the team will have to cope with
until the patched changes can be accepted into rules_kotlin itself &
released.

This commit also enables actual error-based checking for both strict and
unused deps.
This new script can automatically parse the output from a suggested or
unused deps failure and lookup the correct Oppia-specific target to use,
and even fix it for the author. This is similar to buildozer except it
works better in the Oppia environment.
Enable Kotlin builder option to use ABI jars which introduces
compilation avoidance and should improve incremental build times. See:
https://github.com/bazelbuild/rules_kotlin/blob/master/CompileAvoidance.md#abi-support.

Also, fix one unused dep situation that somehow changed with these
recent options.
This addresses a core querying issue that leads to the wrong target
being suggested. It also fixes normalization to improve target deletion,
and fixes an issue with certain external repository detection based on
the target prefix.
Specifically:
1. Adds a force resources option for oppia_android_library that is
   useful for times when a merge-only resource can't be added but
   resource generation is still needed.
2. Updates rules_kotlin to prioritize self-generated resources over
   library resources (since order matters in deps lists), fixing a large
   number of resource-only linking issues.
3. Updates rules_kotlin to properly add explicit deps for upper bound
   type generics, fixing cases when those types are only ever referenced
   in the file by generics bounding.
This improves upon target handling & parsing in SuggestBuildFixes by
introducing proper structured parsing. This mainly improves confidence
in the behavior of the utility, but it also allowed for a trivial
introduction of sorting that matches buildifier's order (so no more
needing to run buildifier after auto-fixing a dependency list).

This new structure may have future benefits, as well, if it were to be
integrated into BazelClient.

Besides the parsing, this also updates SuggestBuildFixes to only analyze
targets which explicitly have issues after attempting to build provided
patterns. This *significantly* improves script performance (to the point
where it may be viable to incorporate into an incremental workflow).

It *may* be possible to also now incorporate the script into a CI check
but building all targets may still be prohibitively expensive.
- Kotlin: introduces new configuration provides and properties to tweak
  different settings, including strict/unused deps and incremental
  building (which required a change to the rules_kotlin patch).
- Suggested fixes:
  - Completely redid Starlark BUILD file parsing to use a more
    structured lexical & syntatical parser for simplicity and
    correctness. The tool now supports regeneration for much more
    complex rule invocations (including single-line and glob
    parameters).
  - Removed replacement calculations, made auto-fixing more robust when
    it doesn't work, and updated the new minimizing target computation
    to be experimental rather than default (since it's been observed to
    missed many unused_deps cases).
…t-deps

Conflicts:
	app/BUILD.bazel
	scripts/src/javatests/org/oppia/android/scripts/license/BUILD.bazel
	scripts/src/javatests/org/oppia/android/scripts/maven/BUILD.bazel
	testing/src/main/java/org/oppia/android/testing/threading/BUILD.bazel
Specifically:
- It fixes a CODEOWNERS failure (though this might need to go into an
  upstream branch, instead).
- It addresses a bunch of new strict/unused deps fixes that were needed
  after recent changes to the rules_kotlin patch.
- It updates the SuggestBuildFixes script to:
  - Remove fast mode (since it seems to break more often than work).
  - Add granular, directory-based target break-downs and
    short-circuiting for much better "don't re-run" detection.
- Added missing documentation in a bunch of places.
- Updated KDoc checker to only require KDocs in Kotlin functions that
  are actually publicly exposed (based on their containers).
- Added new regex patterns & tests for forcing usage of the new
  oppia_android_library and oppia_test targets.
- Added test suite placeholder for SuggestBuildFixes (#4977 is tracking
  actually adding these tests in a follow-up PR).
…t-deps

Conflicts:
	app/BUILD.bazel
	testing/BUILD.bazel
@BenHenning BenHenning requested review from seanlip and a team as code owners May 16, 2023 02:39
@BenHenning BenHenning marked this pull request as draft May 16, 2023 02:54
This requires bringing some of the transitive Kotlin dependencies
up-to-date with the direct ones in order to fix the incompatibility
issues brought up by Proguard. This *does* change runtime behaviors, but
it should be more correct now.
@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), 12 MiB (new), 1002 KiB (Removed)

APK download size (estimated): 12 MiB (old), 11 MiB (new), 977 KiB (Removed)

Method count: 154854 (old), 151300 (new), 3554 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 6239 (old), 6237 (new), 2 (Removed)

  • Anim: 49 (old), 49 (new), 0 (No change)
  • Animator: 20 (old), 20 (new), 0 (No change)
  • Array: 15 (old), 15 (new), 0 (No change)
  • Attr: 925 (old), 923 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 10 (old), 10 (new), 0 (No change)
  • Color: 846 (old), 846 (new), 0 (No change)
  • Dimen: 944 (old), 944 (new), 0 (No change)
  • Drawable: 356 (old), 356 (new), 0 (No change)
  • Id: 1156 (old), 1156 (new), 0 (No change)
  • Integer: 37 (old), 37 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 350 (old), 350 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • Raw: 1 (old), 1 (new), 0 (No change)
  • String: 704 (old), 704 (new), 0 (No change)
  • Style: 797 (old), 797 (new), 0 (No change)
  • Xml: 6 (old), 6 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 12 MiB (old), 12 MiB (new), 1002 KiB (Removed)
APK download size (estimated): 11 MiB (old), 10 MiB (new), 978 KiB (Removed)
Method count: 154854 (old), 151300 (new), 3554 (Removed)
Resources: 6175 (old), 6173 (new), 2 (Removed)

  • Attr: 925 (old), 923 (new), 2 (Removed)

Configuration hdpi

APK file size: 59 KiB (old), 59 KiB (new), 0 bytes (No change)
APK download size (estimated): 23 KiB (old), 23 KiB (new), 1 bytes (Added)

Configuration ldpi

APK file size: 56 KiB (old), 56 KiB (new), 0 bytes (No change)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 53 KiB (old), 53 KiB (new), 0 bytes (No change)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 102 KiB (old), 102 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

Configuration xhdpi

APK file size: 67 KiB (old), 67 KiB (new), 0 bytes (No change)
APK download size (estimated): 28 KiB (old), 28 KiB (new), 1 bytes (Removed)

Configuration xxhdpi

APK file size: 76 KiB (old), 76 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 1 bytes (Removed)

Configuration xxxhdpi

APK file size: 79 KiB (old), 79 KiB (new), 0 bytes (No change)
APK download size (estimated): 39 KiB (old), 39 KiB (new), 0 bytes (No change)

Alpha

Expand to see flavor specifics

Universal APK

APK file size: 8186 KiB (old), 7369 KiB (new), 817 KiB (Removed)

APK download size (estimated): 7193 KiB (old), 6359 KiB (new), 833 KiB (Removed)

Method count: 70694 (old), 65839 (new), 4855 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5194 (old), 5192 (new), 2 (Removed)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 889 (old), 887 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 706 (old), 706 (new), 0 (No change)
  • Dimen: 674 (old), 674 (new), 0 (No change)
  • Drawable: 318 (old), 318 (new), 0 (No change)
  • Id: 1098 (old), 1098 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 309 (old), 309 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 636 (old), 636 (new), 0 (No change)
  • Style: 429 (old), 429 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 7951 KiB (old), 7133 KiB (new), 817 KiB (Removed)
APK download size (estimated): 7077 KiB (old), 6243 KiB (new), 834 KiB (Removed)
Method count: 70694 (old), 65839 (new), 4855 (Removed)
Resources: 5137 (old), 5135 (new), 2 (Removed)

  • Attr: 889 (old), 887 (new), 2 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 1 bytes (Removed)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 89 KiB (old), 89 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 1 bytes (Added)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 0 bytes (No change)

Configuration xxhdpi

APK file size: 68 KiB (old), 68 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 2 bytes (Added)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 2 bytes (Removed)

Beta

Expand to see flavor specifics

Universal APK

APK file size: 8103 KiB (old), 7285 KiB (new), 817 KiB (Removed)

APK download size (estimated): 7168 KiB (old), 6336 KiB (new), 831 KiB (Removed)

Method count: 70694 (old), 65839 (new), 4855 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5194 (old), 5192 (new), 2 (Removed)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 889 (old), 887 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 706 (old), 706 (new), 0 (No change)
  • Dimen: 674 (old), 674 (new), 0 (No change)
  • Drawable: 318 (old), 318 (new), 0 (No change)
  • Id: 1098 (old), 1098 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 309 (old), 309 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 636 (old), 636 (new), 0 (No change)
  • Style: 429 (old), 429 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 7868 KiB (old), 7050 KiB (new), 817 KiB (Removed)
APK download size (estimated): 7054 KiB (old), 6218 KiB (new), 836 KiB (Removed)
Method count: 70694 (old), 65839 (new), 4855 (Removed)
Resources: 5137 (old), 5135 (new), 2 (Removed)

  • Attr: 889 (old), 887 (new), 2 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 1 bytes (Removed)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 89 KiB (old), 89 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 1 bytes (Added)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 1 bytes (Added)

Configuration xxhdpi

APK file size: 68 KiB (old), 68 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 3 bytes (Removed)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 1 bytes (Added)

Ga

Expand to see flavor specifics

Universal APK

APK file size: 8103 KiB (old), 7285 KiB (new), 817 KiB (Removed)

APK download size (estimated): 7169 KiB (old), 6336 KiB (new), 832 KiB (Removed)

Method count: 70694 (old), 65839 (new), 4855 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5194 (old), 5192 (new), 2 (Removed)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 889 (old), 887 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 706 (old), 706 (new), 0 (No change)
  • Dimen: 674 (old), 674 (new), 0 (No change)
  • Drawable: 318 (old), 318 (new), 0 (No change)
  • Id: 1098 (old), 1098 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 309 (old), 309 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 636 (old), 636 (new), 0 (No change)
  • Style: 429 (old), 429 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 7868 KiB (old), 7050 KiB (new), 817 KiB (Removed)
APK download size (estimated): 7055 KiB (old), 6218 KiB (new), 836 KiB (Removed)
Method count: 70694 (old), 65839 (new), 4855 (Removed)
Resources: 5137 (old), 5135 (new), 2 (Removed)

  • Attr: 889 (old), 887 (new), 2 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 0 bytes (No change)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 89 KiB (old), 89 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 2 bytes (Added)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 1 bytes (Added)

Configuration xxhdpi

APK file size: 68 KiB (old), 68 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 2 bytes (Added)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

@oppiabot
Copy link

oppiabot bot commented May 24, 2023

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 May 24, 2023
@oppiabot oppiabot bot closed this May 31, 2023
@BenHenning BenHenning reopened this Jun 21, 2024
@oppiabot oppiabot bot removed the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Jun 21, 2024
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), 12 MiB (new), 1002 KiB (Removed)

APK download size (estimated): 12 MiB (old), 11 MiB (new), 977 KiB (Removed)

Method count: 154854 (old), 151300 (new), 3554 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 6239 (old), 6237 (new), 2 (Removed)

  • Anim: 49 (old), 49 (new), 0 (No change)
  • Animator: 20 (old), 20 (new), 0 (No change)
  • Array: 15 (old), 15 (new), 0 (No change)
  • Attr: 925 (old), 923 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 10 (old), 10 (new), 0 (No change)
  • Color: 846 (old), 846 (new), 0 (No change)
  • Dimen: 944 (old), 944 (new), 0 (No change)
  • Drawable: 356 (old), 356 (new), 0 (No change)
  • Id: 1156 (old), 1156 (new), 0 (No change)
  • Integer: 37 (old), 37 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 350 (old), 350 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • Raw: 1 (old), 1 (new), 0 (No change)
  • String: 704 (old), 704 (new), 0 (No change)
  • Style: 797 (old), 797 (new), 0 (No change)
  • Xml: 6 (old), 6 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 12 MiB (old), 12 MiB (new), 1002 KiB (Removed)
APK download size (estimated): 11 MiB (old), 10 MiB (new), 978 KiB (Removed)
Method count: 154854 (old), 151300 (new), 3554 (Removed)
Resources: 6175 (old), 6173 (new), 2 (Removed)

  • Attr: 925 (old), 923 (new), 2 (Removed)

Configuration hdpi

APK file size: 59 KiB (old), 59 KiB (new), 0 bytes (No change)
APK download size (estimated): 23 KiB (old), 23 KiB (new), 1 bytes (Added)

Configuration ldpi

APK file size: 56 KiB (old), 56 KiB (new), 0 bytes (No change)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 53 KiB (old), 53 KiB (new), 0 bytes (No change)
APK download size (estimated): 18 KiB (old), 18 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 102 KiB (old), 102 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

Configuration xhdpi

APK file size: 67 KiB (old), 67 KiB (new), 0 bytes (No change)
APK download size (estimated): 28 KiB (old), 28 KiB (new), 1 bytes (Removed)

Configuration xxhdpi

APK file size: 76 KiB (old), 76 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 1 bytes (Removed)

Configuration xxxhdpi

APK file size: 79 KiB (old), 79 KiB (new), 0 bytes (No change)
APK download size (estimated): 39 KiB (old), 39 KiB (new), 0 bytes (No change)

Alpha

Expand to see flavor specifics

Universal APK

APK file size: 8186 KiB (old), 7369 KiB (new), 817 KiB (Removed)

APK download size (estimated): 7193 KiB (old), 6359 KiB (new), 833 KiB (Removed)

Method count: 70694 (old), 65839 (new), 4855 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5194 (old), 5192 (new), 2 (Removed)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 889 (old), 887 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 706 (old), 706 (new), 0 (No change)
  • Dimen: 674 (old), 674 (new), 0 (No change)
  • Drawable: 318 (old), 318 (new), 0 (No change)
  • Id: 1098 (old), 1098 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 309 (old), 309 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 636 (old), 636 (new), 0 (No change)
  • Style: 429 (old), 429 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 7951 KiB (old), 7133 KiB (new), 817 KiB (Removed)
APK download size (estimated): 7077 KiB (old), 6243 KiB (new), 834 KiB (Removed)
Method count: 70694 (old), 65839 (new), 4855 (Removed)
Resources: 5137 (old), 5135 (new), 2 (Removed)

  • Attr: 889 (old), 887 (new), 2 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 1 bytes (Removed)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 89 KiB (old), 89 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 1 bytes (Added)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 0 bytes (No change)

Configuration xxhdpi

APK file size: 68 KiB (old), 68 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 2 bytes (Added)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 2 bytes (Removed)

Beta

Expand to see flavor specifics

Universal APK

APK file size: 8103 KiB (old), 7285 KiB (new), 817 KiB (Removed)

APK download size (estimated): 7168 KiB (old), 6336 KiB (new), 831 KiB (Removed)

Method count: 70694 (old), 65839 (new), 4855 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5194 (old), 5192 (new), 2 (Removed)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 889 (old), 887 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 706 (old), 706 (new), 0 (No change)
  • Dimen: 674 (old), 674 (new), 0 (No change)
  • Drawable: 318 (old), 318 (new), 0 (No change)
  • Id: 1098 (old), 1098 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 309 (old), 309 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 636 (old), 636 (new), 0 (No change)
  • Style: 429 (old), 429 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 7868 KiB (old), 7050 KiB (new), 817 KiB (Removed)
APK download size (estimated): 7054 KiB (old), 6218 KiB (new), 836 KiB (Removed)
Method count: 70694 (old), 65839 (new), 4855 (Removed)
Resources: 5137 (old), 5135 (new), 2 (Removed)

  • Attr: 889 (old), 887 (new), 2 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 1 bytes (Removed)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 89 KiB (old), 89 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 1 bytes (Added)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 1 bytes (Added)

Configuration xxhdpi

APK file size: 68 KiB (old), 68 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 3 bytes (Removed)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 1 bytes (Added)

Ga

Expand to see flavor specifics

Universal APK

APK file size: 8103 KiB (old), 7285 KiB (new), 817 KiB (Removed)

APK download size (estimated): 7169 KiB (old), 6336 KiB (new), 832 KiB (Removed)

Method count: 70694 (old), 65839 (new), 4855 (Removed)

Features: 2 (old), 2 (new), 0 (No change)

Permissions: 6 (old), 6 (new), 0 (No change)

Resources: 5194 (old), 5192 (new), 2 (Removed)

  • Anim: 39 (old), 39 (new), 0 (No change)
  • Animator: 18 (old), 18 (new), 0 (No change)
  • Array: 14 (old), 14 (new), 0 (No change)
  • Attr: 889 (old), 887 (new), 2 (Removed):
    • attr/css (removed)
    • attr/svg (removed)
  • Bool: 8 (old), 8 (new), 0 (No change)
  • Color: 706 (old), 706 (new), 0 (No change)
  • Dimen: 674 (old), 674 (new), 0 (No change)
  • Drawable: 318 (old), 318 (new), 0 (No change)
  • Id: 1098 (old), 1098 (new), 0 (No change)
  • Integer: 32 (old), 32 (new), 0 (No change)
  • Interpolator: 11 (old), 11 (new), 0 (No change)
  • Layout: 309 (old), 309 (new), 0 (No change)
  • Menu: 1 (old), 1 (new), 0 (No change)
  • Mipmap: 1 (old), 1 (new), 0 (No change)
  • Plurals: 10 (old), 10 (new), 0 (No change)
  • String: 636 (old), 636 (new), 0 (No change)
  • Style: 429 (old), 429 (new), 0 (No change)
  • Xml: 1 (old), 1 (new), 0 (No change)

Lesson assets: 105 (old), 105 (new), 0 (No change)

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: 7868 KiB (old), 7050 KiB (new), 817 KiB (Removed)
APK download size (estimated): 7055 KiB (old), 6218 KiB (new), 836 KiB (Removed)
Method count: 70694 (old), 65839 (new), 4855 (Removed)
Resources: 5137 (old), 5135 (new), 2 (Removed)

  • Attr: 889 (old), 887 (new), 2 (Removed)

Configuration hdpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 22 KiB (old), 22 KiB (new), 0 bytes (No change)

Configuration ldpi

APK file size: 52 KiB (old), 52 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration mdpi

APK file size: 46 KiB (old), 46 KiB (new), 0 bytes (No change)
APK download size (estimated): 17 KiB (old), 17 KiB (new), 0 bytes (No change)

Configuration tvdpi

APK file size: 89 KiB (old), 89 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 2 bytes (Added)

Configuration xhdpi

APK file size: 60 KiB (old), 60 KiB (new), 0 bytes (No change)
APK download size (estimated): 27 KiB (old), 27 KiB (new), 1 bytes (Added)

Configuration xxhdpi

APK file size: 68 KiB (old), 68 KiB (new), 0 bytes (No change)
APK download size (estimated): 37 KiB (old), 37 KiB (new), 2 bytes (Added)

Configuration xxxhdpi

APK file size: 71 KiB (old), 71 KiB (new), 0 bytes (No change)
APK download size (estimated): 38 KiB (old), 38 KiB (new), 0 bytes (No change)

…t-deps

Conflicts:
	.github/CODEOWNERS
	BUILD.bazel
	app/BUILD.bazel
	app/src/main/AppAndroidManifest.xml
	app/src/main/DatabindingAdaptersManifest.xml
	app/src/main/DatabindingResourcesManifest.xml
	app/src/main/RecyclerviewAdaptersManifest.xml
	app/src/main/ViewModelManifest.xml
	app/src/main/ViewModelsManifest.xml
	app/src/main/ViewsManifest.xml
	app/src/main/java/org/oppia/android/app/activity/BUILD.bazel
	app/src/main/java/org/oppia/android/app/application/BUILD.bazel
	app/src/main/java/org/oppia/android/app/application/alpha/BUILD.bazel
	app/src/main/java/org/oppia/android/app/application/alphakenya/BUILD.bazel
	app/src/main/java/org/oppia/android/app/application/beta/BUILD.bazel
	app/src/main/java/org/oppia/android/app/application/dev/BUILD.bazel
	app/src/main/java/org/oppia/android/app/application/ga/BUILD.bazel
	app/src/main/java/org/oppia/android/app/notice/testing/BUILD.bazel
	app/src/main/java/org/oppia/android/app/translation/BUILD.bazel
	config/src/java/org/oppia/android/config/AndroidManifest.xml
	data/BUILD.bazel
	data/src/main/java/org/oppia/android/data/backends/gae/BUILD.bazel
	defs/build_flavors.bzl
	defs/build_vars.bzl
	domain/BUILD.bazel
	domain/src/main/java/org/oppia/android/domain/onboarding/BUILD.bazel
	domain/src/main/java/org/oppia/android/domain/oppialogger/analytics/BUILD.bazel
	domain/src/test/java/org/oppia/android/domain/oppialogger/analytics/BUILD.bazel
	instrumentation/src/java/org/oppia/android/instrumentation/application/BUILD.bazel
	scripts/BUILD.bazel
	scripts/assets/file_content_validation_checks.textproto
	scripts/assets/kdoc_validity_exemptions.textproto
	scripts/assets/maven_dependencies.textproto
	scripts/assets/todo_open_exemptions.textproto
	scripts/src/java/org/oppia/android/scripts/todo/TodoOpenCheck.kt
	scripts/src/javatests/org/oppia/android/scripts/regex/RegexPatternValidationCheckTest.kt
	scripts/src/javatests/org/oppia/android/scripts/todo/BUILD.bazel
	scripts/third_party/versions/direct_maven_versions.bzl
	scripts/third_party/versions/maven_install.json
	testing/src/main/java/org/oppia/android/testing/network/BUILD.bazel
	testing/src/main/java/org/oppia/android/testing/platformparameter/BUILD.bazel
	third_party/macros/direct_dep_downloader.bzl
	third_party/macros/direct_dep_loader.bzl
	third_party/tools/kotlin/BUILD.bazel
	third_party/versions/direct_maven_versions.bzl
	third_party/versions/maven_install.json
	third_party/versions/transitive_maven_versions.bzl
	utility/BUILD.bazel
	utility/src/main/java/org/oppia/android/util/caching/BUILD.bazel
	utility/src/main/java/org/oppia/android/util/locale/BUILD.bazel
	utility/src/main/java/org/oppia/android/util/logging/firebase/BUILD.bazel
	wiki/Oppia-Bazel-Setup-Instructions.md
This fixes dependencies & gets oppia_dev.aab building at least with
strict deps checking off.
This includes a lot, including:
- Fixes to all BUILD files to ensure proper strict deps adherence.
- A significant revamping of the SuggestBuildFixes utility to use a
  build graph instead of target expansion (so it's much faster now).
  Some logical fixes were also added.
- A bunch of changes and version upgrades around the proto_rules and
  protobuf libraries to ensure they interact correctly with
  android_test_support (which has also been added explicitly).
- Some revamping of third-party toolchain init.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant