{"version":1,"pages":[{"id":"SQd51xdxA75DIuPEYCuM","title":"AOSP","pathname":"/android-tips","siteSpaceId":"sitesp_cmoQh","emoji":"1f916","description":"Android Open Source Project"},{"id":"Kp2oJbKtin2zNlsWiorF","title":"Clone AOSP repository","pathname":"/android-tips/aosp/clone-aosp-repository","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"rNEeEy1L78NnogQukFOd","title":"Directory Structure","pathname":"/android-tips/aosp/directory-structure","siteSpaceId":"sitesp_cmoQh","description":"","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"KolSqplBtn9Pcg35Vcpk","title":"Setup IDE","pathname":"/android-tips/aosp/setup-ide","siteSpaceId":"sitesp_cmoQh","description":"Setup your choice of ide for entire AOSP development","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"S3SthUsTFO8gxqNbYCLr","title":"Setup VSCode","pathname":"/android-tips/aosp/setup-ide/setup-vscode","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Setup IDE"}]},{"id":"T1NRLyl1O2Gb59kD6dbd","title":"Build","pathname":"/android-tips/aosp/build","siteSpaceId":"sitesp_cmoQh","description":"AOSP uses soong build which uses Android.bp for configuration","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"Kr7KGSt1vkyaIM8Oeak5","title":"BluePrint for Application Project","pathname":"/android-tips/aosp/build/blueprint-for-application-project","siteSpaceId":"sitesp_cmoQh","description":"How to configure Android.bp for an application","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Build"}]},{"id":"mcfO2fRqT1iuza6rpXxr","title":"BluePrint for Android Library Project","pathname":"/android-tips/aosp/build/blueprint-for-android-library-project","siteSpaceId":"sitesp_cmoQh","description":"How to configure Android.bp for an android library","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Build"}]},{"id":"ZKWjHTA7vYUmY2ZWnH1S","title":"Manifest","pathname":"/android-tips/aosp/manifest","siteSpaceId":"sitesp_cmoQh","description":"Capabilities of AOSP development in App Manifest file.","breadcrumbs":[{"label":"AOSP","emoji":"1f916"}]},{"id":"zeiXq7svIuSd29DezjRQ","title":"sharedUserId","pathname":"/android-tips/aosp/manifest/shareduserid","siteSpaceId":"sitesp_cmoQh","description":"android:sharedUserId=\"com.example.shared\"","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Manifest"}]},{"id":"Nkdfbo9HzXyHQiLyExor","title":"persistant","pathname":"/android-tips/aosp/manifest/persistant","siteSpaceId":"sitesp_cmoQh","description":"android:persistent, makes app running at all times","breadcrumbs":[{"label":"AOSP","emoji":"1f916"},{"label":"Manifest"}]},{"id":"wwgkRdOlU48eOHFs4C6l","title":"Gradle","pathname":"/android-tips/gradle","siteSpaceId":"sitesp_cmoQh","description":"Tips to create efficient gradle script"},{"id":"NiXgWXdObanQL8ngOWqG","title":"Create Custom Build Config Variables","pathname":"/android-tips/gradle/create-custom-build-config-variables","siteSpaceId":"sitesp_cmoQh","description":"Add Custom fields to","breadcrumbs":[{"label":"Gradle"}]},{"id":"FAzYY42MXUhd8XBhfrdy","title":"Create Custom manifest Variables","pathname":"/android-tips/gradle/create-custom-manifest-variables","siteSpaceId":"sitesp_cmoQh","description":"","breadcrumbs":[{"label":"Gradle"}]},{"id":"3lLCklW3BJapEceHKh2p","title":"Make app debugable","pathname":"/android-tips/gradle/make-app-debugable","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Gradle"}]},{"id":"zCiiwm5MGXx6Qrm2Ay6j","title":"Android Process","pathname":"/android-tips/android-process","siteSpaceId":"sitesp_cmoQh","description":""},{"id":"RyO7Yq1mfPJ3D43snq0W","title":"Find a process by name","pathname":"/android-tips/android-process/find-a-process-by-name","siteSpaceId":"sitesp_cmoQh","description":"find a process using ps and grep","breadcrumbs":[{"label":"Android Process"}]},{"id":"PGSSuv6WUeTnnMF8xJuq","title":"Kill a process by Id","pathname":"/android-tips/android-process/kill-a-process-by-id","siteSpaceId":"sitesp_cmoQh","description":"Kill a process in Android or Linux","breadcrumbs":[{"label":"Android Process"}]},{"id":"sqeIATJUCbyQRSNtHK2l","title":"Catch any exception in Android","pathname":"/android-tips/catch-any-exception-in-android","siteSpaceId":"sitesp_cmoQh","description":"Implement custom exception logger (lust like CrashAnalytics)"},{"id":"ZzdiJl0SLbIpOYOcxRHq","title":"Theming","pathname":"/android-tips/theming/theming","siteSpaceId":"sitesp_cmoQh","description":"Ways to theme you android","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"}]},{"id":"qIRJrF3CFlm6Fk5taw1d","title":"RRO","pathname":"/android-tips/theming/theming/rro","siteSpaceId":"sitesp_cmoQh","description":"Runtime Resource Overlay","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"}]},{"id":"b0FXZd4wdPIxpSsbHOIU","title":"RRO Internals","pathname":"/android-tips/theming/theming/rro/rro-internals","siteSpaceId":"sitesp_cmoQh","description":"How RRO works internally","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"iUCAWTEgLojTQYnx3IJm","title":"RRO classes in AOSP","pathname":"/android-tips/theming/theming/rro/rro-classes-in-aosp","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"pJGYPQzkEM9jfw2Gvg7k","title":"RRO Example","pathname":"/android-tips/theming/theming/rro/rro-example","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"2BpHE2EY5sCadV3ojEpU","title":"RRO Permission","pathname":"/android-tips/theming/theming/rro/rro-permission","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"RRO"}]},{"id":"Vp5EfJq1Zx2547GuQ4Fp","title":"Fabricated RRO (FRRO)","pathname":"/android-tips/theming/theming/fabricated-rro-frro","siteSpaceId":"sitesp_cmoQh","description":"Fabricated RRO is build on top traditional RRO system","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"}]},{"id":"QeALs3UFqVMMSQ7XMMGi","title":"FRRO Example","pathname":"/android-tips/theming/theming/fabricated-rro-frro/frro-example","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"Fabricated RRO (FRRO)"}]},{"id":"d91J7gsfO2LpXX818rqm","title":"Permission","pathname":"/android-tips/theming/theming/fabricated-rro-frro/permission","siteSpaceId":"sitesp_cmoQh","description":"Here are the permissions required for using Fabricated RRO","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"},{"label":"Fabricated RRO (FRRO)"}]},{"id":"RcEWXZtFNAYnEtIniSdP","title":"Context Hijack","pathname":"/android-tips/theming/theming/context-hijack","siteSpaceId":"sitesp_cmoQh","description":"Use resources of other application","breadcrumbs":[{"label":"Theming","emoji":"1f3a8"},{"label":"Theming"}]},{"id":"s42Csg9CmiLtMRranC6A","title":"Basics","pathname":"/android-tips/lifecycle/basics","siteSpaceId":"sitesp_cmoQh","description":"Basics of android development","breadcrumbs":[{"label":"Lifecycle"}]},{"id":"8f6sfG61IqJuKoyMXpYd","title":"Lifecycle","pathname":"/android-tips/lifecycle/basics/lifecycle","siteSpaceId":"sitesp_cmoQh","description":"Lifecycle of diffetent components in Android","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"}]},{"id":"S8HCsr9w02jvrlgSBnVi","title":"Activity","pathname":"/android-tips/lifecycle/basics/lifecycle/activity","siteSpaceId":"sitesp_cmoQh","description":"Activity lifecycle with saved instance state","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"},{"label":"Lifecycle"}]},{"id":"yNbk7TEO6FCXpJMfW7jH","title":"Fragment","pathname":"/android-tips/lifecycle/basics/lifecycle/fragment","siteSpaceId":"sitesp_cmoQh","description":"Fragment Lifecycle","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"},{"label":"Lifecycle"}]},{"id":"vp7OdGFwHCh3X8kWjxdq","title":"Fragment add","pathname":"/android-tips/lifecycle/basics/lifecycle/fragment/fragment-add","siteSpaceId":"sitesp_cmoQh","description":"Fragment Manager add() lifecycle","breadcrumbs":[{"label":"Lifecycle"},{"label":"Basics"},{"label":"Lifecycle"},{"label":"Fragment"}]},{"id":"QjzATIKLPhvdiFcVvI4o","title":"Lifecycle Aware Custom Class","pathname":"/android-tips/lifecycle/lifecycle-aware-custom-class","siteSpaceId":"sitesp_cmoQh","description":"A custom business class that can be lifecycle aware, just like ViewModel","breadcrumbs":[{"label":"Lifecycle"}]},{"id":"tUklorKCMH3x5ds8OX7v","title":"Interview Questions","pathname":"/android-tips/interview/interview-questions","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"5VmKhuYHWIHwRjC90Qyo","title":"Architecture Pattern","pathname":"/android-tips/interview/architecture-pattern","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"LLfigzNQGTcnsPUv6f3U","title":"MVC Architecture pattern","pathname":"/android-tips/interview/architecture-pattern/mvc-architecture-pattern","siteSpaceId":"sitesp_cmoQh","description":"","breadcrumbs":[{"label":"Interview","emoji":"2139"},{"label":"Architecture Pattern"}]},{"id":"TJdJFlLc34TZoWM2IVP4","title":"MVP Architecture Pattern","pathname":"/android-tips/interview/architecture-pattern/mvp-architecture-pattern","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"},{"label":"Architecture Pattern"}]},{"id":"aNVGPV8QslZWIbt2LW01","title":"MVVM Architecture Pattern","pathname":"/android-tips/interview/architecture-pattern/mvvm-architecture-pattern","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"},{"label":"Architecture Pattern"}]},{"id":"NBvhP8ckJV8SNiLQBuXc","title":"Design Patterns","pathname":"/android-tips/interview/design-patterns","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"cU14PP3cgdo12kU9HrCP","title":"Interview Prep 1","pathname":"/android-tips/interview/interview-prep-1","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"iM54FbESCHswppj1S0wZ","title":"Interview Prep 2","pathname":"/android-tips/interview/interview-prep-2","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"AwITyeEEFxMGkVOpz0IO","title":"Interview AOSP 1","pathname":"/android-tips/interview/interview-aosp-1","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"4MRZ6ItmZQEjXtKZ4sNv","title":"Interview AOSP 2","pathname":"/android-tips/interview/interview-aosp-2","siteSpaceId":"sitesp_cmoQh","breadcrumbs":[{"label":"Interview","emoji":"2139"}]},{"id":"anbHOWcPPLvaIdsQjrIc","title":"Simple AIDL Communication","pathname":"/android-tips/aidl/simple-aidl-communication","siteSpaceId":"sitesp_cmoQh","description":"AIDL is Android's way of achieving IPC.","breadcrumbs":[{"label":"AIDL","emoji":"2194"}]},{"id":"MjWp5Vq3cg8pnqaVjzB8","title":"Creating an AIDL file","pathname":"/android-tips/aidl/simple-aidl-communication/creating-an-aidl-file","siteSpaceId":"sitesp_cmoQh","description":"an .aidl file is a barebone description of set of API's server exposes","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"jWgJ5Veu0dmpHc16BVRA","title":"Create an AIDL server","pathname":"/android-tips/aidl/simple-aidl-communication/create-an-aidl-server","siteSpaceId":"sitesp_cmoQh","description":"AIDL server app exposes an service.","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"PDovoVrwPT7rmkAOKWRu","title":"Create AIDL client","pathname":"/android-tips/aidl/simple-aidl-communication/create-aidl-client","siteSpaceId":"sitesp_cmoQh","description":"An AIDL client connects to a exposed AIDL Service via Binders","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"89YTdOmouRclsmgT6kB5","title":"Limitations","pathname":"/android-tips/aidl/simple-aidl-communication/limitations","siteSpaceId":"sitesp_cmoQh","description":"","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"Simple AIDL Communication"}]},{"id":"LHnwzdSxAcIlu1O9Z7AN","title":"AIDL with callback","pathname":"/android-tips/aidl/aidl-with-callback","siteSpaceId":"sitesp_cmoQh","description":"An AILD will callback methods","breadcrumbs":[{"label":"AIDL","emoji":"2194"}]},{"id":"1V1wQRTWPMKdF8XFhuPm","title":"Create AILD interfaces","pathname":"/android-tips/aidl/aidl-with-callback/create-aild-interfaces","siteSpaceId":"sitesp_cmoQh","description":"Main interface as well as its callback","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"AIDL with callback"}]},{"id":"uClsOeVkqij2NGLWojFu","title":"Create an AIDL server","pathname":"/android-tips/aidl/aidl-with-callback/create-an-aidl-server","siteSpaceId":"sitesp_cmoQh","description":"Server which will expose a service","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"AIDL with callback"}]},{"id":"HgxDlBSrQTh5lxRxxFJj","title":"Create AIDL client","pathname":"/android-tips/aidl/aidl-with-callback/create-aidl-client","siteSpaceId":"sitesp_cmoQh","description":"","breadcrumbs":[{"label":"AIDL","emoji":"2194"},{"label":"AIDL with callback"}]}]}