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

[HOLD for payment 22/08/23] [$1000] Enable developers to install multiple app variants simultaneously #16805

Closed
12 tasks done
Julesssss opened this issue Mar 31, 2023 · 66 comments
Closed
12 tasks done
Assignees
Labels
Engineering External Added to denote the issue can be worked on by a contributor NewFeature Something to build that is a new item. Reviewing Has a PR in review Weekly KSv2

Comments

@Julesssss
Copy link
Contributor

Julesssss commented Mar 31, 2023

P/S from @mczernek

Problem

As a developer when working on mobile applications I cannot have two versions of the App being installed at the same time, even when one of them is staging and the other is a production app.
I want to be able to have a production app installed at all times and simultaneously install new versions of the app I am working on. I want to be able to easily distinguish between both installed apps.

Solution

Both iOS and Android prevent users from having the same app installed twice on the device. This is determined by bundleID on iOS and applicationID on Android. In order to have multiple apps we need to alter their ids.

  • Agree on the environments which will be split into separate apps @mczernek @Julesssss
  • Set up new internal Firebase apps @Julesssss
  • Configure the Android app package ID, name, and app icon @mczernek
  • Configure the iOS app buildSchemes, bundleID, name, and app icon @mczernek
  • [Android only] The Main page icon shows Dev for the AdHoc builds:
  • Figure out the dev build pipeline, do contributors need to change their workflow? @Julesssss
  • Document the various Android build flavours to make this clearer to the team @Julesssss
  • Share this change with the internal engineers and wider contributor team @Julesssss
  • Deprecate the old AdHoc provisioning profile and identifier @Julesssss
  • Confirm we should point to staging envfor the AdHoc build @Julesssss
  • Question about the type of iOS profile I used for AdHoc builds
  • Create follow-up issue for installing AdHoc Desktop apps side-by-side
Upwork Automation - Do Not Edit
  • Upwork Job URL: https://www.upwork.com/jobs/~01a69dd286c1e8c009
  • Upwork Job ID: 1689297187278802944
  • Last Price Increase: 2023-08-09
@Julesssss Julesssss self-assigned this Mar 31, 2023
@Julesssss Julesssss added Weekly KSv2 NewFeature Something to build that is a new item. Engineering labels Mar 31, 2023
@MelvinBot
Copy link

@Julesssss
Copy link
Contributor Author

Hey @NicMendonca, SWM are going to work on this, so no UpWork issue is required.

@mczernek
Copy link
Contributor

As agreed on Slack we're gonna start with adding two build types (or flavors) with different applicationId than staging and production (they share the same one).

@staszekscp
Copy link
Contributor

Hey, I'd like to inform that I'll be working on this issue :)

@Julesssss
Copy link
Contributor Author

Hey @staszekscp, that's great! Nice to meet you.

@Julesssss
Copy link
Contributor Author

Julesssss commented Apr 5, 2023

So, starting with the environment mapping, I believe this is our current build env config:

Android build variants

release: production app
e2eRelease: clear traffic build for automated performance testing
internalRelease: internal testing for beta channels, Applause testing, and browserstack(?)
debug: local dev builds

iOS packaging(?)
I'm not exactly sure how this works today, I can't see any buildScheme configured 😕

production: production app/testflight
staging|internal: dev builds

I think we're aligned on allowing these three variants to be installed simultaneously. This would be consistent for Android, iOS, and Desktop:

  • Expensify Chat: [production|staging] PlayStore/App Store/Testflight/Production Desktop builds
    • signed with production key, only available via the PlayStore/AppStore/Testflight
    • A single app for official both production and staging builds, depending if the user is on the official app store beta testers list
    • iOS: com.chat.expensify.chat, Android: com.expensify.chat
  • Expensify Chat AdHoc: [internal|ad-hoc] Internal testing via ReadyToBuild browserstack label
    • Allows a single BrowserStack build to be spun up and tested alongside the official app release
    • While e2e performance builds are unlikely to be installed to a device, we may as well keep these builds within the 'Internal' bucket
      PlayStore/AppStore build
    • iOS: com.expensify.chat.adhoc, Android: com.expensify.chat.adhoc
  • Expensify Chat Dev: [env pulled from local .env file] local developer builds for internal employees and external contributors
    • Environment is pulled from the .env config, it can point to Ngrok/production environment depending on who is building the app
    • iOS: com.expensify.chat.dev, Android: com.expensify.chat.dev

@staszekscp
Copy link
Contributor

Hey @Julesssss! As a follow-up from Slack to keep everything in the issue: Could you add com.expensify.chat.internal and com.expensify.chat.dev projects to Google Services? Without that I’m afraid I won’t be able to build android app.

