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 #4300, #2432: Introduce beta & general availability update notices and build flavors #4417

Merged
merged 23 commits into from
Sep 8, 2022

Conversation

BenHenning
Copy link
Sponsor Member

@BenHenning BenHenning commented Jul 3, 2022

Explanation

Fixes #4300
Fixes #2432

This PR introduces support for showing notices when users change from certain flavors of the app to the beta and/or GA (general availability) flavors (both of which are newly introduced in this PR).

The user behavior is as follows:

  • Changing from any flavor to beta will result in the beta notice showing for the user the first time they open the app.
  • Changing from alpha or beta flavors to the GA flavor will result in the GA notice being shown.
  • The user will always see the notice after the first open following one of these transitions, and in no other cases (including the first open for beta).
  • The user will not see one or both notices if they select the "never show again" checkbox(es) prior to dismissing the notice(s).
  • The app deprecation notice will always take logical precedence over other notices (i.e. it will always show in cases when the app is deprecated regardless of flavor transitions).

In addition to the above, text was added to the splash screen for the developer, alpha, and beta flavors of the app to make it a bit more explicit to the user. The alpha and beta splash experiences have been configured to wait 2 seconds so that the user has a moment to see the actual text before the app finishes loading.

Note also that existing alpha users will not see the beta notice after installing the first beta version (since no flavor has been recorded). While this is technically fixable, it doesn't seem worthwhile given the current small user audience that would be affected. Subsequent transitions from alpha to beta will work as expected (and lead to the beta notice being shown).

As a side note: #2432 is fixed as of this PR since the final planned build flavors are being introduced here. While more flavors may be added in the future, it seems sufficient to consider "build flavors are introduced" to be done now that there are developer, alpha, beta, and GA flavors of the app.

