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

Making Production Ready Android App

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Making Production Ready Android App

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

Avatar for Niharika Arora

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/