@Julesssss
Copy link
Contributor Author

Hey @staszekscp, yep no worries. I created an issue for our infra team to create the environment and will update you as soon as this is ready. If I recall correctly, I'll also need to share the updated google-services.json file with you 👍

@Julesssss
Copy link
Contributor Author

Internal issue

@Julesssss
Copy link
Contributor Author

Okay, I created all of the new apps in Firebase. @staszekscp I'll send you the files via Slack

@Julesssss
Copy link
Contributor Author

Oh one more thing. Lets just use AdHoc instead of internal

@melvin-bot melvin-bot bot added the Overdue label Apr 21, 2023
@Julesssss
Copy link
Contributor Author

We merged the first issue (badge), progress ongoing

@melvin-bot melvin-bot bot removed the Overdue label Apr 26, 2023
@staszekscp
Copy link
Contributor

Hey @Julesssss , I think everything works nicely, I would only have one request - could you provide Dev/AdHoc versions of the splash screen logo? I would like to include there badges with DEV or ADHOC depending on the build type. When it's implemented we could have a short round of tests :)
image

@Julesssss
Copy link
Contributor Author

Hey, yep no problem. I created an internal issue here. Will report back once I have the assets.

@Julesssss
Copy link
Contributor Author

Files:

@Julesssss
Copy link
Contributor Author

Iconmark.zip

@melvin-bot melvin-bot bot added the Overdue label May 4, 2023
@Julesssss
Copy link
Contributor Author

Hey @staszekscp, is there anything I can help with here?

@melvin-bot melvin-bot bot removed the Overdue label May 10, 2023
@staszekscp
Copy link
Contributor

Hey @Julesssss! Sorry for lack of update - I was asked to focus 100% on the navigation reboot. I may find some time next week, but if not, I'm going to hand it to someone in SWM. As I've mentioned some time ago, most of the job is done, but I bumped into some issues with integrating correct splash screen on iOS builds, and I didn't have time to investigate it properly 😄

@Julesssss
Copy link
Contributor Author

Not yet @twisterdotcom, just doing this now before I forget. Once merged I'll switch it to weekly

@twisterdotcom
Copy link
Contributor

Apologies but I am finally going on Parental Leave. I am reassigning to another member of the team.

@twisterdotcom twisterdotcom added NewFeature Something to build that is a new item. and removed NewFeature Something to build that is a new item. labels Aug 18, 2023
@melvin-bot
Copy link

melvin-bot bot commented Aug 18, 2023

@melvin-bot
Copy link

melvin-bot bot commented Aug 18, 2023

Triggered auto assignment to Design team member for new feature review - @dannymcclain (NewFeature)

@twisterdotcom
Copy link
Contributor

Ahh @dannymcclain - we assign Designers to every NewFeature labelled issue. You'll find there are tonnes of false positives, but for now, we just wanted to make sure Design caught anything that needed tweaking. Open to ideas for change though.

I'd usually unassign Shawn from something like this, but I'll leave you on it so you can see what all the fuss is about.

@Julesssss
Copy link
Contributor Author

@Julesssss Julesssss changed the title [$1000] Enable developers to install multiple app variants simultaneously [HOLD for payment 22/08/23 [$1000] Enable developers to install multiple app variants simultaneously Aug 18, 2023
@Julesssss Julesssss changed the title [HOLD for payment 22/08/23 [$1000] Enable developers to install multiple app variants simultaneously [HOLD for payment 22/08/23] [$1000] Enable developers to install multiple app variants simultaneously Aug 18, 2023
@dannymcclain
Copy link
Contributor

@twisterdotcom Gotcha, thanks for the info! Looks to me like everything is all set here.

@dannymcclain dannymcclain removed their assignment Aug 21, 2023
@Julesssss
Copy link
Contributor Author

Not a regression, that's a new logo for the dev env.

@mallenexpensify
Copy link
Contributor

@Julesssss who is due payment here and how much?
My guess is $1000 each to @staszekscp , @mczernek and @allroundexperts but want to be sure

@Julesssss
Copy link
Contributor Author

@allroundexperts for the review, but the feature was implemented by SWM, not contributors.

@allroundexperts
Copy link
Contributor

I got paid here

@roryabraham
Copy link
Contributor

All done then?

@Julesssss
Copy link
Contributor Author

Yeah, the two remaining tasks have their own issue for tracking purposes:

@Julesssss Julesssss reopened this Sep 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Engineering External Added to denote the issue can be worked on by a contributor NewFeature Something to build that is a new item. Reviewing Has a PR in review Weekly KSv2
Projects
None yet
Development

No branches or pull requests