CINXE.COM
Mobile App Development Publication - Medium
<!DOCTYPE html><html xmlns:cc="http://creativecommons.org/ns#"><head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# medium-com: http://ogp.me/ns/fb/medium-com#"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=contain"><title>Mobile App Development Publication - Medium</title><link rel="canonical" href="https://medium.com/mobile-app-development-publication"><link id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/mobile-app-development-publication"><meta name="robots" content="index,follow"><meta name="title" content="Mobile App Development Publication - Medium"><meta name="referrer" content="unsafe-url"><meta name="description" content="Sharing iOS, Android and relevant Mobile App Development Technology and Learning."><meta name="keywords" content="PROGRAMMING, MOBILE APP DEVELOPMENT, ANDROID APP DEVELOPMENT, IOS APP DEVELOPMENT, ANDROIDDEV"><meta name="theme-color" content="#000000"><meta property="og:title" content="Mobile App Development Publication – Medium"><meta property="twitter:title" content="Mobile App Development Publication – Medium"><meta property="og:url" content="https://medium.com/mobile-app-development-publication"><meta property="og:image" content="https://cdn-images-1.medium.com/max/1200/1*r5bO5bEjNCKLt6fKZbPdCA.png"><meta property="fb:app_id" content="542599432471018"><meta property="og:description" content="Sharing iOS, Android and relevant Mobile App Development Technology and Learning."><meta name="twitter:description" content="Sharing iOS, Android and relevant Mobile App Development Technology and Learning."><meta name="twitter:image:src" content="https://cdn-images-1.medium.com/max/1200/1*r5bO5bEjNCKLt6fKZbPdCA.png"><meta property="og:type" content="medium-com:collection"><meta name="twitter:card" content="summary_large_image"><meta property="medium-com:creator" content="https://medium.com/@elye-project"><meta name="twitter:creator" content="@elye_project"><meta name="twitter:site" content="@Medium"><meta property="og:site_name" content="Medium"><meta name="twitter:app:name:iphone" content="Medium"><meta name="twitter:app:id:iphone" content="828256236"><meta name="twitter:app:url:iphone" content="medium://mobile-app-development-publication"><meta property="al:ios:app_name" content="Medium"><meta property="al:ios:app_store_id" content="828256236"><meta property="al:android:package" content="com.medium.reader"><meta property="al:android:app_name" content="Medium"><meta property="al:ios:url" content="medium://mobile-app-development-publication"><meta property="al:android:url" content="medium://mobile-app-development-publication"><meta property="al:web:url" content="https://medium.com/mobile-app-development-publication"><link rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml" /><link rel="alternate" href="android-app://com.medium.reader/https/medium.com/mobile-app-development-publication" /><script type="application/ld+json">{"@context": "http://schema.org", "@graph": [{"@type": "WebSite", "url": "https:\/\/medium.com", "name": "Medium", "alternateName": "Medium is a community of readers and writers offering unique perspectives on ideas large and small."},{"@type": "Organization", "url": "https:\/\/medium.com\/mobile-app-development-publication", "name": "Mobile App Development Publication"}]}</script><link rel="stylesheet" href="https://cdn-static-1.medium.com/_/fp/css/main-branding-base.tWIMt8r3Nl52PPi9OfgcVw.12.css"><script>!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script><script>document.domain = document.domain;</script><script>if (window.top !== window.self) window.location = 'about:blank';var OB_startTime = new Date().getTime(); var OB_loadErrors = []; function _onerror(e) { OB_loadErrors.push(e) }; if (document.addEventListener) document.addEventListener("error", _onerror, true); else if (document.attachEvent) document.attachEvent("onerror", _onerror); function _asyncScript(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("script"); s.type = "text/javascript"; s.async = true; s.src = u; f.parentNode.insertBefore(s, f);}function _asyncStyles(u) {var d = document, f = d.getElementsByTagName("script")[0], s = d.createElement("link"); s.rel = "stylesheet"; s.href = u; f.parentNode.insertBefore(s, f); return s}(new Image()).src = "/_/stat?event=pixel.load&origin=" + encodeURIComponent(location.origin);</script><script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga("create", "G-7JY7T788PK", "auto", {"allowLinker": true, "legacyCookieDomain": window.location.hostname});ga("send", "pageview");</script><script async src="https://www.google-analytics.com/analytics.js"></script><script>(function () {var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; document.write("<style>section.section-image--fullBleed.is-backgrounded {padding-top: " + Math.round(1.1 * height) + "px;}section.section-image--fullScreen.is-backgrounded, section.section-image--coverFade.is-backgrounded {min-height: " + height + "px; padding-top: " + Math.round(0.5 * height) + "px;}.u-height100vh {height: " + height + "px !important;}.u-height110vh {height: " + Math.round(1.1 * height) + "px !important;}.u-minHeight100vh {min-height: " + height + "px !important;}.u-maxHeight100vh {max-height: " + height + "px !important;}section.section-image--coverFade {height: " + height + "px;}.section-aspectRatioViewportPlaceholder, .section-aspectRatioViewportCropPlaceholder {max-height: " + height + "px;}.section-aspectRatioViewportBottomSpacer, .section-aspectRatioViewportBottomPlaceholder {max-height: " + Math.round(0.5 * height) + "px;}.zoomable:before {top: " + (-1 * height) + "px; left: " + (-1 * width) + "px; padding: " + height + "px " + width + "px;}</style>");})()</script><!--[if lt IE 9]><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js"></script><![endif]--><link rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19" class="js-favicon"><link rel="apple-touch-icon" sizes="152x152" href="https://cdn-images-1.medium.com/fit/c/304/304/1*r5bO5bEjNCKLt6fKZbPdCA.png"><link rel="apple-touch-icon" sizes="120x120" href="https://cdn-images-1.medium.com/fit/c/240/240/1*r5bO5bEjNCKLt6fKZbPdCA.png"><link rel="apple-touch-icon" sizes="76x76" href="https://cdn-images-1.medium.com/fit/c/152/152/1*r5bO5bEjNCKLt6fKZbPdCA.png"><link rel="apple-touch-icon" sizes="60x60" href="https://cdn-images-1.medium.com/fit/c/120/120/1*r5bO5bEjNCKLt6fKZbPdCA.png"><link rel="mask-icon" href="https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg" color="#171717"></head><body itemscope class=" browser-ie os-windows v-unbound v-glyph v-glyph--m2-unbound-source-serif-pro is-noJs"><script>document.body.className = document.body.className.replace(/(^|\s)is-noJs(\s|$)/, "$1is-js$2")</script><div class="site-main" id="container"><div class="butterBar butterBar--error"></div><div class="surface"><div id="prerendered" class="screenContent"><div class="metabar u-clearfix js-metabar"><div class="branch-journeys-top"></div><div class="js-metabarMiddle metabar-inner u-marginAuto u-maxWidth1032 u-flexCenter u-justifyContentSpaceBetween u-height65 u-xs-height56 u-paddingHorizontal20"><div class="metabar-block u-flex1 u-flexCenter"><div class="js-metabarLogoLeft"><a href="https://medium.com/" data-log-event="home" class="siteNav-logo u-fillBlack u-flex0 u-flexCenter u-paddingTop0"><span class="svgIcon svgIcon--wordmarkMedium svgIcon--120x26px u-flex"><svg class="svgIcon-use" width="120" height="26" ><path d="M29.57 1.404l.036-.008V1.12h-7.27l-6.75 15.979-6.75-15.98H1.003v.278l.035.008c1.327.302 2 .752 2 2.374v18.993c0 1.623-.676 2.073-2.003 2.374L1 25.153v.279h5.315v-.278l-.035-.008c-1.327-.302-2-.751-2-2.374V4.88l8.67 20.552h.492l8.924-21.125V23.24c-.114 1.282-.782 1.677-1.983 1.95l-.036.009v.275h9.259V25.2l-.036-.008c-1.203-.274-1.886-.67-2-1.95l-.006-19.464h.006c0-1.622.674-2.072 2-2.374zm4.23 12.582c.15-3.412 1.367-5.875 3.41-5.918.629.01 1.157.219 1.568.62.872.852 1.282 2.634 1.219 5.298h-6.198zm-.092.962h10.85v-.046c-.03-2.61-.78-4.64-2.228-6.033-1.25-1.204-3.103-1.867-5.048-1.867h-.043c-1.01 0-2.248.246-3.13.693a7.316 7.316 0 00-2.623 2.086c-1.185 1.479-1.903 3.477-2.078 5.724a13.717 13.717 0 00-.04.755c-.004.195-.005.39-.001.587.117 5.087 2.846 9.153 7.692 9.153 4.254 0 6.73-3.132 7.348-7.336l-.312-.11c-1.085 2.259-3.034 3.628-5.252 3.461-3.028-.228-5.347-3.32-5.137-7.066m23.122 6.893c-.356.85-1.099 1.319-2.094 1.319-.995 0-1.905-.689-2.552-1.939-.694-1.342-1.06-3.24-1.06-5.487 0-4.678 1.445-7.704 3.68-7.704.937 0 1.674.468 2.026 1.284v12.527zm7.198 3.335c-1.327-.316-2-.787-2-2.492V0l-8.062 2.392v.293l.05-.004c1.111-.09 1.866.064 2.304.472.343.32.51.809.51 1.498v3.11C56.033 7.25 55.088 7 53.94 7c-2.326 0-4.453.987-5.986 2.779-1.599 1.867-2.444 4.42-2.444 7.38 0 5.287 2.584 8.84 6.43 8.84 2.25 0 4.06-1.242 4.888-3.336v2.811h7.233v-.29l-.035-.008zM70.94 3.085c0-1.65-1.236-2.896-2.875-2.896-1.632 0-2.908 1.272-2.908 2.896 0 1.624 1.278 2.896 2.908 2.896 1.64 0 2.875-1.245 2.875-2.896zm1.903 22.092c-1.327-.316-2-.787-2-2.492h-.006V7.055l-7.234 2.092v.284l.043.004c1.566.14 1.994.683 1.994 2.525v13.515h7.24v-.29l-.037-.008zm18.536 0c-1.327-.316-2-.787-2-2.492V7.055L82.49 9.078v.285l.04.004c1.28.136 1.65.71 1.65 2.56v9.88c-.426.85-1.227 1.356-2.196 1.39-1.573 0-2.439-1.07-2.439-3.012V7.055l-7.234 2.092v.284l.044.004c1.565.14 1.994.683 1.994 2.525v8.362a9.443 9.443 0 00.15 1.741l.13.57C75.243 24.845 76.848 26 79.362 26c2.129 0 3.996-1.328 4.818-3.405v2.885h7.233v-.291l-.034-.012zm28.102.298v-.291l-.035-.009c-1.44-.334-2.001-.964-2.001-2.248V12.295C117.445 8.98 115.597 7 112.5 7c-2.257 0-4.16 1.314-4.893 3.36-.582-2.168-2.257-3.36-4.734-3.36-2.175 0-3.88 1.156-4.612 3.11V7.056l-7.233 2.006v.286l.043.004c1.547.138 1.994.697 1.994 2.492v13.631h6.75v-.29l-.037-.01c-1.148-.271-1.519-.767-1.519-2.04V10.95c.304-.715.917-1.562 2.127-1.562 1.504 0 2.266 1.05 2.266 3.116v12.972h6.751v-.29l-.035-.01c-1.149-.271-1.52-.767-1.52-2.04V12.294a7.107 7.107 0 00-.095-1.21c.322-.777.97-1.696 2.23-1.696 1.524 0 2.265 1.02 2.265 3.116v12.972h7.233z"/></svg></span><span class="u-textScreenReader">Homepage</span></a></div><div class="u-paddingLeft10 u-sm-show r-paddingRight10"><a href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com/mobile-app-development-publication%3F~feature=LoMobileNavBar&~channel=ShowCollectionHome&~stage=m2">Open in app</a></div></div><div class="metabar-block u-flex0 u-flexCenter"><div class="u-flexCenter u-height65 u-xs-height56"><div class="buttonSet buttonSet--wide u-lineHeightInherit"><a class="button button--primary button--chromeless u-accentColor--buttonNormal is-inSiteNavBar u-xs-hide js-signInButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fmobile-app-development-publication%3Fsource%3Dpost_page---post_publication_info--b89fa2c43f1c--------------------------------&source=--------------------------nav_reg&operation=login" data-action="sign-in-prompt" data-redirect="https://medium.com/mobile-app-development-publication?source=post_page---post_publication_info--b89fa2c43f1c--------------------------------" data-action-source="--------------------------nav_reg">Sign in</a><a class="button button--primary button--withChrome u-accentColor--buttonNormal is-inSiteNavBar js-signUpButton" href="https://medium.com/m/signin?redirect=https%3A%2F%2Fmedium.com%2Fmobile-app-development-publication%3Fsource%3Dpost_page---post_publication_info--b89fa2c43f1c--------------------------------&source=--------------------------nav_reg&operation=register" data-action="sign-up-prompt" data-redirect="https://medium.com/mobile-app-development-publication?source=post_page---post_publication_info--b89fa2c43f1c--------------------------------" data-action-source="--------------------------nav_reg">Get started</a></div></div></div></div></div><div class="metabar metabar--spacer js-metabarSpacer u-height65 u-xs-height56"></div><div class="collectionHeader js-collectionHeaderContainer u-relative collectionHeader--layoutLarge collectionHeader--alignmentCenter collectionHeader--withoutLogo collectionHeader--withBackground collectionHeader--colorBehaviorSubtle collectionHeader--withNavigation collectionHeader--editorLayoutTitle is-modeView"><div class="collectionHeader-aspectRatioTable"><div class="collectionHeader-aspectRatioContent u-backgroundSizeCover js-collectionHeaderBackground" style="background-image: url("https://cdn-images-1.medium.com/max/2400/1*C2ZAeP1Mo3zhxYDLB04i5Q.png"); background-position: 50% 50% !important;"><div class="collectionHeader-overlayBackground u-height100vh"></div><header class="collectionHeader-heroAndInlineNav u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto u-foreground js-collectionHeader"><div class="collectionHeader-hero js-collectionHeaderHero u-clearfix u-imageSpectrum"><div class="collectionHeader-heroInner"><div class="collectionHeader-logo js-collectionHeaderLogo" style=""><a class="link u-baseColor--link" href="https://medium.com/mobile-app-development-publication" title="Go to Mobile App Development Publication" aria-label="Go to Mobile App Development Publication"><div class="u-relative u-marginAuto"><div style="padding-bottom: 75%"></div><img class="collectionHeader-logoImage js-collectionHeaderLogoImage" /></div></a></div><div class="collectionHeader-nameAndDescription"><a class="link link--noUnderline u-baseColor--link" href="https://medium.com/mobile-app-development-publication" title="Go to Mobile App Development Publication" aria-label="Go to Mobile App Development Publication"><h1 class="collectionHeader-name js-collectionName u-foreground u-baseColor--textDark u-paddingBottom4 u-lineHeightTightest u-contentSansBold u-fontSize40 u-xs-fontSize32">Mobile App Development</h1></a><h2 class="collectionHeader-description js-collectionDescription u-foreground u-baseColor--textNormal u-contentSansRegular u-fontSize24 u-xs-fontSize18">for Android and iOS</h2></div></div></div></header></div><div class="collectionHeader-aspectRatioCell"><div class="collectionHeader-aspectRatioFullWidth"></div></div></div><div class="collectionHeader-blockNav"><div class="u-borderBox u-maxWidth1072 u-paddingLeft20 u-paddingRight20 u-marginAuto"><nav class="collectionHeader-nav u-clearfix js-collectionHeaderNav u-lineHeight40 u-overflowHiddenY"><div class="buttonSet u-flex1 u-noWrap u-overflowX u-paddingBottom100 u-xs-marginRight15"><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/mobile-app-development-publication/tagged/android-app-development">Android App Development</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/mobile-app-development-publication/tagged/ios-app-development">iOS App Development</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/mobile-app-development-publication/tagged/jetpack-compose">Jetpack Compose</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/mobile-app-development-publication/tagged/kotlin">Kotlin</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/mobile-app-development-publication/tagged/swift">Swift</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/mobile-app-development-publication/dagger/home">Dagger</a></li><li class="collectionHeader-navItem js-collectionNavItem u-inlineBlock u-fontSize13 u-textUppercase u-letterSpacing1px u-textColorNormal u-xs-paddingRight12 u-xs-marginRight0"><a class="link link--darken u-accentColor--textDarken link--noUnderline u-baseColor--link js-navItemLink" href="https://medium.com/mobile-app-development-publication/android-ui/home">Android UI</a></li></div><div class="buttonSet u-textAlignRight u-marginLeft18 u-flex0 u-noWrap"><label class="button button--small button--chromeless button--withIcon button--withSvgIcon inputGroup u-sm-hide metabar-predictiveSearch u-baseColor--buttonNormal u-baseColor--placeholderNormal" title="Search"><span class="svgIcon svgIcon--search svgIcon--25px u-baseColor--iconLight"><svg class="svgIcon-use" width="25" height="25" ><path d="M20.067 18.933l-4.157-4.157a6 6 0 10-.884.884l4.157 4.157a.624.624 0 10.884-.884zM6.5 11c0-2.62 2.13-4.75 4.75-4.75S16 8.38 16 11s-2.13 4.75-4.75 4.75S6.5 13.62 6.5 11z"/></svg></span><input class="js-predictiveSearchInput textInput textInput--rounded textInput--darkText u-baseColor--textNormal textInput--transparent" type="search" placeholder="Search" required="true" data-collection-id="f9c208bdbb09" /></label><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="https://twitter.com/elye_project" title="Visit “Mobile App Development Publication” on X" aria-label="Visit “Mobile App Development Publication” on X" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--twitter svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" fill="none" ><path d="M14.215 11.3l5.764-6.7h-1.366l-5.005 5.818L9.611 4.6H5l6.045 8.798L5 20.424h1.366l5.286-6.144 4.221 6.144h4.61L14.216 11.3zm-1.871 2.175l-.612-.876-4.874-6.97h2.098l3.933 5.625.613.876 5.112 7.312h-2.098l-4.172-5.966z" fill="#242424"/></svg></span></span></a><a class="button button--chromeless is-touchIconBlackPulse u-baseColor--buttonNormal button--withIcon button--withSvgIcon button--chromeless u-verticalAlignMiddle" href="//facebook.com/elye.proj" title="Visit “Mobile App Development Publication” on Facebook" aria-label="Visit “Mobile App Development Publication” on Facebook" rel="me" target="_blank"><span class="button-defaultState"><span class="svgIcon svgIcon--facebookFilled svgIcon--25px"><svg class="svgIcon-use" width="25" height="25" ><path d="M21 12.646C21 7.65 16.97 3.6 12 3.6s-9 4.05-9 9.046a9.026 9.026 0 007.59 8.924v-6.376H8.395V12.64h2.193v-1.88c0-2.186 1.328-3.375 3.267-3.375.93 0 1.728.07 1.96.1V9.77H14.47c-1.055 0-1.26.503-1.26 1.242v1.63h2.517l-.33 2.554H13.21V21.6c4.398-.597 7.79-4.373 7.79-8.954"/></svg></span></span></a><button class="button button--primary button--smallest u-noUserSelect button--withChrome u-accentColor--buttonNormal js-relationshipButton is-smallPill" data-action="sign-up-prompt" data-sign-in-action="toggle-follow-collection" data-requires-token="true" data-redirect="https://medium.com/_/subscribe/collection/mobile-app-development-publication" data-action-source="pub_header----f9c208bdbb09----------------------follow_pub" data-collection-id="f9c208bdbb09"><span class="button-label js-buttonLabel">Follow</span></button></div></nav></div></div></div><div class="u-marginBottom40 js-collectionStream"><div class="streamItem streamItem--section js-streamItem"><div class="u-marginTop30 u-xs-marginTop0 u-marginBottom15 u-maxWidth1032 u-marginAuto"><div class="u-marginBottom15 u-xs-paddingLeft20 u-xs-paddingRight20"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Mobile App Development</span></div></div></header></div><div class="u-paddingTop35 u-paddingBottom20 u-paddingLeft20 u-paddingRight20 u-maxWidth1000 u-marginAuto u-textAlignCenter js-trackedPromo" style="background-color: #DDFFFF;"data-action="open-promo-link" data-promo-id="ebb927f68e94" data-collection-id="f9c208bdbb09"><div class="u-marginBottom20"><a class="button button--large button--withChrome u-baseColor--buttonNormal u-borderNormal" href="https://medium.com/mobile-app-development-publication/introducing-mobile-app-development-publication-6ca8c726ad4d" rel="nofollow noopener" target="_blank" data-action-source="collection_home---2------0-----------------------">Write for the Publication</a></div></div></div></div><div class="streamItem streamItem--section js-streamItem"><div class="u-marginTop30 u-xs-marginTop0 u-marginBottom15 u-maxWidth1032 u-marginAuto"><div class="u-table u-width100pct u-height450 u-xs-minHeight350"><div class="u-tableCell u-sm-size12of12 u-sm-block u-overflowHidden js-trackPostPresentation u-imageSpectrum u-paddingTop15 u-height450 u-xs-minHeight350" data-source="collection_home---2------0-----------------------" data-post-id="f208489e9a80" data-index="0"><div class="u-baseColor--textDark u-height450 u-xs-minHeight350"><a href="https://medium.com/mobile-app-development-publication/scaling-mobile-development-with-micro-frontends-f208489e9a80?source=collection_home---2------0-----------------------" data-post-id="f208489e9a80" data-source="collection_home---2------0-----------------------" class="u-block u-sizeFull u-backgroundSizeCover u-backgroundOriginBorderBox u-borderLighter u-borderBox u-backgroundColorGrayLight"style="background-image: url("https://cdn-images-1.medium.com/max/2400/gradv/29/81/30/darken/25/0*aNaza0DZhpH5O2Gh"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Scaling Mobile Development with Micro-frontends</span></a><div class="u-relative"><div class="u-absolute u-left0 u-bottom0 u-marginVertical30 u-marginHorizontal40 u-xs-marginHorizontal20 u-xs-marginBottom20 u-xs-marginTop15 u-right40Percent u-md-right0"><a class="" href="https://medium.com/mobile-app-development-publication/scaling-mobile-development-with-micro-frontends-f208489e9a80?source=collection_home---2------0-----------------------" data-action-source="collection_home---2------0-----------------------" data-post-id="f208489e9a80"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize44"><div class="">Scaling Mobile Development with Micro-frontends</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="">It is more than just modularizing your app development</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-03-17T10:54:38.259Z">Mar 17, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="7 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div></div></div><div class="u-table u-width100pct u-height350 u-xs-height250"><div class="u-tableCell u-sm-size12of12 u-sm-block u-overflowHidden js-trackPostPresentation u-imageSpectrum u-paddingTop15 u-paddingRight15 u-height350 u-xs-height250 u-width40pct " data-source="collection_home---2------1-----------------------" data-post-id="e1e1723f392" data-index="1"><div class="u-baseColor--textDark u-height350 u-xs-height250"><a href="https://medium.com/mobile-app-development-publication/migrate-to-android-13-predictive-back-soon-before-its-too-late-e1e1723f392?source=collection_home---2------1-----------------------" data-post-id="e1e1723f392" data-source="collection_home---2------1-----------------------" class="u-block u-sizeFull u-backgroundSizeCover u-backgroundOriginBorderBox u-borderLighter u-borderBox u-backgroundColorGrayLight"style="background-image: url("https://cdn-images-1.medium.com/max/2400/gradv/29/81/30/darken/25/0*auvWOv4025FcpgXs"); background-position: 50% 50% !important;"><span class="u-textScreenReader">The onBackPressed Is Now Deprecated in Android 13 and Might Need Major Changes in Existing Apps</span></a><div class="u-relative"><div class="u-absolute u-left0 u-bottom0 u-marginVertical30 u-marginHorizontal40 u-xs-marginHorizontal20 u-xs-marginBottom20 u-xs-marginTop15"><a class="" href="https://medium.com/mobile-app-development-publication/migrate-to-android-13-predictive-back-soon-before-its-too-late-e1e1723f392?source=collection_home---2------1-----------------------" data-action-source="collection_home---2------1-----------------------" data-post-id="e1e1723f392"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="">The onBackPressed Is Now Deprecated in Android 13 and Might Need Ma...</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-hide">Migrate to Android 13's “Predictive Back” Before It’s Too Late</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-09-03T14:28:34.065Z">Sep 3, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="15 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div></div><div class="u-tableCell u-sm-size12of12 u-sm-block u-overflowHidden js-trackPostPresentation u-imageSpectrum u-paddingTop15 u-height350 u-xs-height250" data-source="collection_home---2------2-----------------------" data-post-id="1aef83d67659" data-index="2"><div class="u-baseColor--textDark u-height350 u-xs-height250"><a href="https://medium.com/mobile-app-development-publication/secure-your-only-chance-to-ask-for-android-push-notification-permission-1aef83d67659?source=collection_home---2------2-----------------------" data-post-id="1aef83d67659" data-source="collection_home---2------2-----------------------" class="u-block u-sizeFull u-backgroundSizeCover u-backgroundOriginBorderBox u-borderLighter u-borderBox u-backgroundColorGrayLight"style="background-image: url("https://cdn-images-1.medium.com/max/2400/gradv/29/81/30/darken/25/0*igShgG2-U_kP1568"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Secure Your “Only” Chance to Ask for Android Post-Notification Permission</span></a><div class="u-relative"><div class="u-absolute u-left0 u-bottom0 u-marginVertical30 u-marginHorizontal40 u-xs-marginHorizontal20 u-xs-marginBottom20 u-xs-marginTop15 u-right40Percent u-md-right0"><a class="" href="https://medium.com/mobile-app-development-publication/secure-your-only-chance-to-ask-for-android-push-notification-permission-1aef83d67659?source=collection_home---2------2-----------------------" data-action-source="collection_home---2------2-----------------------" data-post-id="1aef83d67659"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="">Secure Your “Only” Chance to Ask for Android Post-Notification Perm...</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-hide">Learn Some Undocumented Android Post Notification Permission Request Behaviors and Flows</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-08-26T14:50:03.517Z">Aug 26, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="8 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div></div></div><div class="u-table u-width100pct u-height350 u-xs-height250"><div class="u-tableCell u-sm-size12of12 u-sm-block u-overflowHidden js-trackPostPresentation u-imageSpectrum u-paddingTop15 u-paddingRight15 u-height350 u-xs-height250" data-source="collection_home---2------3-----------------------" data-post-id="c82283d15564" data-index="3"><div class="u-baseColor--textDark u-height350 u-xs-height250"><a href="https://medium.com/mobile-app-development-publication/negative-padding-for-jetpack-compose-made-possible-c82283d15564?source=collection_home---2------3-----------------------" data-post-id="c82283d15564" data-source="collection_home---2------3-----------------------" class="u-block u-sizeFull u-backgroundSizeCover u-backgroundOriginBorderBox u-borderLighter u-borderBox u-backgroundColorGrayLight"style="background-image: url("https://cdn-images-1.medium.com/max/2400/gradv/29/81/30/darken/25/0*1m2hiuc-KeIbPEdH"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Negative Padding For Jetpack Compose Made Possible</span></a><div class="u-relative"><div class="u-absolute u-left0 u-bottom0 u-marginVertical30 u-marginHorizontal40 u-xs-marginHorizontal20 u-xs-marginBottom20 u-xs-marginTop15 u-right40Percent u-md-right0"><a class="" href="https://medium.com/mobile-app-development-publication/negative-padding-for-jetpack-compose-made-possible-c82283d15564?source=collection_home---2------3-----------------------" data-action-source="collection_home---2------3-----------------------" data-post-id="c82283d15564"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="">Negative Padding For Jetpack Compose Made Possible</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-hide">From Bad To Better Solution: Different Ways of Negative Padding for Jetpack Compose</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-06-21T13:09:42.743Z">Jun 21, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div></div><div class="u-tableCell u-sm-size12of12 u-sm-block u-overflowHidden js-trackPostPresentation u-imageSpectrum u-paddingTop15 u-height350 u-xs-height250 u-width40pct " data-source="collection_home---2------4-----------------------" data-post-id="9cb8f664cfcf" data-index="4"><div class="u-baseColor--textDark u-height350 u-xs-height250"><a href="https://medium.com/mobile-app-development-publication/android-app-signing-a-refresher-9cb8f664cfcf?source=collection_home---2------4-----------------------" data-post-id="9cb8f664cfcf" data-source="collection_home---2------4-----------------------" class="u-block u-sizeFull u-backgroundSizeCover u-backgroundOriginBorderBox u-borderLighter u-borderBox u-backgroundColorGrayLight"style="background-image: url("https://cdn-images-1.medium.com/max/2400/gradv/29/81/30/darken/25/0*WhV_HVvRnfWaJCL3"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Android App Signing —A Refresher</span></a><div class="u-relative"><div class="u-absolute u-left0 u-bottom0 u-marginVertical30 u-marginHorizontal40 u-xs-marginHorizontal20 u-xs-marginBottom20 u-xs-marginTop15"><a class="" href="https://medium.com/mobile-app-development-publication/android-app-signing-a-refresher-9cb8f664cfcf?source=collection_home---2------4-----------------------" data-action-source="collection_home---2------4-----------------------" data-post-id="9cb8f664cfcf"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="">Android App Signing —A Refresher</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-hide">App Signing — An essential Android App development knowledge that is rarely used. A good read to check through them, as it will be handy.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2023-07-26T11:36:45.789Z">Jul 26, 2023</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div></div></div></div></div><div class="streamItem streamItem--section js-streamItem"><section class="u-marginTop30 u-xs-margin0 u-marginBottom15 u-maxWidth1032 u-sm-paddingLeft20 u-sm-paddingRight20 u-borderBox u-marginAuto"><header class="heading heading--borderedBottom u-fontSize18 u-contentSansThin" ><div class="u-clearfix"><div class="heading-content u-floatLeft"><span class="heading-title heading-title--dark heading-title--lineHeightTight u-fontSize18 u-contentSansThin">Latest</span></div></div></header><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------0-----------------------" data-post-id="dd823a91207d" data-index="0"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/beyond-stability-what-mobile-developers-must-monitor-dd823a91207d?source=collection_home---4------0-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/beyond-stability-what-mobile-developers-must-monitor-dd823a91207d?source=collection_home---4------0-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*Ps0dKyhbiK3_dzRK"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Beyond Stability: What Mobile Developers Must Monitor</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/beyond-stability-what-mobile-developers-must-monitor-dd823a91207d?source=collection_home---4------0-----------------------" data-action-source="collection_home---4------0-----------------------" data-post-id="dd823a91207d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Beyond Stability: What Mobile Developers Must Monitor</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Monitoring More Than Stability: Your App’s Entire Ecosystem Matters.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2025-02-28T13:04:21.270Z">Feb 28</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size6of12" data-source="collection_home---4------1-----------------------" data-post-id="c4975bd00621" data-index="1"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/custom-android-push-notification-use-case-cloning-grab-live-tracking-notification-c4975bd00621?source=collection_home---4------1-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/custom-android-push-notification-use-case-cloning-grab-live-tracking-notification-c4975bd00621?source=collection_home---4------1-----------------------" class="u-block u-xs-height170 u-width600 u-height272 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/1200/0*gjCtJJYxpcWmGDhR"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Custom Android Push Notification Use Case: Cloning Grab Live Tracking Notification</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/custom-android-push-notification-use-case-cloning-grab-live-tracking-notification-c4975bd00621?source=collection_home---4------1-----------------------" data-action-source="collection_home---4------1-----------------------" data-post-id="c4975bd00621"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Custom Android Push Notification Use Case: Cloning Grab Live Tracking Notification</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Exploring The Power Of RemoteViews</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@adiandrea" data-action="show-user-card" data-action-value="7b8cf0bd846" data-action-type="hover" data-user-id="7b8cf0bd846" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*DJiLTxXxBct1jjWE.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Adi Andrea"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@adiandrea" data-action="show-user-card" data-action-value="7b8cf0bd846" data-action-type="hover" data-user-id="7b8cf0bd846" dir="auto">Adi Andrea</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-22T04:49:07.785Z">Nov 21, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------2-----------------------" data-post-id="efb2e71a878c" data-index="2"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/enable-swiftui-views-sharing-across-packageswithout-dependency-constraint-efb2e71a878c?source=collection_home---4------2-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/enable-swiftui-views-sharing-across-packageswithout-dependency-constraint-efb2e71a878c?source=collection_home---4------2-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*JNVtgEEM6B1o62lq"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Enable SwiftUI Views Sharing Across Packages Without Dependency Constraint</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/enable-swiftui-views-sharing-across-packageswithout-dependency-constraint-efb2e71a878c?source=collection_home---4------2-----------------------" data-action-source="collection_home---4------2-----------------------" data-post-id="efb2e71a878c"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Enable SwiftUI Views Sharing Across Packages Without Dependency Constraint</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">An Aligned Autonomy Scaling Mobile Development Approach</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-11T12:35:26.453Z">Nov 11, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------3-----------------------" data-post-id="225b855ba5b8" data-index="3"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/how-i-migrate-android-build-configurations-from-groovy-to-kotlin-dsl-225b855ba5b8?source=collection_home---4------3-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/how-i-migrate-android-build-configurations-from-groovy-to-kotlin-dsl-225b855ba5b8?source=collection_home---4------3-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*9VkZC1tT8yb8d2_F"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How I Migrate Android Build Configurations From Groovy To Kotlin DSL</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/how-i-migrate-android-build-configurations-from-groovy-to-kotlin-dsl-225b855ba5b8?source=collection_home---4------3-----------------------" data-action-source="collection_home---4------3-----------------------" data-post-id="225b855ba5b8"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How I Migrate Android Build Configurations From Groovy To Kotlin DSL</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">See you later, Groovy!</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@adiandrea" data-action="show-user-card" data-action-value="7b8cf0bd846" data-action-type="hover" data-user-id="7b8cf0bd846" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*DJiLTxXxBct1jjWE.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Adi Andrea"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@adiandrea" data-action="show-user-card" data-action-value="7b8cf0bd846" data-action-type="hover" data-user-id="7b8cf0bd846" dir="auto">Adi Andrea</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-11T12:15:28.687Z">Nov 11, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="6 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------4-----------------------" data-post-id="a7290257d987" data-index="4"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/enable-composable-views-sharing-across-modules-without-dependency-constraint-a7290257d987?source=collection_home---4------4-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/enable-composable-views-sharing-across-modules-without-dependency-constraint-a7290257d987?source=collection_home---4------4-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*l8VttMnsOYFqPeQd"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Enable Composable Views Sharing Across Modules Without Dependency Constraint</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/enable-composable-views-sharing-across-modules-without-dependency-constraint-a7290257d987?source=collection_home---4------4-----------------------" data-action-source="collection_home---4------4-----------------------" data-post-id="a7290257d987"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Enable Composable Views Sharing Across Modules Without Dependency Constraint</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">An Aligned Autonomy Scaling Mobile Development Approach</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-08T06:12:29.629Z">Nov 7, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------5-----------------------" data-post-id="3d8beb05c2e8" data-index="5"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/how-to-prevent-reverse-engineering-on-your-android-app-3d8beb05c2e8?source=collection_home---4------5-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/how-to-prevent-reverse-engineering-on-your-android-app-3d8beb05c2e8?source=collection_home---4------5-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*Cg7czJ28GT7ZLybl"); background-position: 50% 50% !important;"><span class="u-textScreenReader">How To Prevent Reverse Engineering On Your Android App</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/how-to-prevent-reverse-engineering-on-your-android-app-3d8beb05c2e8?source=collection_home---4------5-----------------------" data-action-source="collection_home---4------5-----------------------" data-post-id="3d8beb05c2e8"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">How To Prevent Reverse Engineering On Your Android App</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Or at least make it more difficult</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@adiandrea" data-action="show-user-card" data-action-value="7b8cf0bd846" data-action-type="hover" data-user-id="7b8cf0bd846" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/0*DJiLTxXxBct1jjWE.jpg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Adi Andrea"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@adiandrea" data-action="show-user-card" data-action-value="7b8cf0bd846" data-action-type="hover" data-user-id="7b8cf0bd846" dir="auto">Adi Andrea</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-11-06T22:33:46.499Z">Nov 6, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------6-----------------------" data-post-id="e679cd2bbca0" data-index="6"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/ai-vs-human-top-tabs-examples-for-ios-app-e679cd2bbca0?source=collection_home---4------6-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/ai-vs-human-top-tabs-examples-for-ios-app-e679cd2bbca0?source=collection_home---4------6-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*GJ8ovItCBZzW6-wf"); background-position: 50% 50% !important;"><span class="u-textScreenReader">AI vs Human: Top Tabs Examples for iOS App</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/ai-vs-human-top-tabs-examples-for-ios-app-e679cd2bbca0?source=collection_home---4------6-----------------------" data-action-source="collection_home---4------6-----------------------" data-post-id="e679cd2bbca0"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">AI vs Human: Top Tabs Examples for iOS App</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Examples from ChatGPT, Gemini, Llama, and libraries, along with the best from StackOverflow.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-31T03:02:15.240Z">Oct 30, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------7-----------------------" data-post-id="40e99fcd1d57" data-index="7"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/intercept-the-start-of-ios-and-android-application-40e99fcd1d57?source=collection_home---4------7-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/intercept-the-start-of-ios-and-android-application-40e99fcd1d57?source=collection_home---4------7-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*MLeg4ElFFDD6oBg0"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Intercept the Start of iOS and Android Application</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/intercept-the-start-of-ios-and-android-application-40e99fcd1d57?source=collection_home---4------7-----------------------" data-action-source="collection_home---4------7-----------------------" data-post-id="40e99fcd1d57"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Intercept the Start of iOS and Android Application</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">It’s Not Provided by Default On Your New iOS or Android Project</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-30T04:25:11.624Z">Oct 29, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="3 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------8-----------------------" data-post-id="65e8258353fc" data-index="8"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/a-step-by-step-guide-creating-swift-package-manager-65e8258353fc?source=collection_home---4------8-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/a-step-by-step-guide-creating-swift-package-manager-65e8258353fc?source=collection_home---4------8-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*6_31ob1e2C58GRwA"); background-position: 50% 50% !important;"><span class="u-textScreenReader">A Step By Step Guide Creating Swift Package Manager</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/a-step-by-step-guide-creating-swift-package-manager-65e8258353fc?source=collection_home---4------8-----------------------" data-action-source="collection_home---4------8-----------------------" data-post-id="65e8258353fc"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">A Step By Step Guide Creating Swift Package Manager</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">It’s Time To Start Moving Away from CocoaPods</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-30T01:58:16.805Z">Oct 29, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------9-----------------------" data-post-id="9b69943cf92d" data-index="9"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/the-future-of-android-development-embracing-emerging-trends-and-technologies-9b69943cf92d?source=collection_home---4------9-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/the-future-of-android-development-embracing-emerging-trends-and-technologies-9b69943cf92d?source=collection_home---4------9-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*08RqtZl6VlTPsT6WEo073A.jpeg"); background-position: 50% 50% !important;"><span class="u-textScreenReader">The Future of Android Development: Embracing Emerging Trends and Technologies</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/the-future-of-android-development-embracing-emerging-trends-and-technologies-9b69943cf92d?source=collection_home---4------9-----------------------" data-action-source="collection_home---4------9-----------------------" data-post-id="9b69943cf92d"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">The Future of Android Development: Embracing Emerging Trends and Technologies</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">The Android world is a whirlwind of constant change. New trends and technologies keep popping up, making it an exciting but sometimes…</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@harmanpreet.khera" data-action="show-user-card" data-action-value="4588dfdfdccb" data-action-type="hover" data-user-id="4588dfdfdccb" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*z0eDkJYyTzE_ZZbY9Cy7KA@2x.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Harman Khera"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@harmanpreet.khera" data-action="show-user-card" data-action-value="4588dfdfdccb" data-action-type="hover" data-user-id="4588dfdfdccb" dir="auto">Harman Khera</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-29T00:36:28.187Z">Oct 28, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------10-----------------------" data-post-id="4572afb99821" data-index="10"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/socket-plug-design-kit-a-scalable-collaborative-model-for-mobile-development-4572afb99821?source=collection_home---4------10-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/socket-plug-design-kit-a-scalable-collaborative-model-for-mobile-development-4572afb99821?source=collection_home---4------10-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/0*bw8mqxPtm6PXIbM-"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Socket & Plug Design Kit: A Scalable, Collaborative Model for Mobile Development</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/socket-plug-design-kit-a-scalable-collaborative-model-for-mobile-development-4572afb99821?source=collection_home---4------10-----------------------" data-action-source="collection_home---4------10-----------------------" data-post-id="4572afb99821"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Socket & Plug Design Kit: A Scalable, Collaborative Model for Mobile Development</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Beyond Aligned Autonomy — A Independently Dependent Collaborated Approach in Scaling Mobile Development</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*0wVPGGR_3FMoPVGzT4nbTw.png" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Elye - A One Eye Dev By His Grace"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@elye-project" data-action="show-user-card" data-action-value="5742b4fcf89e" data-action-type="hover" data-user-id="5742b4fcf89e" dir="auto">Elye - A One Eye Dev By His Grace</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-28T11:48:01.934Z">Oct 28, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="10 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div></div><div class="row u-marginTop30 u-marginLeftNegative12 u-marginRightNegative12"><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------11-----------------------" data-post-id="16c6dc8de464" data-index="11"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/why-viewmodel-is-your-best-friend-and-yes-you-really-need-it-16c6dc8de464?source=collection_home---4------11-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/why-viewmodel-is-your-best-friend-and-yes-you-really-need-it-16c6dc8de464?source=collection_home---4------11-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*_tefJfVrG10f1-Imn8nfHA.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Why ViewModel is Your Best Friend (and Yes, You Really Need It!)</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/why-viewmodel-is-your-best-friend-and-yes-you-really-need-it-16c6dc8de464?source=collection_home---4------11-----------------------" data-action-source="collection_home---4------11-----------------------" data-post-id="16c6dc8de464"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Why ViewModel is Your Best Friend (and Yes, You Really Need It!)</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Architect your mobile project right</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@android-dev-nexus" data-action="show-user-card" data-action-value="2e51b1e460ff" data-action-type="hover" data-user-id="2e51b1e460ff" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BNdLrGmBfjkUNkHuvoSNyw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Android Dev Nexus"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@android-dev-nexus" data-action="show-user-card" data-action-value="2e51b1e460ff" data-action-type="hover" data-user-id="2e51b1e460ff" dir="auto">Android Dev Nexus</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-23T18:50:42.871Z">Oct 23, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="4 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------12-----------------------" data-post-id="bc2bbce2d278" data-index="12"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/junit-vs-androidjunit-vs-robolectric-fixing-your-test-failures-without-losing-your-mind-bc2bbce2d278?source=collection_home---4------12-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/junit-vs-androidjunit-vs-robolectric-fixing-your-test-failures-without-losing-your-mind-bc2bbce2d278?source=collection_home---4------12-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*Ogl3q_-rebrPitW-iCAulA.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">JUnit vs. AndroidJUnit vs. Robolectric: Fixing Your Test Failures Without Losing Your Mind!</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/junit-vs-androidjunit-vs-robolectric-fixing-your-test-failures-without-losing-your-mind-bc2bbce2d278?source=collection_home---4------12-----------------------" data-action-source="collection_home---4------12-----------------------" data-post-id="bc2bbce2d278"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">JUnit vs. AndroidJUnit vs. Robolectric: Fixing Your Test Failures Without Losing Your Mind!</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Join me to solve a unit testing problem without losing your mind! Let’s understand JUnit, AndroidJUnit, and Robolectric effortlessly.</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@android-dev-nexus" data-action="show-user-card" data-action-value="2e51b1e460ff" data-action-type="hover" data-user-id="2e51b1e460ff" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*BNdLrGmBfjkUNkHuvoSNyw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Android Dev Nexus"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@android-dev-nexus" data-action="show-user-card" data-action-value="2e51b1e460ff" data-action-type="hover" data-user-id="2e51b1e460ff" dir="auto">Android Dev Nexus</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-10-09T13:23:15.728Z">Oct 9, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span><span class="u-paddingLeft4"><span class="svgIcon svgIcon--star svgIcon--15px"><svg class="svgIcon-use" width="15" height="15" ><path d="M7.438 2.324c.034-.099.09-.099.123 0l1.2 3.53a.29.29 0 00.26.19h3.884c.11 0 .127.049.038.111L9.8 8.327a.271.271 0 00-.099.291l1.2 3.53c.034.1-.011.131-.098.069l-3.142-2.18a.303.303 0 00-.32 0l-3.145 2.182c-.087.06-.132.03-.099-.068l1.2-3.53a.271.271 0 00-.098-.292L2.056 6.146c-.087-.06-.071-.112.038-.112h3.884a.29.29 0 00.26-.19l1.2-3.52z"/></svg></span></span></div></div></div></div></div></div><div class="col u-xs-size12of12 js-trackPostPresentation u-paddingLeft12 u-marginBottom15 u-paddingRight12 u-size4of12" data-source="collection_home---4------13-----------------------" data-post-id="9ee764f3dee6" data-index="13"><div class="u-lineHeightBase postItem"><a href="https://medium.com/mobile-app-development-publication/kotlin-multiplatform-demystified-cross-platform-made-simple-9ee764f3dee6?source=collection_home---4------13-----------------------" data-action="open-post" data-action-value="https://medium.com/mobile-app-development-publication/kotlin-multiplatform-demystified-cross-platform-made-simple-9ee764f3dee6?source=collection_home---4------13-----------------------" class="u-block u-xs-height170 u-height172 u-backgroundSizeCover u-backgroundOriginBorderBox u-backgroundColorGrayLight u-borderLighter" style="background-image: url("https://cdn-images-1.medium.com/max/800/1*PVv1qHHT7XI40R1emEBvQw.png"); background-position: 50% 50% !important;"><span class="u-textScreenReader">Kotlin Multiplatform Demystified: Cross-Platform Made Simple</span></a></div><div class="col u-xs-marginBottom10 u-paddingLeft0 u-paddingRight0 u-paddingTop15 u-marginBottom30"><a class="" href="https://medium.com/mobile-app-development-publication/kotlin-multiplatform-demystified-cross-platform-made-simple-9ee764f3dee6?source=collection_home---4------13-----------------------" data-action-source="collection_home---4------13-----------------------" data-post-id="9ee764f3dee6"><h3 class="u-contentSansBold u-lineHeightTightest u-xs-fontSize24 u-paddingBottom2 u-paddingTop5 u-fontSize32"><div class="u-letterSpacingTight u-lineHeightTighter u-breakWord u-textOverflowEllipsis u-lineClamp3 u-fontSize24">Kotlin Multiplatform Demystified: Cross-Platform Made Simple</div></h3><div class="u-contentSansThin u-lineHeightBaseSans u-fontSize24 u-xs-fontSize18 u-textColorNormal u-baseColor--textNormal"><div class="u-fontSize18 u-letterSpacingTight u-lineHeightTight u-marginTop7 u-textColorNormal u-baseColor--textNormal">Code once and deploy on both mobile platforms!</div></div></a><div class="u-clearfix u-marginTop20"><div class="u-flexCenter"><div class="postMetaInline-avatar u-flex0"><a class="link u-baseColor--link avatar" href="https://medium.com/@avinashreddy.kr" data-action="show-user-card" data-action-value="6087acd1fe7" data-action-type="hover" data-user-id="6087acd1fe7" dir="auto"><img src="https://cdn-images-1.medium.com/fit/c/72/72/1*OVsVq9-kre_cVylhx7YBPw.jpeg" class="avatar-image u-size36x36 u-xs-size32x32" alt="Go to the profile of Avinash Reddy"></a></div><div class="postMetaInline postMetaInline-authorLockup ui-captionStrong u-flex1 u-noWrapWithEllipsis"><a class="ds-link ds-link--styleSubtle link link--darken link--accent u-accentColor--textNormal u-accentColor--textDarken" href="https://medium.com/@avinashreddy.kr" data-action="show-user-card" data-action-value="6087acd1fe7" data-action-type="hover" data-user-id="6087acd1fe7" dir="auto">Avinash Reddy</a><div class="ui-caption u-fontSize12 u-baseColor--textNormal u-textColorNormal js-postMetaInlineSupplemental"><time datetime="2024-09-29T12:36:39.867Z">Sep 29, 2024</time><span class="middotDivider u-fontSize12"></span><span class="readingTime" title="5 min read"></span></div></div></div></div></div></div></div></section></div></div><style class="js-collectionStyle"> .u-accentColor--borderLight {border-color: #1A8917 !important;} .u-accentColor--borderNormal {border-color: #1A8917 !important;} .u-accentColor--borderDark {border-color: #0F730C !important;} .u-accentColor--iconLight .svgIcon,.u-accentColor--iconLight.svgIcon {fill: #1A8917 !important;} .u-accentColor--iconNormal .svgIcon,.u-accentColor--iconNormal.svgIcon {fill: #1A8917 !important;} .u-accentColor--iconDark .svgIcon,.u-accentColor--iconDark.svgIcon {fill: #0F730C !important;} .u-accentColor--textNormal {color: #0F730C !important;} .u-accentColor--hoverTextNormal:hover {color: #0F730C !important;} .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: #0F730C !important;} .u-accentColor--textDark {color: #0F730C !important;} .u-accentColor--backgroundLight {background-color: #1A8917 !important;} .u-accentColor--backgroundNormal {background-color: #1A8917 !important;} .u-accentColor--backgroundDark {background-color: #0F730C !important;} .u-accentColor--buttonDark {border-color: #0F730C !important; color: #0F730C !important;} .u-accentColor--buttonDark:hover {border-color: #0F730C !important;} .u-accentColor--buttonDark .icon:before,.u-accentColor--buttonDark .svgIcon{color: #0F730C !important; fill: #0F730C !important;} .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: #1A8917 !important; color: #0F730C !important;} .u-accentColor--buttonNormal:hover {border-color: #0F730C !important;} .u-accentColor--buttonNormal .icon:before,.u-accentColor--buttonNormal .svgIcon{color: #1A8917 !important; fill: #1A8917 !important;} .u-accentColor--buttonNormal.button--filled .icon:before,.u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonDark.button--filled,.u-accentColor--buttonDark.button--withChrome.is-active,.u-accentColor--fillWhenActive.is-active {background-color: #0F730C !important; border-color: #0F730C !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: #1A8917 !important; border-color: #1A8917 !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .postArticle.is-withAccentColors .markup--user,.postArticle.is-withAccentColors .markup--query {color: #0F730C !important;} .u-accentColor--highlightFaint {background-color: rgba(232, 243, 232, 1) !important;} .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(163, 208, 162, 1) !important;} .postArticle.is-withAccentColors .markup--quote.is-other {background-color: rgba(232, 243, 232, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(232, 243, 232, 1), rgba(232, 243, 232, 1));} .postArticle.is-withAccentColors .markup--quote.is-me {background-color: rgba(209, 231, 209, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(209, 231, 209, 1), rgba(209, 231, 209, 1));} .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: rgba(163, 208, 162, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));} .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: rgba(163, 208, 162, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));} .postArticle.is-withAccentColors .markup--highlight {background-color: rgba(163, 208, 162, 1) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(163, 208, 162, 1), rgba(163, 208, 162, 1));}</style><style class="js-collectionStyleConstant">.u-imageBgColor {background-color: rgba(0, 0, 0, 0.24705882352941178);} .u-imageSpectrum .u-baseColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconLight .svgIcon,.u-imageSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--iconNormal .svgIcon,.u-imageSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--iconDark .svgIcon,.u-imageSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--textDarker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-baseColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important; color: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-baseColor--buttonLight .icon:before,.u-imageSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-baseColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonDark .icon:before,.u-imageSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--buttonNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonNormal .icon:before,.u-imageSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--buttonDark.button--filled,.u-imageSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--buttonNormal.button--filled,.u-imageSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-baseColor--link {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-imageSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--link.link--darker {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(255, 255, 255, 0.8);} .u-imageSpectrum .ui-h1,.u-imageSpectrum .ui-h2,.u-imageSpectrum .ui-h3,.u-imageSpectrum .ui-h4,.u-imageSpectrum .ui-brand1,.u-imageSpectrum .ui-brand2,.u-imageSpectrum .ui-captionStrong {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-body,.u-imageSpectrum .ui-caps {color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .ui-summary,.u-imageSpectrum .ui-caption {color: rgba(255, 255, 255, 0.8) !important; fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--borderLight {border-color: rgba(255, 255, 255, 0.6980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderNormal {border-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--borderDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconLight .svgIcon,.u-imageSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(255, 255, 255, 0.8) !important;} .u-imageSpectrum .u-accentColor--iconNormal .svgIcon,.u-imageSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--iconDark .svgIcon,.u-imageSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textNormal {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--textDark {color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--backgroundLight {background-color: rgba(255, 255, 255, 0.8980392156862745) !important;} .u-imageSpectrum .u-accentColor--backgroundNormal {background-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--backgroundDark {background-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark {border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonDark .icon:before,.u-imageSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(255, 255, 255, 0.8980392156862745) !important; color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(255, 255, 255, 0.9490196078431372) !important; fill: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-imageSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonDark.button--filled,.u-imageSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-imageSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(255, 255, 255, 1) !important; border-color: rgba(255, 255, 255, 1) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-imageSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(255, 255, 255, 0.9490196078431372) !important; border-color: rgba(255, 255, 255, 0.9490196078431372) !important; color: rgba(0, 0, 0, 0.24705882352941178) !important; fill: rgba(0, 0, 0, 0.24705882352941178) !important;} .u-imageSpectrum .postArticle.is-withAccentColors .markup--user,.u-imageSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(255, 255, 255, 0.9490196078431372) !important;} .u-imageSpectrum .u-accentColor--highlightFaint {background-color: rgba(255, 255, 255, 0.2) !important;} .u-imageSpectrum .u-accentColor--highlightStrong.is-active .svgIcon {fill: rgba(255, 255, 255, 0.6) !important;} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: rgba(255, 255, 255, 0.2) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-other {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: rgba(255, 255, 255, 0.4) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-me {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.4));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-targeted {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--quote.is-selected {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));} .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: rgba(255, 255, 255, 0.6) !important;} body.is-withMagicUnderlines .postArticle.is-withAccentColors .u-imageSpectrum .markup--highlight {background-color: transparent !important; background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.6));}.u-resetSpectrum .u-tintBgColor {background-color: rgba(255, 255, 255, 1) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeLeft:before {background-image: linear-gradient(to right, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%) !important;}.u-resetSpectrum .u-tintBgColor .u-fadeRight:after {background-image: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 100%) !important;} .u-resetSpectrum .u-baseColor--borderLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--borderDark {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--iconLight .svgIcon,.u-resetSpectrum .u-baseColor--iconLight.svgIcon {fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconNormal .svgIcon,.u-resetSpectrum .u-baseColor--iconNormal.svgIcon {fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--iconDark .svgIcon,.u-resetSpectrum .u-baseColor--iconDark.svgIcon {fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textNormal {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--textNormal.u-baseColor--textDarken:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--textDarker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--backgroundLight {background-color: rgba(0, 0, 0, 0.09803921568627451) !important;} .u-resetSpectrum .u-baseColor--backgroundNormal {background-color: rgba(0, 0, 0, 0.2) !important;} .u-resetSpectrum .u-baseColor--backgroundDark {background-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight {border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight:hover {border-color: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonLight .icon:before,.u-resetSpectrum .u-baseColor--buttonLight .svgIcon {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark {border-color: rgba(0, 0, 0, 0.6) !important; color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonDark:hover {border-color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--buttonDark .icon:before,.u-resetSpectrum .u-baseColor--buttonDark .svgIcon {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal {border-color: rgba(0, 0, 0, 0.4980392156862745) !important; color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonNormal:hover {border-color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--buttonNormal .icon:before,.u-resetSpectrum .u-baseColor--buttonNormal .svgIcon {color: rgba(0, 0, 0, 0.4980392156862745) !important; fill: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--buttonDark.button--filled,.u-resetSpectrum .u-baseColor--buttonDark.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2980392156862745) !important; border-color: rgba(0, 0, 0, 0.2980392156862745) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--buttonNormal.button--filled,.u-resetSpectrum .u-baseColor--buttonNormal.button--withChrome.is-active {background-color: rgba(0, 0, 0, 0.2) !important; border-color: rgba(0, 0, 0, 0.2) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-baseColor--link {color: rgba(0, 0, 0, 0.4980392156862745) !important;} .u-resetSpectrum .u-baseColor--link.link--darkenOnHover:hover {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--darken:active {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark {color: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .u-baseColor--link.link--dark.link--darken:hover,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:focus,.u-resetSpectrum .u-baseColor--link.link--dark.link--darken:active {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--link.link--darker {color: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .u-baseColor--placeholderNormal ::-webkit-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal ::-moz-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .u-baseColor--placeholderNormal :-ms-input-placeholder {color: rgba(0, 0, 0, 0.2980392156862745);} .u-resetSpectrum .ui-h1,.u-resetSpectrum .ui-h2,.u-resetSpectrum .ui-h3,.u-resetSpectrum .ui-h4,.u-resetSpectrum .ui-brand1,.u-resetSpectrum .ui-brand2,.u-resetSpectrum .ui-captionStrong {color: rgba(0, 0, 0, 0.8) !important; fill: rgba(0, 0, 0, 0.8) !important;} .u-resetSpectrum .ui-body,.u-resetSpectrum .ui-caps {color: rgba(0, 0, 0, 0.6) !important; fill: rgba(0, 0, 0, 0.6) !important;} .u-resetSpectrum .ui-summary,.u-resetSpectrum .ui-caption {color: rgba(0, 0, 0, 0.2980392156862745) !important; fill: rgba(0, 0, 0, 0.2980392156862745) !important;} .u-resetSpectrum .u-accentColor--borderLight {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderNormal {border-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--borderDark {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconLight .svgIcon,.u-resetSpectrum .u-accentColor--iconLight.svgIcon {fill: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--iconNormal .svgIcon,.u-resetSpectrum .u-accentColor--iconNormal.svgIcon {fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--iconDark .svgIcon,.u-resetSpectrum .u-accentColor--iconDark.svgIcon {fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--hoverTextNormal:hover {color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--textNormal.u-accentColor--textDarken:hover {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--textDark {color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundLight {background-color: rgba(26, 137, 23, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundNormal {background-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--backgroundDark {background-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark {border-color: rgba(17, 128, 14, 1) !important; color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark:hover {border-color: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark .icon:before,.u-resetSpectrum .u-accentColor--buttonDark .svgIcon{color: rgba(15, 115, 12, 1) !important; fill: rgba(15, 115, 12, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:not(.clapButton--largePill) {border-color: rgba(26, 137, 23, 1) !important; color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal:hover {border-color: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal .svgIcon{color: rgba(17, 128, 14, 1) !important; fill: rgba(17, 128, 14, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled .icon:before,.u-resetSpectrum .u-accentColor--buttonNormal.button--filled .svgIcon{color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonDark.button--filled,.u-resetSpectrum .u-accentColor--buttonDark.button--withChrome.is-active,.u-resetSpectrum .u-accentColor--fillWhenActive.is-active {background-color: rgba(15, 115, 12, 1) !important; border-color: rgba(15, 115, 12, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .u-accentColor--buttonNormal.button--filled:not(.clapButton--largePill),.u-resetSpectrum .u-accentColor--buttonNormal.button--withChrome.is-active:not(.clapButton--largePill) {background-color: rgba(17, 128, 14, 1) !important; border-color: rgba(17, 128, 14, 1) !important; color: rgba(255, 255, 255, 1) !important; fill: rgba(255, 255, 255, 1) !important;} .u-resetSpectrum .postArticle.is-withAccentColors .markup--user,.u-resetSpectrum .postArticle.is-withAccentColors .markup--query {color: rgba(17, 128, 14, 1) !important;}</style><div class="js-collectionFooter u-hide"><div class="container u-maxWidth1040"><div class="u-marginTop10 u-paddingTop10 u-paddingBottom30 u-borderTopLighter"><div class="linkSet u-clearfix"><div class="u-floatRight u-textColorNormal u-baseColor--textNormal u-xs-floatLeft"><a class="button button--chromeless u-baseColor--buttonNormal u-marginLeft15 u-lineHeight35 u-xs-block u-xs-marginLeft0" href="https://medium.com/mobile-app-development-publication/about" title="About Mobile App Development Publication" aria-label="About Mobile App Development Publication">About Mobile App Development Publication</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/mobile-app-development-publication/latest" title="Latest Stories for Mobile App Development Publication" aria-label="Latest Stories for Mobile App Development Publication">Latest Stories</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/mobile-app-development-publication/archive" title="Archive for Mobile App Development Publication" aria-label="Archive for Mobile App Development Publication">Archive</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/about">About Medium</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f">Terms</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9">Privacy</a><span class="middotDivider u-xs-hide"></span><a class="button button--chromeless u-baseColor--buttonNormal u-lineHeight35 u-xs-block" href="https://medium.com/business">Teams</a></div></div></div></div></div></div></div></div><div class="loadingBar"></div><script>// <![CDATA[ window["obvInit"] = function (opt_embedded) {window["obvInit"]["embedded"] = opt_embedded; window["obvInit"]["ready"] = true;} // ]]></script><script>// <![CDATA[ var GLOBALS = {"audioUrl":"https://d1fcbxp97j4nb2.cloudfront.net","baseUrl":"https://medium.com","buildLabel":"20250306-2056-root","currentUser":{"userId":"lo_e0f9c915bf97","isVerified":false,"subscriberEmail":"","hasPastMemberships":false,"isEnrolledInHightower":false,"isEligibleForHightower":true,"hightowerLastLockedAt":0,"isWriterProgramEnrolled":true,"isWriterProgramInvited":false,"isWriterProgramOptedOut":false,"writerProgramVersion":0,"writerProgramEnrolledAt":0,"friendLinkOnboarding":0,"hasAdditionalUnlocks":false,"hasApiAccess":false,"writerProgramDistributionSettingOptedIn":false,"isSuspended":false,"collectionOnboardingSeen":0,"atsQualifiedAt":0},"currentUserHasUnverifiedEmail":false,"isAuthenticated":false,"isCurrentUserVerified":false,"miroUrl":"https://cdn-images-1.medium.com","moduleUrls":{"base":"https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.WraVIykqkCT3VTxqeH6eIA.12.js","common-async":"https://cdn-static-1.medium.com/_/fp/gen-js/main-common-async.bundle.hik58FldJQxSw22GVSWNSQ.12.js","hightower":"https://cdn-static-1.medium.com/_/fp/gen-js/main-hightower.bundle.vdVcfwPR2OYNgQu2mBA03Q.12.js","home-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-home-screens.bundle.nKLOt9PoPIFr33oKLSB3rw.12.js","misc-screens":"https://cdn-static-1.medium.com/_/fp/gen-js/main-misc-screens.bundle.wb9fS_QTEZpdpsRAmp8Bwg.12.js","notes":"https://cdn-static-1.medium.com/_/fp/gen-js/main-notes.bundle.2Zs0zdgXNvVBLohrVj7hjw.12.js","payments":"https://cdn-static-1.medium.com/_/fp/gen-js/main-payments.bundle.qC3mu0MVgq25oTbUhule_g.12.js","posters":"https://cdn-static-1.medium.com/_/fp/gen-js/main-posters.bundle.cmNk58aep6xMjjBgaoE0YQ.12.js","power-readers":"https://cdn-static-1.medium.com/_/fp/gen-js/main-power-readers.bundle.qQMd1vEweBHPFDE9wcJAHA.12.js","pubs":"https://cdn-static-1.medium.com/_/fp/gen-js/main-pubs.bundle._QgkeHOIFklhIX6u0hsqYA.12.js","stats":"https://cdn-static-1.medium.com/_/fp/gen-js/main-stats.bundle.tIYaapQW2ilDMbs3tQFf4w.12.js"},"previewConfig":{"weightThreshold":1,"weightImageParagraph":0.51,"weightIframeParagraph":0.8,"weightTextParagraph":0.08,"weightEmptyParagraph":0,"weightP":0.003,"weightH":0.005,"weightBq":0.003,"minPTextLength":60,"truncateBoundaryChars":20,"detectTitle":true,"detectTitleLevThreshold":0.15},"productName":"Medium","supportsEdit":false,"termsUrl":"//policy.medium.com/medium-terms-of-service-9db0094a1e0f","textshotHost":"textshot.textshot-production.svc.cluster.local","transactionId":"1741335378273:29a3a0f5c597","useragent":{"browser":"ie","family":"ie","os":"windows","version":7,"supportsDesktopEdit":false,"supportsInteract":false,"supportsView":true,"isMobile":false,"isTablet":false,"isNative":false,"supportsFileAPI":false,"isTier1":false,"clientVersion":"","clientChannel":"","supportsRealScrollEvents":false,"supportsVhUnits":false,"ruinsViewportSections":false,"supportsHtml5Video":false,"supportsMagicUnderlines":false,"isWebView":false,"isFacebookWebView":false,"supportsProgressiveMedia":false,"supportsPromotedPosts":true,"isBot":false,"isNativeIphone":false,"supportsCssVariables":false,"supportsVideoSections":true,"emojiSupportLevel":1,"isSearchBot":false,"isSyndicationBot":false,"isNativeAndroid":false,"isNativeIos":false,"isSeoAuditBot":false,"isInternalApp":false,"supportsApplePay":false,"supportsScrollableMetabar":false},"variants":{"allow_access":true,"allow_signup":true,"allow_test_auth":"disallow","android_enable_editor_new_publishing_flow":true,"android_enable_friend_links_creation":true,"android_enable_friend_links_postpage_banners":true,"android_enable_image_sharer":true,"android_enable_lists_v2":true,"android_enable_syntax_highlight":true,"android_enable_topic_portals":true,"android_rating_prompt_stories_read_threshold":2,"android_two_hour_refresh":true,"available_annual_plan":"2c754bcc2995","available_annual_premium_plan":"4a442ace1476","available_monthly_plan":"60e220181034","available_monthly_premium_plan":"12a660186432","browsable_stream_config_bucket":"curated-topics","can_receive_tips_v0":true,"can_send_tips_v0":true,"coronavirus_topic_recirc":true,"disable_partner_program_enrollment":true,"disable_rex_pub_featuring_recirc":true,"enable_abandoned_cart_promotion_email":true,"enable_abandoned_paywall_email_experiment":"experiment","enable_abandoned_paywall_promotion_email":true,"enable_android_dynamic_aspirational_paywall":true,"enable_android_dynamic_programming_paywall":true,"enable_android_miro_v2":true,"enable_android_offline_reading":true,"enable_android_verified_author":true,"enable_app_flirty_thirty":true,"enable_apple_sign_in":true,"enable_apple_webhook":true,"enable_aurora_pub_follower_page":true,"enable_author_cards":true,"enable_author_cards_byline":true,"enable_auto_follow_on_subscribe":true,"enable_automod":true,"enable_bg_post_post":true,"enable_boost_experiment":"control","enable_boost_nia_v01":true,"enable_braintree_apple_pay":true,"enable_braintree_client":true,"enable_braintree_google_pay":true,"enable_braintree_integration":true,"enable_braintree_paypal":true,"enable_braintree_trial_membership":true,"enable_braintree_webhook":true,"enable_branch_io":true,"enable_cache_less_following_feed":true,"enable_cancellation_discount_v1_1":true,"enable_cancellation_discount_v1_email":true,"enable_configure_pronouns":true,"enable_conversion_model_v2":"group_2","enable_conversion_ranker_v2":"control","enable_creator_welcome_email":true,"enable_deprecate_legacy_providers_v3":true,"enable_deviant_get_variant_flag_from_medium2":true,"enable_diversification_rex":true,"enable_engagement_service_publish_response":true,"enable_entities_to_follow_v2":true,"enable_eventstats_event_processing":true,"enable_footer_app_buttons":true,"enable_google_one_tap":true,"enable_google_webhook":true,"enable_group_gifting":true,"enable_homepage_featured_feed":true,"enable_hybrid_ranking_model":"experiment","enable_iceland_forced_android":true,"enable_import":true,"enable_inline_comments":true,"enable_intrinsic_automatic_actions":true,"enable_ios_autorefresh":true,"enable_ios_dynamic_paywall_aspiriational":true,"enable_ios_dynamic_paywall_programming":true,"enable_ios_easy_resubscribe":true,"enable_ios_offline_reading":true,"enable_legacy_feed_in_iceland":true,"enable_lite_archive_page":true,"enable_lite_continue_this_thread":true,"enable_lite_homepage":true,"enable_lite_response_markup":true,"enable_lite_server_upstream_deadlines":true,"enable_lo_homepage":"control","enable_maim_the_meter":true,"enable_marketing_emails":true,"enable_mastodon_avatar_upload":true,"enable_mastodon_for_members":true,"enable_mastodon_for_members_username_selection":true,"enable_medium2_kbfd":true,"enable_medium_com_canonical_urls":true,"enable_members_only_audio":true,"enable_ml_rank_rex_anno":true,"enable_mobile_plans_branding":"control","enable_moc_load_processor_all_recs_surfaces":true,"enable_moc_load_processor_c":true,"enable_moc_load_processor_first_story":true,"enable_new_manage_membership_flow":true,"enable_new_stripe_customers":true,"enable_newsletter_lo_flow_custom_domains":true,"enable_pill_based_home_feed":true,"enable_plans_page_branding_v2":"group_1","enable_post_bottom_responses":true,"enable_post_bottom_responses_input":true,"enable_post_bottom_responses_native":true,"enable_post_publish_permission_check":true,"enable_pp_country_expansion":true,"enable_pp_v4":true,"enable_pre_pp_v4":true,"enable_premium_tier":true,"enable_premium_tier_badge":true,"enable_pub_featuring":true,"enable_pub_featuring_notifications":true,"enable_pub_featuring_post_page_label":true,"enable_pub_featuring_stats":true,"enable_publication_hierarchy_v2_web":true,"enable_publication_hierarchy_v2_web_multivariate":"publication_hierarchy","enable_ranker_v10":"control","enable_recaptcha_enterprise":true,"enable_recirc_model":true,"enable_recommended_publishers_query":true,"enable_rex_aggregator_v2":true,"enable_rex_new_push_notification_endpoint":true,"enable_rex_reading_history":true,"enable_rito_upstream_deadlines":true,"enable_seamless_social_sharing":true,"enable_see_pronouns":true,"enable_sharer_create_post_share_key":true,"enable_sharer_validate_post_share_key":true,"enable_simplified_digest_v2_b":true,"enable_sms_verification_for_publish":true,"enable_speechify_ios":true,"enable_speechify_widget":true,"enable_sprig":true,"enable_starspace":true,"enable_susi_redesign_android":true,"enable_susi_redesign_ios":true,"enable_switch_plan_premium_tier":true,"enable_tag_recs":true,"enable_tick_landing_page":true,"enable_tipping_v0_android":true,"enable_tipping_v0_ios":true,"enable_tribute_landing_page":true,"enable_trust_service_recaptcha":true,"enable_update_explore_wtf":true,"enable_update_topic_portals_wtf":true,"enable_updated_pub_recs_ui":true,"enable_verifications_service":true,"enable_winback_promotion_email":true,"get_highlights_from_engagement":true,"glyph_font_set":"m2-unbound-source-serif-pro","goliath_externalsearch_enable_comment_deindexation":true,"ios_display_paywall_after_onboarding":true,"ios_enable_friend_links_creation":true,"ios_enable_friend_links_postpage_banners":true,"ios_enable_home_post_menu":true,"ios_enable_lock_responses":true,"ios_enable_verified_book_author":true,"ios_iceland_nux":true,"ios_in_app_free_trial":true,"ios_remove_twitter_onboarding_step":true,"ios_social_share_sheet":true,"limit_post_referrers":true,"limit_user_follows":true,"mobile_custom_app_icon":true,"num_post_bottom_responses_to_show":3,"onboarding_tags_from_top_views":true,"reader_fair_distribution_non_qp":true,"redefined_top_posts":true,"reengagement_notification_duration":3,"rex_generator_max_candidates":1000,"signin_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","signup_services":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple","skip_fs_cache_user_vals":true},"xsrfToken":"","iosAppId":"828256236","supportEmail":"yourfriends@medium.com","fp":{"/icons/monogram-mask.svg":"https://cdn-static-1.medium.com/_/fp/icons/monogram-mask.KPLCSFEZviQN0jQ7veN2RQ.12.svg","/icons/favicon-medium-editor.ico":"https://cdn-static-1.medium.com/_/fp/icons/favicon-medium-editor.PiakrZWB7Yb80quUVQWM6g.12.ico"},"authBaseUrl":"https://medium.com","imageUploadSizeMb":25,"isAuthDomainRequest":true,"algoliaApiEndpoint":"https://MQ57UUUQZ2-dsn.algolia.net","algoliaAppId":"MQ57UUUQZ2","algoliaSearchOnlyApiKey":"394474ced050e3911ae2249ecc774921","iosAppStoreUrl":"https://itunes.apple.com/app/medium-everyones-stories/id828256236?pt=698524&mt=8","iosAppLinkBaseUrl":"medium:","algoliaIndexPrefix":"medium_","androidPlayStoreUrl":"https://play.google.com/store/apps/details?id=com.medium.reader","googleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","androidPackage":"com.medium.reader","androidPlayStoreMarketScheme":"market://details?id=com.medium.reader","googleAuthUri":"https://accounts.google.com/o/oauth2/auth","androidScheme":"medium","layoutData":{"useDynamicScripts":false,"googleAnalyticsTrackingCode":"G-7JY7T788PK","jsShivUrl":"https://cdn-static-1.medium.com/_/fp/js/shiv.RI2ePTZ5gFmMgLzG5bEVAA.12.js","useDynamicCss":false,"faviconUrl":"https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","faviconImageId":"5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19","fontSets":[{"id":8,"url":"https://glyph.medium.com/css/e/sr/latin/e/ssr/latin/e/ssb/latin/m2-unbound-source-serif-pro.css"},{"id":11,"url":"https://glyph.medium.com/css/m2-unbound-source-serif-pro.css"},{"id":9,"url":"https://glyph.medium.com/css/mkt.css"}],"glyphUrl":"https://glyph.medium.com"},"authBaseUrlRev":"moc.muidem//:sptth","stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","archiveUploadSizeMb":100,"previewConfig2":{"weightThreshold":1,"weightImageParagraph":0.05,"raiseImage":true,"enforceHeaderHierarchy":true,"isImageInsetRight":true},"isAmp":false,"iosScheme":"medium","facebook":{"key":"542599432471018","namespace":"medium-com","scope":{"default":["public_profile","email"],"connect":["public_profile","email"],"login":["public_profile","email"],"share":["public_profile","email"]}},"memberContentTopicId":"13d7efd82fb2","audioContentTopicId":"3792abbd134","isDoNotAuth":false,"buggle":{"videoUrl":"https://cdn-videos-1.medium.com","audioUrl":"https://cdn-audio-1.medium.com"},"referrerType":5,"partnerProgramEmail":"partnerprogram@medium.com","recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","countryCode":"SG","bypassMeter":false,"branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","paypal":{"clientMode":"production","oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com/redeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"}},"collectionConfig":{"mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"]},"bypassMeterWithShareKey":false,"recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","cdcMessaging":[{"text":"For more information on the novel coronavirus and Covid-19, visit ","href":"","type":"text","start":0,"end":0},{"text":"cdc.gov","href":"https://www.cdc.gov/coronavirus/2019-nCoV","type":"link","start":66,"end":73},{"text":".","href":"","type":"text","start":0,"end":0}],"braintree":{"merchantId":"m56f8fqpf7ngnrd4"},"diagnostics":{},"domain":"medium.com"} // ]]></script><script charset="UTF-8" src="https://cdn-static-1.medium.com/_/fp/gen-js/main-base.bundle.WraVIykqkCT3VTxqeH6eIA.12.js" async></script><script>// <","detectedLanguage":"en","latestVersion":"6661b4fff249","latestPublishedVersion":"6661b4fff249","hasUnpublishedEdits":false,"latestRev":306,"createdAt":1729707965226,"updatedAt":1731612951830,"acceptedAt":0,"firstPublishedAt":1729709442871,"latestPublishedAt":1730162112546,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Architect your mobile project right","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*_tefJfVrG10f1-Imn8nfHA.png","filter":"","backgroundSize":"","originalWidth":1060,"originalHeight":602,"strategy":"resample","height":0,"width":0},"wordCount":1003,"imageCount":1,"readingTime":3.9849056603773585,"subtitle":"Architect your mobile project right","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":8,"isBookmarked":false,"tags":[{"slug":"android-app-development","name":"Android App Development","postCount":49743,"metadata":{"postCount":49743,"coverImage":{"id":"1*0f-m_3fC_4FVEO5js7BVxg.png","originalWidth":1952,"originalHeight":1116,"isFeatured":true}},"type":"Tag"},{"slug":"androiddev","name":"AndroidDev","postCount":12567,"metadata":{"postCount":12567,"coverImage":{"id":"1*0f-m_3fC_4FVEO5js7BVxg.png","originalWidth":1952,"originalHeight":1116,"isFeatured":true}},"type":"Tag"},{"slug":"viewmodel","name":"Viewmodel","postCount":675,"metadata":{"postCount":675,"coverImage":{"id":"1*Z6U2SYMKGZdJLpAJ7P6FUQ.png","originalWidth":1100,"originalHeight":733}},"type":"Tag"},{"slug":"kotlin","name":"Kotlin","postCount":32720,"metadata":{"postCount":32720,"coverImage":{"id":"1*DloPba5iqFbVqE2ZLaqaVg.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"android","name":"Android","postCount":147741,"metadata":{"postCount":147741,"coverImage":{"id":"1*IzE0j0AMtdOYnwex5KylxQ.png","originalWidth":1616,"originalHeight":846,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://android-dev-nexus.medium.com/why-viewmodel-is-your-best-friend-and-yes-you-really-need-it-16c6dc8de464?sk=ebd87cf11a45e1f17fe97a51bc2fd78a","alts":[{"type":3,"url":"medium://p/16c6dc8de464"},{"type":2,"url":"medium://p/16c6dc8de464"}],"httpStatus":200},{"url":"https://buymeacoffee.com/android.dev.nexus","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1730162112846},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":106,"sectionCount":9,"readingList":0,"topics":[{"topicId":"64756708407c","slug":"android-development","createdAt":1521652914155,"deletedAt":0,"image":{"id":"1*zLD64ewnrZ3XKBtDUMXQ-w@2x.jpeg","originalWidth":3000,"originalHeight":1997},"name":"Android Dev","description":"Building little green robots.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Android Development: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"why-viewmodel-is-your-best-friend-and-yes-you-really-need-it","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"why-viewmodel-is-your-best-friend-and-yes-you-really-need-it-16c6dc8de464","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*_tefJfVrG10f1-Imn8nfHA.png","originalWidth":1060,"originalHeight":602,"isFeatured":true}},{"name":"6684","type":13,"text":"Learning Mobile Development","markups":[],"alignment":1},{"name":"87ce","type":3,"text":"Why ViewModel is Your Best Friend (and Yes, You Really Need It!)","markups":[{"type":1,"start":0,"end":64}],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Architect your mobile project right"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"f9c208bdbb09","isNewsletter":false,"newsletterId":"01c0e076e57c","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1729709441616,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"6684","type":13,"text":"Learning Mobile Development","markups":[]},{"name":"87ce","type":3,"text":"Why ViewModel is Your Best Friend (and Yes, You Really Need It!)","markups":[{"type":1,"start":0,"end":64}]},{"name":"53fa","type":13,"text":"Architect your mobile project right","markups":[]},{"name":"3450","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*_tefJfVrG10f1-Imn8nfHA.png","originalWidth":1060,"originalHeight":602,"isFeatured":true}},{"name":"d10e","type":1,"text":"🌟Members can scroll down to enjoy! Non-members, click here for full access.🌟","markups":[{"type":3,"start":55,"end":59,"href":"https://android-dev-nexus.medium.com/why-viewmodel-is-your-best-friend-and-yes-you-really-need-it-16c6dc8de464?sk=ebd87cf11a45e1f17fe97a51bc2fd78a","title":"","rel":"","anchorType":0},{"type":1,"start":0,"end":78}]},{"name":"cf3b","type":1,"text":"Okay, let’s get real for a second. You’ve probably heard “ViewModel this” and “ViewModel that” from almost every Android tutorial out there. But honestly, why do you really need it? Can’t you just get away with onSaveInstanceState() or…","markups":[{"type":10,"start":211,"end":232},{"type":2,"start":166,"end":172}]}],"sections":[{"name":"1ed7","startIndex":0}]},"isFullContent":false,"subtitle":"Architect your mobile project right"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"bc2bbce2d278":{"id":"bc2bbce2d278","versionId":"18708b5b6036","creatorId":"2e51b1e460ff","homeCollectionId":"f9c208bdbb09","title":"JUnit vs. AndroidJUnit vs. Robolectric: Fixing Your Test Failures Without Losing Your Mind!","detectedLanguage":"en","latestVersion":"18708b5b6036","latestPublishedVersion":"18708b5b6036","hasUnpublishedEdits":false,"latestRev":707,"createdAt":1728458189198,"updatedAt":1731665174594,"acceptedAt":0,"firstPublishedAt":1728480195728,"latestPublishedAt":1730162222973,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Join me to solve a unit testing problem without losing your mind! Let’s understand JUnit, AndroidJUnit, and Robolectric effortlessly.","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*Ogl3q_-rebrPitW-iCAulA.png","filter":"","backgroundSize":"","originalWidth":982,"originalHeight":638,"strategy":"resample","height":0,"width":0},"wordCount":958,"imageCount":6,"readingTime":4.565094339622641,"subtitle":"Join me to solve a unit testing problem without losing your mind! Let’s understand JUnit, AndroidJUnit, and Robolectric effortlessly.","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":6,"isBookmarked":false,"tags":[{"slug":"testing-framework","name":"Testing Framework","postCount":819,"metadata":{"postCount":819,"coverImage":{"id":"1*U8uajNHUdetuS05XL7H30g.png","originalWidth":2800,"originalHeight":1064,"isFeatured":true}},"type":"Tag"},{"slug":"junit","name":"Junit","postCount":1131,"metadata":{"postCount":1131,"coverImage":{"id":"1*KU0veHxt2XbvE_k7CKG2jA.png","originalWidth":2200,"originalHeight":1100,"isFeatured":true}},"type":"Tag"},{"slug":"android-app-developers","name":"Android App Developers","postCount":1305,"metadata":{"postCount":1305,"coverImage":{"id":"1*nGOlrpKMhkyWZ7-v9DFUNA.png","originalWidth":792,"originalHeight":300,"isFeatured":true}},"type":"Tag"},{"slug":"android-app-development","name":"Android App Development","postCount":49743,"metadata":{"postCount":49743,"coverImage":{"id":"1*0f-m_3fC_4FVEO5js7BVxg.png","originalWidth":1952,"originalHeight":1116,"isFeatured":true}},"type":"Tag"},{"slug":"androiddev","name":"AndroidDev","postCount":12567,"metadata":{"postCount":12567,"coverImage":{"id":"1*0f-m_3fC_4FVEO5js7BVxg.png","originalWidth":1952,"originalHeight":1116,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":2,"links":{"entries":[{"url":"https://android-dev-nexus.medium.com/junit-vs-androidjunit-vs-robolectric-fixing-your-test-failures-without-losing-your-mind-bc2bbce2d278?sk=83ce5fc4a388d3ff450fe5f333116be2","alts":[{"type":3,"url":"medium://p/bc2bbce2d278"},{"type":2,"url":"medium://p/bc2bbce2d278"}],"httpStatus":200},{"url":"https://buymeacoffee.com/android.dev.nexus","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1730162223367},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":136,"sectionCount":3,"readingList":0,"topics":[{"topicId":"64756708407c","slug":"android-development","createdAt":1521652914155,"deletedAt":0,"image":{"id":"1*zLD64ewnrZ3XKBtDUMXQ-w@2x.jpeg","originalWidth":3000,"originalHeight":1997},"name":"Android Dev","description":"Building little green robots.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Android Development: Articles and News — Medium","type":"Topic"}]},"coverless":true,"slug":"junit-vs-androidjunit-vs-robolectric-fixing-your-test-failures-without-losing-your-mind","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":false,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":2,"uniqueSlug":"junit-vs-androidjunit-vs-robolectric-fixing-your-test-failures-without-losing-your-mind-bc2bbce2d278","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*Ogl3q_-rebrPitW-iCAulA.png","originalWidth":982,"originalHeight":638,"isFeatured":true}},{"name":"previewTitle","type":3,"text":"JUnit vs. AndroidJUnit vs. Robolectric: Fixing Your Test Failures Without Losing Your Mind!","alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Join me to solve a unit testing problem without losing your mind! Let’s understand JUnit, AndroidJUnit, and Robolectric effortlessly."},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"f9c208bdbb09","isNewsletter":false,"newsletterId":"67951e20de25","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":true,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":true,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":1,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":1728480194471,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4594","type":3,"text":"JUnit vs. AndroidJUnit vs. Robolectric: Fixing Your Test Failures How I Learned to Love Testing Again!","markups":[]},{"name":"9f49","type":6,"text":"Here’s a special treat for our non-Medium members: we’re offering free access to this blog! Just follow this link — because your curiosity and passion for coding should never be limited! 😉😉","markups":[{"type":3,"start":104,"end":113,"href":"https://android-dev-nexus.medium.com/junit-vs-androidjunit-vs-robolectric-fixing-your-test-failures-without-losing-your-mind-bc2bbce2d278?sk=83ce5fc4a388d3ff450fe5f333116be2","title":"","rel":"","anchorType":0},{"type":2,"start":0,"end":191}]},{"name":"36b1","type":1,"text":"Recently, I was writing a test for the following code:","markups":[]},{"name":"fbcf","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*68j4naH236DIMOFvnqBVpQ.png","originalWidth":2632,"originalHeight":1436}},{"name":"f4f8","type":9,"text":"First test: onlyproductType was passed as empty.","markups":[{"type":10,"start":16,"end":27}]},{"name":"76b4","type":9,"text":"…","markups":[{"type":10,"start":18,"end":21}]}],"sections":[{"name":"1196","startIndex":0}]},"isFullContent":false,"subtitle":"Join me to solve a unit testing problem without losing your mind! Let’s understand JUnit, AndroidJUnit, and Robolectric effortlessly."},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"},"9ee764f3dee6":{"id":"9ee764f3dee6","versionId":"09f07f1cb22f","creatorId":"6087acd1fe7","homeCollectionId":"f9c208bdbb09","title":"Kotlin Multiplatform Demystified: Cross-Platform Made Simple","detectedLanguage":"en","latestVersion":"09f07f1cb22f","latestPublishedVersion":"09f07f1cb22f","hasUnpublishedEdits":false,"latestRev":782,"createdAt":1727441761772,"updatedAt":1731707803013,"acceptedAt":0,"firstPublishedAt":1727613399867,"latestPublishedAt":1727691445997,"vote":false,"experimentalCss":"","displayAuthor":"","content":{"subtitle":"Code once and deploy on both mobile platforms!","postDisplay":{"coverless":true}},"virtuals":{"statusForCollection":"APPROVED","allowNotes":true,"previewImage":{"imageId":"1*PVv1qHHT7XI40R1emEBvQw.png","filter":"","backgroundSize":"","originalWidth":734,"originalHeight":248,"strategy":"resample","height":0,"width":0},"wordCount":986,"imageCount":6,"readingTime":4.670754716981132,"subtitle":"Code once and deploy on both mobile platforms!","publishedInCount":1,"usersBySocialRecommends":[],"noIndex":false,"recommends":9,"isBookmarked":false,"tags":[{"slug":"kotlin","name":"Kotlin","postCount":32720,"metadata":{"postCount":32720,"coverImage":{"id":"1*DloPba5iqFbVqE2ZLaqaVg.jpeg","originalWidth":1024,"originalHeight":1024,"isFeatured":true}},"type":"Tag"},{"slug":"kotlin-multiplatform","name":"Kotlin Multiplatform","postCount":1591,"metadata":{"postCount":1591,"coverImage":{"id":"1*lS25_M6me30l7knx163AHw.png","originalWidth":2000,"originalHeight":1200,"isFeatured":true}},"type":"Tag"},{"slug":"android","name":"Android","postCount":147741,"metadata":{"postCount":147741,"coverImage":{"id":"1*IzE0j0AMtdOYnwex5KylxQ.png","originalWidth":1616,"originalHeight":846,"isFeatured":true}},"type":"Tag"},{"slug":"android-app-development","name":"Android App Development","postCount":49743,"metadata":{"postCount":49743,"coverImage":{"id":"1*0f-m_3fC_4FVEO5js7BVxg.png","originalWidth":1952,"originalHeight":1116,"isFeatured":true}},"type":"Tag"},{"slug":"mobile-app-development","name":"Mobile App Development","postCount":100093,"metadata":{"postCount":100093,"coverImage":{"id":"1*875HFmC2Ey24pd4p2H_1cg.jpeg","originalWidth":1792,"originalHeight":1024,"isFeatured":true}},"type":"Tag"}],"socialRecommendsCount":0,"responsesCreatedCount":0,"links":{"entries":[{"url":"https://skie.touchlab.co/features/flows","alts":[],"httpStatus":200},{"url":"https://skie.touchlab.co/features/suspend","alts":[],"httpStatus":200},{"url":"https://skie.touchlab.co/","alts":[],"httpStatus":200},{"url":"https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-ktor-sqldelight.html","alts":[],"httpStatus":200},{"url":"https://ktor.io/docs/client-create-multiplatform-application.html","alts":[],"httpStatus":200}],"version":"0.3","generatedAt":1727691446517},"isLockedPreviewOnly":false,"metaDescription":"","totalClapCount":53,"sectionCount":4,"readingList":0,"topics":[{"topicId":"decb52b64abf","slug":"programming","createdAt":1493934116328,"deletedAt":0,"image":{"id":"1*iPa136b1cGEO7lvoXg6uHQ@2x.jpeg","originalWidth":6016,"originalHeight":4016},"name":"Programming","description":"The good, the bad, the buggy.","relatedTopics":[],"visibility":1,"relatedTags":[],"relatedTopicIds":[],"seoTitle":"Programming News and Articles — Medium","type":"Topic"}]},"coverless":true,"slug":"kotlin-multiplatform-demystified-cross-platform-made-simple","translationSourcePostId":"","translationSourceCreatorId":"","isApprovedTranslation":false,"inResponseToPostId":"","inResponseToRemovedAt":0,"isTitleSynthesized":true,"allowResponses":true,"importedUrl":"","importedPublishedAt":0,"visibility":0,"uniqueSlug":"kotlin-multiplatform-demystified-cross-platform-made-simple-9ee764f3dee6","previewContent":{"bodyModel":{"paragraphs":[{"name":"previewImage","type":4,"text":"","layout":10,"metadata":{"id":"1*PVv1qHHT7XI40R1emEBvQw.png","originalWidth":734,"originalHeight":248,"isFeatured":true}},{"name":"4679","type":13,"text":"Learning KMP","markups":[],"alignment":1},{"name":"6694","type":3,"text":"Kotlin Multiplatform Demystified: Cross-Platform Made Simple","markups":[],"alignment":1}],"sections":[{"startIndex":0}]},"isFullContent":false,"subtitle":"Code once and deploy on both mobile platforms!"},"license":0,"inResponseToMediaResourceId":"","canonicalUrl":"","approvedHomeCollectionId":"f9c208bdbb09","isNewsletter":false,"newsletterId":"ad834b3e1e48","webCanonicalUrl":"","mediumUrl":"","migrationId":"","notifyFollowers":true,"notifyTwitter":false,"notifyFacebook":false,"responseHiddenOnParentPostAt":0,"isSeries":false,"isSubscriptionLocked":false,"seriesLastAppendedAt":0,"audioVersionDurationSec":0,"sequenceId":"","isEligibleForRevenue":false,"isBlockedFromHightower":false,"deletedAt":0,"lockedPostSource":0,"hightowerMinimumGuaranteeStartsAt":0,"hightowerMinimumGuaranteeEndsAt":0,"featureLockRequestAcceptedAt":0,"mongerRequestType":1,"layerCake":0,"socialTitle":"","socialDek":"","editorialPreviewTitle":"","editorialPreviewDek":"","curationEligibleAt":0,"isProxyPost":false,"proxyPostFaviconUrl":"","proxyPostProviderName":"","proxyPostType":0,"isSuspended":false,"isLimitedState":false,"seoTitle":"","previewContent2":{"bodyModel":{"paragraphs":[{"name":"4679","type":13,"text":"Learning KMP","markups":[]},{"name":"6694","type":3,"text":"Kotlin Multiplatform Demystified: Cross-Platform Made Simple","markups":[]},{"name":"9380","type":13,"text":"Code once and deploy on both mobile platforms!","markups":[]},{"name":"e8d1","type":1,"text":"This article introduces you to Kotlin Multiplatform (KMP), explains how it works, discusses its pros and cons, and addresses all your queries by the end of the article.","markups":[]},{"name":"292e","type":4,"text":"","markups":[],"layout":1,"metadata":{"id":"1*PVv1qHHT7XI40R1emEBvQw.png","originalWidth":734,"originalHeight":248,"isFeatured":true}},{"name":"4abd","type":3,"text":"What is Kotlin multi platform ?","markups":[]},{"name":"06c9","type":1,"text":"Kotlin Multiplatform is a technology that allows you to create applications for various platforms and efficiently reuse code across them while retaining…","markups":[{"type":1,"start":137,"end":188},{"type":2,"start":137,"end":188}]}],"sections":[{"name":"cc03","startIndex":0}]},"isFullContent":false,"subtitle":"Code once and deploy on both mobile platforms!"},"cardType":0,"isDistributionAlertDismissed":false,"isShortform":false,"shortformType":0,"responsesLocked":false,"isLockedResponse":false,"isPublishToEmail":true,"responseDistribution":0,"isMarkedPaywallOnly":false,"type":"Post"}}},"paging":{"path":"/_/api/collections/f9c208bdbb09/stream","next":{"to":"1727613399867","ignoredIds":[],"page":4}},"collection":{"id":"f9c208bdbb09","name":"Mobile App Development Publication","slug":"mobile-app-development-publication","tags":["PROGRAMMING","MOBILE APP DEVELOPMENT","ANDROID APP DEVELOPMENT","IOS APP DEVELOPMENT","ANDROIDDEV"],"creatorId":"5742b4fcf89e","description":"Sharing iOS, Android and relevant Mobile App Development Technology and Learning","shortDescription":"Sharing iOS, Android and relevant Mobile App Development…","image":{"imageId":"1*r5bO5bEjNCKLt6fKZbPdCA.png","filter":"","backgroundSize":"","originalWidth":570,"originalHeight":570,"strategy":"resample","height":0,"width":0},"metadata":{"followerCount":3776,"activeAt":1740747861405},"virtuals":{"permissions":{"canPublish":false,"canPublishAll":false,"canRepublish":false,"canRemove":false,"canManageAll":false,"canSubmit":false,"canEditPosts":false,"canAddWriters":false,"canViewStats":false,"canSendNewsletter":false,"canViewLockedPosts":false,"canViewCloaked":false,"canEditOwnPosts":false,"canBeAssignedAuthor":false,"canEnrollInHightower":false,"canLockPostsForMediumMembers":false,"canLockOwnPostsForMediumMembers":false,"canViewNewsletterV2Stats":false,"canCreateNewsletterV3":false},"isSubscribed":false,"isEnrolledInHightower":false,"isEligibleForHightower":false,"isSubscribedToCollectionEmails":false,"isMuted":false,"canToggleEmail":false,"isWriter":false},"logo":{"imageId":"1*MdMgVRTnupYGv9gYoKASQQ.png","filter":"","backgroundSize":"","originalWidth":1233,"originalHeight":115,"strategy":"resample","height":0,"width":0},"twitterUsername":"elye_project","facebookPageName":"elye.proj","sections":[{"type":2,"collectionHeaderMetadata":{"title":"Mobile App Development","description":"for Android and iOS","backgroundImage":{"id":"1*C2ZAeP1Mo3zhxYDLB04i5Q.png","originalWidth":2400,"originalHeight":748},"logoImage":{},"alignment":1,"layout":6}},{"type":3,"promoMetadata":{"sectionHeader":"Mobile App Development","promoId":"ebb927f68e94"}},{"type":1,"postListMetadata":{"source":3,"layout":2,"number":5,"postIds":["f208489e9a80","e1e1723f392","1aef83d67659","c82283d15564","9cb8f664cfcf"]}},{"type":1,"postListMetadata":{"source":1,"layout":4,"number":14,"postIds":["dd823a91207d","c4975bd00621","efb2e71a878c","225b855ba5b8","a7290257d987","3d8beb05c2e8","e679cd2bbca0","40e99fcd1d57","65e8258353fc","9b69943cf92d","4572afb99821","16c6dc8de464","bc2bbce2d278","9ee764f3dee6"],"sectionHeader":"Latest"}},{"type":1,"postListMetadata":{"source":2,"layout":4,"number":14,"postIds":[],"sectionHeader":"Trending"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":14,"postIds":[],"tagSlug":"Android App Development","tagName":"Android App Development","sectionHeader":"Android App Development"}},{"type":1,"postListMetadata":{"source":4,"layout":4,"number":14,"postIds":[],"tagSlug":"iOS App Development","tagName":"iOS App Development","sectionHeader":"iOS App Development"}}],"favicon":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"colorPalette":{"defaultBackgroundSpectrum":{"colorPoints":[{"color":"#FF1A8917","point":0},{"color":"#FF11800E","point":0.1},{"color":"#FF0F730C","point":0.2},{"color":"#FF095407","point":1}],"backgroundColor":"#FFFFFFFF"},"highlightSpectrum":{"colorPoints":[{"color":"#FFFFFFFF","point":0},{"color":"#FFE8F3E8","point":0.1},{"color":"#FFE8F3E8","point":0.2},{"color":"#FFD1E7D1","point":0.6},{"color":"#FFA3D0A2","point":1}],"backgroundColor":"#FFFFFFFF"},"darkBackgroundSpectrum":{"colorPoints":[{"color":"#FF095407","point":0},{"color":"#FF0F730C","point":0.1},{"color":"#FF11800E","point":0.2},{"color":"#FF1A8917","point":1}],"backgroundColor":"#FF000000"}},"navItems":[{"type":1,"title":"Android App Development","tagSlug":"android-app-development","url":"https://medium.com/mobile-app-development-publication/tagged/android-app-development","source":"tagSlug"},{"type":1,"title":"iOS App Development","tagSlug":"ios-app-development","url":"https://medium.com/mobile-app-development-publication/tagged/ios-app-development","source":"tagSlug"},{"type":1,"title":"Jetpack Compose","tagSlug":"jetpack-compose","url":"https://medium.com/mobile-app-development-publication/tagged/jetpack-compose","source":"tagSlug"},{"type":1,"title":"Kotlin","tagSlug":"kotlin","url":"https://medium.com/mobile-app-development-publication/tagged/kotlin","source":"tagSlug"},{"type":1,"title":"Swift","tagSlug":"swift","url":"https://medium.com/mobile-app-development-publication/tagged/swift","source":"tagSlug"},{"type":4,"title":"Dagger","url":"https://medium.com/mobile-app-development-publication/dagger/home","topicId":"c14e29bbdf41","source":"topicId"},{"type":4,"title":"Android UI","url":"https://medium.com/mobile-app-development-publication/android-ui/home","topicId":"8eae2192d281","source":"topicId"}],"colorBehavior":1,"collectionFeatures":[30],"ampLogo":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"header":{"title":"Mobile App Development","description":"for Android and iOS","backgroundImage":{"id":"1*C2ZAeP1Mo3zhxYDLB04i5Q.png","originalWidth":2400,"originalHeight":748},"logoImage":{},"alignment":1,"layout":6},"subscriberCount":3776,"tagline":"Sharing Mobile App Development and Learning","isOptedIntoAurora":false,"newsletterV3":{"newsletterV3Id":"88a7c4c85c6","type":1,"name":"Update from Mobile App Development Publication","description":"A place where we learn and share our mobile app development experience on Medium","collectionId":"f9c208bdbb09","newsletterSlug":"update-from-mobile-app-development-publication","isSubscribed":false,"showPromo":false,"avatarImageId":"","creatorId":"5742b4fcf89e","showNewsletterPostsInCollectionHome":false,"exportableSubscribersCount":31,"subscribersCount":29,"promoHeadline":"","promoBody":"","replyToEmail":""},"isCurationAllowedByDefault":false,"polarisCoverImage":{"imageId":"","filter":"","backgroundSize":"","originalWidth":0,"originalHeight":0,"strategy":"resample","height":0,"width":0},"ptsQualifiedAt":1616092799481,"type":"Collection"},"header":{"title":"Mobile App Development","description":"for Android and iOS","backgroundImage":{"id":"1*C2ZAeP1Mo3zhxYDLB04i5Q.png","originalWidth":2400,"originalHeight":748},"logoImage":{},"alignment":1,"layout":6},"streamItems":[{"createdAt":1741335378380,"randomId":"aaaaf384bc13","section":{"items":[{"promo":{"promoId":"ebb927f68e94"},"itemType":"promo"}],"layout":2,"heading":{"fallbackTitle":"Mobile App Development","headingBasic":{"title":"Mobile App Development"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"},{"createdAt":1741335378380,"randomId":"8b8a3a5f8f44","section":{"items":[{"post":{"postId":"f208489e9a80"},"itemType":"post"},{"post":{"postId":"e1e1723f392"},"itemType":"post"},{"post":{"postId":"1aef83d67659"},"itemType":"post"},{"post":{"postId":"c82283d15564"},"itemType":"post"},{"post":{"postId":"9cb8f664cfcf"},"itemType":"post"}],"layout":2},"itemType":"section","type":"StreamItem"},{"createdAt":1741335378380,"randomId":"5f76fda2f2da","section":{"items":[{"post":{"postId":"dd823a91207d"},"itemType":"post"},{"post":{"postId":"c4975bd00621"},"itemType":"post"},{"post":{"postId":"efb2e71a878c"},"itemType":"post"},{"post":{"postId":"225b855ba5b8"},"itemType":"post"},{"post":{"postId":"a7290257d987"},"itemType":"post"},{"post":{"postId":"3d8beb05c2e8"},"itemType":"post"},{"post":{"postId":"e679cd2bbca0"},"itemType":"post"},{"post":{"postId":"40e99fcd1d57"},"itemType":"post"},{"post":{"postId":"65e8258353fc"},"itemType":"post"},{"post":{"postId":"9b69943cf92d"},"itemType":"post"},{"post":{"postId":"4572afb99821"},"itemType":"post"},{"post":{"postId":"16c6dc8de464"},"itemType":"post"},{"post":{"postId":"bc2bbce2d278"},"itemType":"post"},{"post":{"postId":"9ee764f3dee6"},"itemType":"post"}],"layout":4,"heading":{"fallbackTitle":"Latest","headingBasic":{"title":"Latest"},"headingType":"headingBasic"}},"itemType":"section","type":"StreamItem"}]}) // ]]></script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'91c8a660fe1c3f53',t:'MTc0MTMzNTM3OS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>