Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Making Production Ready Android App

Making Production Ready Android App

Session in Google for Startups on "How to make Production-ready Android App"

Niharika Arora

June 25, 2021
Tweet

More Decks by Niharika Arora

Other Decks in Technology

Transcript

  1. theDroidLady Agenda • Architecture • MVP vs Update Release •

    Release Checklist • Understanding Play Console • My Recommendations • Things I wish I knew :)
  2. theDroidLady Excuses 🤷 • We don’t need an architecture. •

    Don’t have enough time for architecture. • We are a lean team.
  3. theDroidLady Few things to better understand • Language & Platform

    Agnostic • Improves Changeability • Learn when it is important and essential both.
  4. theDroidLady How we do things? • No architecture • Ship

    it fast. • Use 3rd party libraries/frameworks. • Get the market fit.
  5. theDroidLady Make your Product scalable. • Migrate app to proper

    architecture. • Use design pattern. • Start Minimizing resources. • Have a proper planning.
  6. theDroidLady Add proper comments. !!/** * @param input * @return

    SomeRandomOutput !*/ fun doSomeCalculation(input:Int) : SomeRandomOutput { !//do your task here }
  7. theDroidLady Others. • Optimize imports • Reorganize code “ Use

    macros to club both of them together ” • Handle permissions
  8. theDroidLady Start analyzing 3rd party libs •Use the ones with

    more community support. •Check for maximum number of stars on GitHub. •Try to use open-source libs more. •Try to extract/use the feature you need.
  9. theDroidLady Variants & Flavors. public class ConfigBuilder { public static

    Config getConfig() { switch (BuildConfig.FLAVOR){ case BuildConstants.PROD: case BuildConstants.PROD_KITKAT: return new ProdConfig(); default: return new DevConfig(); } } }
  10. theDroidLady Variants & Flavors. public class ProdConfig implements Config {

    @Override public String getHostUrl(){ return HOST; } @Override public String getApiHostUrl() { return API_HOST; } @Override public String getReportErrorUrl() { return REPORT_ERROR; } } Same would be there for other configs
  11. theDroidLady Error handling. when(exception){ is UnAuthorizedException !-> !// Show an

    Un-Auth message is ArithmeticException !-> !// Show that specific message else !-> toast("Something went wrong!") }
  12. theDroidLady • Reviewing crash logs from your crashlytics services. •

    Write Proguard rules where you need obfuscation, optimisation and shrinking.
  13. theDroidLady • Attach additional task like lint checks, optimizing imports

    etc. in your pre-commit. • Push to Play Store.
  14. theDroidLady Recommendations. • Choose a friendly architecture. • Try to

    keep your code modular. • Write Readable code. • Be careful with what you declare in Manifest. • Keep regular committing and raise smaller PRs. • Have pre-commit checks. • Work on Multiple Build Variants • Keep an eye on 3rd party libraries. • Handle Error gracefully. • Test, Test & Test. • Deployment & Distribution pipeline.
  15. “ If you are ordering food from outside everyday, it

    is worth getting a premium membership to a food delivery service. You don’t want to be paying recurring delivery charges every time, because that’s expensive! That’s the difference between writing and not writing tests! “ Ragunath Jawahar
  16. “ Just writing the code is not enough, Writing in

    an efficient way is the real challenge. Do mistakes & learn.“ @theDroidLady
  17. theDroidLady Catch up: • Github : https:!//github.com/niharika2810 • Medium :

    https:!//medium.com/@nik.arora8059 • LinkedIn : https:!//www.linkedin.com/in/thedroidlady/ • Twitter : https:!//twitter.com/theDroidLady • Portfolio : https:!//thedroidlady.com/