Technical things of note:

  • The splash screen now has a contingency fallback of 5 seconds in case the startup state doesn't ever load/the app gets stuck (it will fall back to a default state).
  • The transitions required a new BuildFlavor proto to be included and bound to Dagger. For tests and the e2e test application component, a new testing-specific flavor has been introduced (though it's never expected to correspond to a distributable build of the app).
  • The existing 'deprecation' package under the app module has been repurposed to be the location for all notices in the app (including the two new ones). We'll likely add more here in the future, as well (such as the GA deprecation notices).
  • The new beta and GA flavors of the app have been added to the build_tests CI workflow--you can see the artifacts of the workflow in this PR or on develop after the PR is merged for downloads to the corresponding built AABs.
  • The Kenya-specific alpha version of the app has the same 'alpha' build flavor as the default alpha version of the app since there doesn't seem to be any reason why they should differ here.
  • Some places were updated to use Application instead of Context to make things a bit tighter in expectation for what type of context is available to use (for cases when casting to injector providers is used). This helps to avoid a particularly challenging bug that I ran into during test development wherein the wrong context was being used after creating a new application (since that application's application context was pointing to the original application). This means that Application.getApplicationContext() may actually not return itself in instrumentation cases. The changes help avoid this leading to actual issues in tests (but they should have no impact on the app's behavior in production environments).
  • PersistentCacheStore had a few significant changes to better facilitate the needs of this PR's domain changes:
    • Changes in the store are only published to its in-memory cache (and subsequently notified to subscribers of the store) if the cache store actually changes.
    • The store's existing two priming functions were combined into a single new one with more flexibility as it can be used to tweak both changing the on-disk cache and publishing the in-memory one. The documentation around priming has also been significantly improved in terms of detail as I now think it's a legitimate use case that we'll want to use in more places in the future.
  • InMemoryBlockingCache was updated to include publishing before-and-after values to its registered observer callback to avoid over-notifying for alterations to the cache that don't logically change it (this can actually lead to subtle differences in behavior that may not always be expected, so the change should improve robustness of the cache).

Details regarding test changes & exemptions:

  • SplashActivityTest and AppStartupStateControllerTest were updated to enable parameterized testing since they have to test many different cases of build flavor transitions.
  • The only test exemptions were: renames (deprecation notice classes), files that can't be tested (applications, application components, and listeners), and files that are not conventionally tested (test activities and fragment presenters).
  • A new BUILD file was added for PersistentCacheStoreTest (which made development a bit easier when verifying some of the changes that ended up breaking the test suite).
  • One of SplashActivityTest's error case tests were removed since it now seems impossible to trigger a situation that could actually cause it. Similarly, the pending case with 5-second timeout also seems impossible to test, though it's theoretically possible to occur if something catastrophically goes wrong in a production environment with a real clock.

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

This PR absolutely should include screenshots & a demo video, but for the sake of optimizing time this will be done post-merge.

This simplifies application component management significantly and
allows individual build flavors to have their own unique module lists.
This also introduces dedicated beta & GA build flavors which is a
necessary prerequisite.

It also introduces an extra beta, alpha, and dev mode labels for the splash
screen (the latter 2 were extra) with 2 second minimum wait timers for
beta and alpha to ensure they are seen. A 5-second safety timer was
added to ensure the splash screen can always be passed even if something
goes wrong at the domain level (since there are now quite a few moving
pieces to determine the user's current onboarding state).
@oppiabot
Copy link

oppiabot bot commented Jul 10, 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 Jul 10, 2022
@oppiabot oppiabot bot closed this Jul 17, 2022
@BenHenning BenHenning reopened this Jul 18, 2022
@oppiabot oppiabot bot removed the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Jul 18, 2022
@BenHenning BenHenning changed the title Fix #4300: Introduce beta & general availability update notices and build flavors Fix #4300, #2432: Introduce beta & general availability update notices and build flavors Jul 18, 2022
@oppiabot
Copy link

oppiabot bot commented Jul 25, 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 Jul 25, 2022
@oppiabot oppiabot bot closed this Aug 1, 2022
There's a bunch left to do here, this is mainly needed so that I can
transfer changes to a different machine.
@BenHenning BenHenning reopened this Aug 2, 2022
@oppiabot oppiabot bot removed the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Aug 2, 2022
@oppiabot
Copy link

oppiabot bot commented Aug 9, 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 Aug 9, 2022
@oppiabot oppiabot bot closed this Aug 16, 2022
@BenHenning BenHenning changed the title Fix #4300, #2432: Introduce beta & general availability update notices and build flavors Fix #4300, part of #2432: Introduce beta & general availability update notices and build flavors Aug 25, 2022
@BenHenning BenHenning changed the title Fix #4300, part of #2432: Introduce beta & general availability update notices and build flavors Fix #4300, #2432: Introduce beta & general availability update notices and build flavors Aug 25, 2022
Conflicts:
	build_flavors.bzl
	scripts/assets/test_file_exemptions.textproto
…oduce-beta-ga-notices

Conflicts:
	.github/workflows/build_tests.yml
	build_flavors.bzl
	scripts/assets/test_file_exemptions.textproto
	version.bzl
This also removes temporary debug code and TODOs, and finishes the tests
for SplashActivity.
Conflicts:
	app/src/main/java/org/oppia/android/app/application/alpha/AlphaApplicationComponent.kt
	app/src/main/java/org/oppia/android/app/application/dev/DeveloperApplicationComponent.kt
	app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AdministratorControlsFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/AppVersionActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/administratorcontrols/learneranalytics/ProfileAndDeviceIdFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/completedstorylist/CompletedStoryListActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/customview/LessonThumbnailImageViewTest.kt
	app/src/sharedTest/java/org/oppia/android/app/customview/interaction/MathExpressionInteractionsViewTest.kt
	app/src/sharedTest/java/org/oppia/android/app/databinding/DrawableBindingAdaptersTest.kt
	app/src/sharedTest/java/org/oppia/android/app/databinding/ImageViewBindingAdaptersTest.kt
	app/src/sharedTest/java/org/oppia/android/app/databinding/MarginBindingAdaptersTest.kt
	app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerMarginBindingAdaptersTest.kt
	app/src/sharedTest/java/org/oppia/android/app/databinding/StateAssemblerPaddingBindingAdaptersTest.kt
	app/src/sharedTest/java/org/oppia/android/app/databinding/TextViewBindingAdaptersTest.kt
	app/src/sharedTest/java/org/oppia/android/app/databinding/ViewBindingAdaptersTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/DeveloperOptionsFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkChaptersCompletedFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkStoriesCompletedFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/MarkTopicsCompletedFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/ViewEventLogsFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/forcenetworktype/ForceNetworkTypeFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/devoptions/mathexpressionparser/MathExpressionParserFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/faq/FAQListFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/faq/FAQSingleActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/faq/FaqListActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/help/HelpActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/help/HelpFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/home/HomeActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/home/RecentlyPlayedFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/home/TopicSummaryViewModelTest.kt
	app/src/sharedTest/java/org/oppia/android/app/home/WelcomeViewModelTest.kt
	app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryListViewModelTest.kt
	app/src/sharedTest/java/org/oppia/android/app/home/promotedlist/PromotedStoryViewModelTest.kt
	app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/mydownloads/MyDownloadsFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/onboarding/OnboardingFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/ongoingtopiclist/OngoingTopicListActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/AppLanguageFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/AudioLanguageFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/OptionsActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/OptionsFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/options/ReadingTextSizeFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/parser/CustomBulletSpanTest.kt
	app/src/sharedTest/java/org/oppia/android/app/parser/HtmlParserTest.kt
	app/src/sharedTest/java/org/oppia/android/app/player/audio/AudioFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/player/exploration/ExplorationActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/player/state/StateFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profile/AddProfileActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profile/AdminAuthActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profile/AdminPinActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profile/PinPasswordActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profile/ProfileChooserFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfilePictureActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/profileprogress/ProfileProgressFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/recyclerview/BindableAdapterTest.kt
	app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/resumelesson/ResumeLessonFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileEditFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileListFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileRenameFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/settings/profile/ProfileResetPinFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/story/StoryActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/story/StoryFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/testing/DragDropTestActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/testing/ImageRegionSelectionInteractionViewTest.kt
	app/src/sharedTest/java/org/oppia/android/app/testing/InputInteractionViewTestActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityDebugTest.kt
	app/src/sharedTest/java/org/oppia/android/app/testing/NavigationDrawerActivityProdTest.kt
	app/src/sharedTest/java/org/oppia/android/app/testing/TestFontScaleConfigurationUtilActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/testing/TopicTestActivityForStoryTest.kt
	app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseListFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/thirdparty/LicenseTextViewerFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/thirdparty/ThirdPartyDependencyListFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/TopicActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/TopicFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/conceptcard/ConceptCardFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/info/TopicInfoFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/practice/TopicPracticeFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/revision/TopicRevisionFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/topic/revisioncard/RevisionCardFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/utility/RatioExtensionsTest.kt
	app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughActivityTest.kt
	app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughFinalFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughTopicListFragmentTest.kt
	app/src/sharedTest/java/org/oppia/android/app/walkthrough/WalkthroughWelcomeFragmentTest.kt
	app/src/test/java/org/oppia/android/app/activity/ActivityIntentFactoriesTest.kt
	app/src/test/java/org/oppia/android/app/home/HomeActivityLocalTest.kt
	app/src/test/java/org/oppia/android/app/parser/FractionParsingUiErrorTest.kt
	app/src/test/java/org/oppia/android/app/parser/StringToRatioParserTest.kt
	app/src/test/java/org/oppia/android/app/player/exploration/ExplorationActivityLocalTest.kt
	app/src/test/java/org/oppia/android/app/player/state/StateFragmentLocalTest.kt
	app/src/test/java/org/oppia/android/app/profile/ProfileChooserFragmentLocalTest.kt
	app/src/test/java/org/oppia/android/app/story/StoryActivityLocalTest.kt
	app/src/test/java/org/oppia/android/app/testing/CompletedStoryListSpanTest.kt
	app/src/test/java/org/oppia/android/app/testing/HomeSpanTest.kt
	app/src/test/java/org/oppia/android/app/testing/OngoingTopicListSpanTest.kt
	app/src/test/java/org/oppia/android/app/testing/PlatformParameterIntegrationTest.kt
	app/src/test/java/org/oppia/android/app/testing/ProfileChooserSpanTest.kt
	app/src/test/java/org/oppia/android/app/testing/ProfileProgressSpanCountTest.kt
	app/src/test/java/org/oppia/android/app/testing/RecentlyPlayedSpanTest.kt
	app/src/test/java/org/oppia/android/app/testing/TopicRevisionSpanTest.kt
	app/src/test/java/org/oppia/android/app/testing/activity/TestActivityTest.kt
	app/src/test/java/org/oppia/android/app/testing/administratorcontrols/AdministratorControlsFragmentTest.kt
	app/src/test/java/org/oppia/android/app/testing/options/OptionsFragmentTest.kt
	app/src/test/java/org/oppia/android/app/testing/player/split/PlayerSplitScreenTest.kt
	app/src/test/java/org/oppia/android/app/testing/player/state/StateFragmentAccessibilityTest.kt
	app/src/test/java/org/oppia/android/app/topic/info/TopicInfoFragmentLocalTest.kt
	app/src/test/java/org/oppia/android/app/topic/lessons/TopicLessonsFragmentLocalTest.kt
	app/src/test/java/org/oppia/android/app/topic/questionplayer/QuestionPlayerActivityLocalTest.kt
	app/src/test/java/org/oppia/android/app/topic/revisioncard/RevisionCardActivityLocalTest.kt
	app/src/test/java/org/oppia/android/app/translation/AppLanguageResourceHandlerTest.kt
	app/src/test/java/org/oppia/android/app/translation/AppLanguageWatcherMixinTest.kt
	app/src/test/java/org/oppia/android/app/utility/math/MathExpressionAccessibilityUtilTest.kt
	instrumentation/src/java/org/oppia/android/instrumentation/application/TestApplicationComponent.kt
	testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleCustomContextTest.kt
	testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleOmissionTest.kt
	testing/src/test/java/org/oppia/android/testing/junit/InitializeDefaultLocaleRuleTest.kt
@BenHenning BenHenning reopened this Sep 5, 2022
@oppiabot oppiabot bot removed the stale Corresponds to items that haven't seen a recent update and may be automatically closed. label Sep 5, 2022
@BenHenning BenHenning changed the base branch from create-dedicated-alpha-application-component to develop September 5, 2022 01:04
@BenHenning
Copy link
Sponsor Member Author

BenHenning commented Sep 5, 2022

Remaining TODOs before merge:

  • Finish description (enough--can be detailed later)
  • Review code
  • Bring up-to-date with develop

BenHenning added a commit that referenced this pull request Sep 7, 2022
BenHenning added a commit that referenced this pull request Sep 7, 2022
## Explanation
Fix part of #4300.

This PR introduces the strings needed in #4417 in isolation so that they can be translated via Translatewiki sooner than #4417 will be merged.

## Essential Checklist
- [x] 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: ...".)
- [x] Any changes to [scripts/assets](https://github.com/oppia/oppia-android/tree/develop/scripts/assets) files have their rationale included in the PR explanation.
- [x] The PR follows the [style guide](https://github.com/oppia/oppia-android/wiki/Coding-style-guide).
- [x] The PR does not contain any unnecessary code changes from Android Studio ([reference](https://github.com/oppia/oppia-android/wiki/Guidance-on-submitting-a-PR#undo-unnecessary-changes)).
- [x] The PR is made from a branch that's **not** called "develop" and is up-to-date with "develop".
- [x] The PR is **assigned** to the appropriate reviewers ([reference](https://github.com/oppia/oppia-android/wiki/Guidance-on-submitting-a-PR#clarification-regarding-assignees-and-reviewers-section)).

## For UI-specific PRs only
This PR only introduces strings and otherwise doesn't affect the UI.
Conflicts:
	app/src/main/java/org/oppia/android/app/splash/SplashActivityPresenter.kt
Copy link
Sponsor 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.

Completed self-review.

@BenHenning BenHenning marked this pull request as ready for review September 8, 2022 04:14
@BenHenning BenHenning requested review from rt4914 and a team as code owners September 8, 2022 04:14
@BenHenning BenHenning self-assigned this Sep 8, 2022
@BenHenning
Copy link
Sponsor Member Author

Due to the significant time sensitivity of this PR, I'm force-merging it without review. I've self-reviewed it and plan to ask for a separate reviewer to take a look post-merge (#4567 is tracking this).

@BenHenning BenHenning merged commit d22f502 into develop Sep 8, 2022
@BenHenning BenHenning deleted the introduce-beta-ga-notices branch September 8, 2022 05:40
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.

Introduce beta notice Create multiple build flavors in Bazel
1 participant