<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-6755709643044947179</id><updated>2019-04-20T00:56:30.906-07:00</updated><category term="Featured" /><category term="Google Play" /><category term="Android" /><category term="Develop" /><category term="Android Developer" /><category term="Games" /><category term="archive" /><category term="Android Studio" /><category term="Apps" /><category term="Security" /><category term="Announcements" /><category term="Google Play services" /><category term="android developers" /><category term="Android Wear" /><category term="Distribute" /><category term="Google Services" /><category term="User Interface" /><category term="NDK" /><category term="Android N" /><category term="Design" /><category term="Developer Preview" /><category term="SDK updates" /><category term="Developer Console" /><category term="Google Play game services" /><category term="How-to" /><category term="android security" /><category term="GooglePlay" /><category term="Android Developer Challenge" /><category term="App" /><category term="Google Play Games" /><category term="Android Market" /><category term="Android TV" /><category term="Game" /><category term="Play Console" /><category term="AndroidDevStory" /><category term="Material Design" /><category term="Android Things" /><category term="Google Play Console" /><category term="Tools" /><category term="Android 1.5" /><category term="Story" /><category term="Google I/O" /><category term="Best Practices" /><category term="android p" /><category term="developers" /><category term="Android Design" /><category term="developer" /><category term="Android Auto" /><category term="Android O" /><category term="Kotlin" /><category term="Marshmallow" /><category term="Optimization" /><category term="Performance" /><category term="Support Library" /><category term="UI" /><category term="Udacity" /><category term="wear" /><category term="Android 1.6" /><category term="Google Analytics" /><category term="Location" /><category term="Localization" /><category term="Android 5.0" /><category term="AndroidO" /><category term="Google" /><category term="Google Cloud Platform" /><category term="IoT" /><category term="appstory" /><category term="engagement" /><category term="notifications" /><category term="permissions" /><category term="API" /><category term="Android Instant Apps" /><category term="Android Pie" /><category term="C++" /><category term="Google Cloud Messaging" /><category term="Layout" /><category term="London" /><category term="Privacy" /><category term="Tablets" /><category term="Testing" /><category term="UI toolkit" /><category term="admob" /><category term="analytics" /><category term="developerstory" /><category term="monetization" /><category term="Android M" /><category term="App quality" /><category term="Audio" /><category term="Europe" /><category term="Google Cast" /><category term="Graphics" /><category term="IO2013" /><category term="Renderscript" /><category term="battery" /><category term="business" /><category term="compatibility" /><category term="competition" /><category term="google play protect" /><category term="grow" /><category term="prizes" /><category term="win" /><category term="‘Google Play" /><category term="Android 2.0" /><category term="Android Vitals" /><category term="App Resources" /><category term="GDC" /><category term="Google Assistant" /><category term="Google Fit" /><category term="Google Play games services" /><category term="Media and Camera" /><category term="Open source" /><category term="OpenGL ES" /><category term="Pixel" /><category term="Play Store" /><category term="Power series" /><category term="Project Treble" /><category term="Quality" /><category term="Wear OS" /><category term="androidn" /><category term="contest" /><category term="gamestory" /><category term="indie" /><category term="indies" /><category term="io15" /><category term="nearby" /><category term="showcase" /><category term="subscriptions" /><category term="users" /><category term="#androiddevsummit" /><category term="Actions on Google" /><category term="Android 4.2" /><category term="Android 6.0" /><category term="Android 9" /><category term="Android SDK" /><category term="Android for Work" /><category term="AndroidWear" /><category term="App Components" /><category term="Authentication" /><category term="Bluetooth" /><category term="Code Day" /><category term="Courses" /><category term="Developer profiles" /><category term="Education" /><category term="Firebase" /><category term="GCM" /><category term="Google Drive" /><category term="Google Mobile Ads" /><category term="HTTPS" /><category term="IO2014" /><category term="In-app Billing" /><category term="Intents" /><category term="Launch" /><category term="Licensing" /><category term="Saatchi" /><category term="Sample code" /><category term="Samples" /><category term="WebView" /><category term="androidp" /><category term="growth" /><category term="signing" /><category term="wifi" /><category term="#io17" /><category term="#io18" /><category term="APIs" /><category term="Activity Recognition" /><category term="Ads" /><category term="Android 3.0" /><category term="Android 3.2" /><category term="Android 4.4" /><category term="Animation" /><category term="App Indexing" /><category term="Beta" /><category term="Developer Labs" /><category term="Development Tools" /><category term="Early Access" /><category term="Firebase Cloud Messaging" /><category term="Fragments" /><category term="Google Maps" /><category term="Google Play Store" /><category term="Google Play for Work" /><category term="Google client API" /><category term="Google+" /><category term="Indie Contest" /><category term="Indie Games Accelerator" /><category term="Indie games contest" /><category term="Input methods" /><category term="Instant Apps" /><category term="Jetpack" /><category term="Launchpad Accelerator" /><category term="LiquidFun" /><category term="Maps" /><category term="Maps API" /><category term="MaterialDesign" /><category term="Notification" /><category term="Policy" /><category term="Preview" /><category term="SDK Tools" /><category term="Screens" /><category term="Subscription" /><category term="Text and Input" /><category term="Treble" /><category term="VR" /><category term="Virtual Reality" /><category term="android oreo" /><category term="androidq" /><category term="androidstudio" /><category term="aosp" /><category term="apk" /><category term="developergamestory" /><category term="events" /><category term="fcm" /><category term="google play for families" /><category term="iOS" /><category term="kernel" /><category term="mobile vision APIs" /><category term="oreo" /><category term="store listing experiments" /><category term="ubicomp" /><category term="Action Bar" /><category term="Actions" /><category term="Android 2.1" /><category term="Android 2.2" /><category term="Android 2.3" /><category term="Android 7.0" /><category term="Android 71" /><category term="Android App Bundles" /><category term="Android Developer Phone" /><category term="Android Emulator" /><category term="Android Go" /><category term="Android Jetpack" /><category term="Android Open Source Project" /><category term="Android Pay API" /><category term="Android Studio 3.0" /><category term="Android Wear 2.0" /><category term="Android app development" /><category term="AndroidX" /><category term="Animation and Graphics" /><category term="App Bundle" /><category term="AppCompat" /><category term="Architecture Components" /><category term="BLE" /><category term="Boston" /><category term="Canary" /><category term="Connectivity" /><category term="Dashboard" /><category term="Daydream" /><category term="Developer Console Store Listing Experiments" /><category term="Efficient Apps" /><category term="GLSL" /><category term="Global" /><category term="Google Play Billing" /><category term="Google Play Instant" /><category term="Google Wallet" /><category term="GoogleAPIClient" /><category term="Guidelines" /><category term="I/O2014" /><category term="IME" /><category term="Identity" /><category term="Indie Games" /><category term="Internet of Things" /><category term="JNI" /><category term="Java" /><category term="Java 8" /><category term="LVL" /><category term="LondonEng" /><category term="Memory Management" /><category term="Nougat" /><category term="OpenGL" /><category term="Places" /><category term="PlayStore" /><category term="Profiling" /><category term="Pure" /><category term="Requirements" /><category term="SEA" /><category term="Safe Browsing" /><category term="SafetyNet" /><category term="Southeast Asia" /><category term="Storage" /><category term="TLS" /><category term="TV" /><category term="TensorFlow" /><category term="Text-to-Speech" /><category term="Translation" /><category term="UX" /><category term="Unity" /><category term="User Support" /><category term="Web" /><category term="Widgets" /><category term="beacons" /><category term="buildingforbillions" /><category term="chrome" /><category term="connection encryption" /><category term="conversions" /><category term="developer story" /><category term="documentation" /><category term="dynamic delivery" /><category term="foldable" /><category term="game design" /><category term="google computer science" /><category term="hackster" /><category term="in-app purchase" /><category term="infinite deviation: games" /><category term="io2010" /><category term="library" /><category term="machine learning" /><category term="malware" /><category term="network security" /><category term="ratings" /><category term="reviews" /><category term="social impact" /><category term="things" /><category term="update" /><category term="user data" /><category term="watch face API" /><category term="workmanager" /><category term="#Android" /><category term="#Android #Android development # advanced Android #learn Android #build Android apps #Udacity" /><category term="#AndroidTV #Google Cast #Udacity" /><category term="#GDC17 #GoogleDeveloperDay #GooglePlay #Games #VR #Daydream #Developers #Android #Google Play" /><category term="#GPA2017 #GooglePlayAwards #GooglePlay #Games #VR #AR #AndroidWear #Indies #Startup #Apps #Developers #Android #Google Play" /><category term="#GPA2018 #GooglePlayAwards #GooglePlay #Games #VR #AR #AndroidWear #Indies #Startup #Apps #Developers #Android #Google Play" /><category term="#io16" /><category term="'Google Play" /><category term=".app" /><category term="3d" /><category term="505 Games" /><category term="64bit" /><category term="8.1" /><category term="A/B testing" /><category term="AAudio for Android" /><category term="AIY" /><category term="AIY Projects" /><category term="AMD" /><category term="AMP" /><category term="APK Expansion Files" /><category term="ARPU" /><category term="ART optimizing" /><category term="ART optimizing profiles" /><category term="ASO" /><category term="ATSL" /><category term="About Fun" /><category term="Acquisition" /><category term="Administration" /><category term="Advanced Android course" /><category term="Advanced Android training" /><category term="Agus Gomez" /><category term="Android 2.3.3" /><category term="Android 4.0" /><category term="Android 4.3" /><category term="Android 5.1" /><category term="Android 7.1" /><category term="Android 8.1" /><category term="Android App" /><category term="Android C++" /><category term="Android Dev Summit" /><category term="Android Development" /><category term="Android Excellence" /><category term="Android IDE" /><category term="Android O Developer Preview" /><category term="Android One" /><category term="Android Pay" /><category term="Android Q" /><category term="Android Q Permissions" /><category term="Android Security Rewards" /><category term="Android Security Rewards Program" /><category term="Android Testing Support Library" /><category term="Android VRP" /><category term="Android codelabs" /><category term="Android courses" /><category term="Android training" /><category term="AnswerLab" /><category term="AoG" /><category term="App Bundles" /><category term="App icons" /><category term="Application Security Improvement Program" /><category term="Architecture" /><category term="Assistant" /><category term="Assistant SDK" /><category term="Auto" /><category term="Auto Backup" /><category term="Autofill Framework" /><category term="BABBQ" /><category term="Betatesting" /><category term="Billions" /><category term="Biometric authentication" /><category term="BiometricPrompt" /><category term="BiometricPrompt API" /><category term="Biometrics" /><category term="Budge Studios" /><category term="C" /><category term="C++ audio library for Android" /><category term="CFI" /><category term="Call Log" /><category term="Certificates" /><category term="Certification" /><category term="Channels" /><category term="Chromebooks" /><category term="Cloud Speech API" /><category term="Commerce" /><category term="Compiler Mitigations" /><category term="Compiler-based security" /><category term="Complications" /><category term="Console" /><category term="Contacts" /><category term="Content Provider" /><category term="Control Flow Integrity" /><category term="Cool Stuff" /><category term="CultureAlley" /><category term="DAC/Design" /><category term="DAC/Develop" /><category term="DNS over TLS" /><category term="DP3" /><category term="Debugging" /><category term="Demographics" /><category term="Deprecation" /><category term="Developer Accounts" /><category term="Developer Days" /><category term="Developer Feedback" /><category term="DialogFragment" /><category term="Disruptor Beam" /><category term="Doze" /><category term="Driving Do Not Disturb" /><category term="EA" /><category term="Editors’ Choice" /><category term="Electronic Arts" /><category term="Engage" /><category term="Enterprise" /><category term="ExoPlayer" /><category term="Fast Pair" /><category term="Finance" /><category term="Fortify" /><category term="Fundamentals" /><category term="GDC17" /><category term="GDC19" /><category term="GNSS" /><category term="GPGS" /><category term="GPS" /><category term="GSI" /><category term="Game Developers Conference" /><category term="Game Development" /><category term="Gareth Jones" /><category term="Gboard" /><category term="Gestures" /><category term="Gmail" /><category term="Golf Clash" /><category term="Google APIs" /><category term="Google Apps" /><category term="Google Awareness API" /><category term="Google Developer" /><category term="Google Mobile Developer Day" /><category term="Google Now" /><category term="Google Play Developer API" /><category term="Google Play Developer API V3" /><category term="Google Play Developer API Version 3" /><category term="Google Play Devs" /><category term="Google Play Protect Rewards Program" /><category term="Google Sign-In" /><category term="Google codelabs" /><category term="Google registry" /><category term="GoogleDeveloperDay" /><category term="Gpfe" /><category term="GridLayout" /><category term="HAL" /><category term="HelloEnglish" /><category term="Holo" /><category term="HttpsURLConnection" /><category term="Hutch" /><category term="Hutch Games" /><category term="HyperV" /><category term="I/O 2018" /><category term="ICS" /><category term="Image Processing" /><category term="Indie games developers" /><category term="Indie games showcase" /><category term="Indie showcase" /><category term="Indonesia" /><category term="Indonesia Games Contest" /><category term="Inzen studio" /><category term="Issue Tracker" /><category term="Japan" /><category term="Job Scheduler" /><category term="Job Service" /><category term="KNOX" /><category term="Keyboard" /><category term="Klei Entertainment" /><category term="LTV" /><category term="LaMatinale" /><category term="LeMonde" /><category term="Life of a Bug" /><category term="Linux" /><category term="Lollipop" /><category term="MENA" /><category term="ML" /><category term="ML Kit" /><category term="Marta Gui" /><category term="Media" /><category term="MediaSession" /><category term="Mobile Games" /><category term="Mountain View" /><category term="Multiwindow" /><category term="Munich" /><category term="Music" /><category term="NBU" /><category term="NFC" /><category term="NLP" /><category term="Navigation" /><category term="Niji Games" /><category term="Nix Hydra" /><category term="Non-SDK" /><category term="Now in Arabic" /><category term="OAuth" /><category term="Oboe audio library" /><category term="Omnidrone" /><category term="On-Device Machine Learning" /><category term="Onboarding" /><category term="OpenSL ES for Android" /><category term="P2P" /><category term="PWA" /><category term="Paul Gouge" /><category term="Photo Sphere" /><category term="Physics" /><category term="Pico" /><category term="Pixel 2" /><category term="Play Academy" /><category term="Play Cloud" /><category term="Playdemic" /><category term="Playtime 2016" /><category term="Plugin" /><category term="Pocket Gems" /><category term="Policy Enforcement" /><category term="Potentially Harmful Applications" /><category term="Promo Graphics" /><category term="Public Tracker" /><category term="Quick Search Box" /><category term="R8" /><category term="RTL" /><category term="Ratings and Reviews" /><category term="Releases" /><category term="Resources" /><category term="Robinhood" /><category term="SMS" /><category term="Santa Tracker" /><category term="Schell Games" /><category term="ScreenCapture" /><category term="Sensors" /><category term="Seriously" /><category term="ShareActionProvider" /><category term="Shared Elements" /><category term="Sharing" /><category term="Shortcuts" /><category term="Skyscanner" /><category term="Smartlock" /><category term="Social Point" /><category term="South Korea" /><category term="Space" /><category term="Space Ape Games" /><category term="Speech Input" /><category term="Stencils" /><category term="Stickers" /><category term="Storytoys" /><category term="Studio" /><category term="Super Evil MegaCorp" /><category term="Survey" /><category term="TAGS: Google Play" /><category term="TEE" /><category term="TLS by default" /><category term="Tel Aviv" /><category term="Telephony" /><category term="Tips" /><category term="Titan Brawl" /><category term="Touch" /><category term="Trusted User Interface" /><category term="UAMP" /><category term="User Feedback" /><category term="VGames" /><category term="Video" /><category term="Visibility" /><category term="Vitals" /><category term="Voice" /><category term="Voice Kit" /><category term="Wear UI Library" /><category term="Webdriver" /><category term="World Food Day" /><category term="XmlPullParser" /><category term="YouTube" /><category term="accessibility" /><category term="android 8.0" /><category term="android audio apps" /><category term="android c++ games linux open source release osx serialization windows" /><category term="android extension pack" /><category term="android o apis" /><category term="android sanitizer" /><category term="android things 1.0" /><category term="android wear 1.0" /><category term="android71" /><category term="android81" /><category term="android9" /><category term="androidjetpack" /><category term="androidoreo" /><category term="app attribution" /><category term="app id" /><category term="app install" /><category term="app signing" /><category term="app standby buckets" /><category term="app updates" /><category term="appbundle" /><category term="ar" /><category term="arch" /><category term="arcore" /><category term="attestation" /><category term="augmented reality" /><category term="autofill" /><category term="awareness" /><category term="bar code" /><category term="beacon" /><category term="beta testing" /><category term="betatesting GooglePlayforFamilies" /><category term="big data" /><category term="billing" /><category term="blackhat" /><category term="bootcamp" /><category term="bug swatting" /><category term="bulletins" /><category term="clang" /><category term="class loading" /><category term="codelabs" /><category term="coding" /><category term="companion Action" /><category term="constraintlayout" /><category term="context" /><category term="cross-platform" /><category term="cutout" /><category term="d8" /><category term="dalvik" /><category term="data storage" /><category term="ddms" /><category term="deeplocal" /><category term="developerappstory" /><category term="developerstory developerconsole" /><category term="device id" /><category term="dexer" /><category term="dx" /><category term="dynamicdelivery" /><category term="eBook" /><category term="emulator" /><category term="encryption" /><category term="event" /><category term="face detection" /><category term="families" /><category term="fitness" /><category term="free trial" /><category term="game-as-a-service" /><category term="gapid" /><category term="gdc18" /><category term="go edition" /><category term="gold" /><category term="golf games" /><category term="google pay" /><category term="google security" /><category term="googleservices" /><category term="guide" /><category term="how to develop audio apps for android" /><category term="http" /><category term="i18n" /><category term="imakeapps" /><category term="insider attack resistance" /><category term="install referrer" /><category term="install track" /><category term="installs" /><category term="instant" /><category term="instant experience" /><category term="instant games" /><category term="internationalization" /><category term="internet" /><category term="intuit" /><category term="io16" /><category term="io18" /><category term="keys" /><category term="kids app developers" /><category term="kids apps" /><category term="ktx" /><category term="l10n" /><category term="language" /><category term="language id" /><category term="language identification" /><category term="latency" /><category term="leanback" /><category term="learning" /><category term="listing" /><category term="liveops" /><category term="long aspect ratio" /><category term="machine" /><category term="memory" /><category term="messaging api" /><category term="mobile ads" /><category term="mobile encryption" /><category term="mobile search" /><category term="motion." /><category term="multiplayer" /><category term="network" /><category term="oboe" /><category term="of" /><category term="official launch" /><category term="offline" /><category term="ordered broadcast" /><category term="packaging" /><category term="patch level" /><category term="patching" /><category term="peer group" /><category term="people" /><category term="phone" /><category term="play" /><category term="play billing" /><category term="play billing library" /><category term="play core" /><category term="playbook app" /><category term="playconsole" /><category term="protection" /><category term="publishing" /><category term="push messaging" /><category term="pwn" /><category term="recaptcha" /><category term="revenue" /><category term="robotics" /><category term="runtime permissions" /><category term="sandbox" /><category term="sanitizer" /><category term="sdk" /><category term="secure hardware" /><category term="security infrastructure" /><category term="selinux" /><category term="smart reply" /><category term="smr" /><category term="source code" /><category term="spam" /><category term="spyware" /><category term="stability" /><category term="storelistingexperime" /><category term="strictmode" /><category term="success stories" /><category term="tamper-resistant hardware security" /><category term="target API" /><category term="targeted spyware" /><category term="text" /><category term="textclassifier" /><category term="textview" /><category term="threading" /><category term="titan" /><category term="traceview" /><category term="transition api" /><category term="transitions" /><category term="trial period" /><category term="updates" /><category term="user experience" /><category term="viewpager" /><category term="vulkan" /><category term="watch faces" /><category term="wearos" /><category term="web registry" /><title type="text">Android Developers Blog</title><subtitle type="html">An Open Handset Alliance Project.</subtitle><link rel="alternate" type="text/html" href="http://android-developers.googleblog.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default?start-index=26&amp;max-results=25&amp;redirect=false" /><author><name>Jacob Lehrbaum</name><uri>http://www.blogger.com/profile/13732208892143144743</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>993</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/hsDu" /><feedburner:info uri="blogspot/hsdu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-2235983586529964498</id><published>2019-04-17T11:19:00.000-07:00</published><updated>2019-04-18T08:22:02.530-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="androidstudio" /><title type="text"> Android Studio 3.4</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-7NTxIItlM6c/XLdYTVSeJpI/AAAAAAAAIew/jtjL6uqdjr4MyHq3PaTfyUturBBD0-dAgCLcBGAs/s1600/image1.gif"&gt;
&lt;img style="display:none" src="https://4.bp.blogspot.com/-7NTxIItlM6c/XLdYTVSeJpI/AAAAAAAAIew/jtjL6uqdjr4MyHq3PaTfyUturBBD0-dAgCLcBGAs/s1600/image1.gif"&gt;

&lt;p&gt;&lt;em&gt;Posted by Jamal Eason, Product Manager, Android&lt;/em&gt;&lt;/p&gt;


&lt;a href="https://1.bp.blogspot.com/-6Yv9OQdhJe4/XLdWh-_HKaI/AAAAAAAAIek/K4LaOOJh1xsda8w6ewk-zsO5JuFl1ecUACLcBGAs/s1600/unnamed.png" imageanchor="1" &gt;&lt;img id="floatRight" border="0" src="https://1.bp.blogspot.com/-6Yv9OQdhJe4/XLdWh-_HKaI/AAAAAAAAIek/K4LaOOJh1xsda8w6ewk-zsO5JuFl1ecUACLcBGAs/s1600/unnamed.png" data-original-width="250" data-original-height="225" /&gt;&lt;/a&gt;&lt;p&gt;
After nearly six months of development, Android Studio 3.4 is ready to &lt;a href="https://developer.android.com/studio/"&gt;download&lt;/a&gt; today on the stable release channel. This is a milestone release of the Project Marble effort from the Android Studio team.  Project Marble is our focus on making the fundamental features and flows of the Integrated Development Environment (IDE) rock-solid. On top of many performance improvements and bug fixes we made in Android Studio 3.4, we are excited to release a small but focused set of new features that address core developer workflows for app building &amp; resource management.
&lt;/p&gt;
&lt;p&gt;
Part of the effort of Project Marble is to address user facing issues in core features in the IDE. At the top of the list of issues for Android Studio 3.4 is an updated Project Structure Dialog (PSD) which is a revamped user interface to manage dependencies in your app project Gradle build files. In another build-related change, R8 replaces Proguard as the default code shrinker and obfuscator. To aid app design, we incorporated your feedback to create a new app resource management tool to bulk import, preview, and manage resources for your project. Lastly, we are shipping an updated Android Emulator that takes less system resources, and also supports the &lt;a href="https://android-developers.googleblog.com/2019/04/android-q-beta-2-update.html"&gt;Android Q Beta&lt;/a&gt;. Overall, these features are designed to make you more productive in your day-to-day app development workflow. 
&lt;/p&gt;
&lt;p&gt;
Alongside the stable release of Android Studio 3.4, we recently published in-depth blogs on how we are investigating &amp; fixing a range of issues under the auspices of Project Marble. You should check them out as you &lt;a href="https://developer.android.com/studio/"&gt;download&lt;/a&gt; the latest update to Android Studio:  
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;a href="https://medium.com/androiddevelopers/android-studio-project-marble-apply-changes-e3048662e8cd"&gt;Project Marble: Apply Changes&lt;/a&gt;

&lt;li&gt;&lt;a href="https://medium.com/androiddevelopers/improving-build-speed-in-android-studio-3e1425274837"&gt;Improving build speed in Android Studio&lt;/a&gt;

&lt;li&gt;&lt;a href="https://medium.com/androiddevelopers/android-emulator-project-marble-improvements-1175a934941e"&gt;Android Emulator: Project Marble Improvements&lt;/a&gt;

&lt;li&gt;&lt;a href="https://medium.com/androiddevelopers/android-studio-project-marble-lint-performance-8baedbff2521"&gt;Android Studio Project Marble: Lint Performance&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The development work for Project Marble is still on-going, but Android Studio 3.4 incorporates productivity features and over 300 bug &amp; stability enhancements that you do not want to miss. Watch and read below for some of the notable changes and enhancements that you will find in Android Studio 3.4. 
&lt;/p&gt;
&lt;iframe width="560" height="315" id="imgFull" src="https://www.youtube.com/embed/3lDO5uFkJoQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;h2&gt;Develop
&lt;/h2&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;Resource Manager &lt;/strong&gt; -  We have heard from you that asset management and navigation can be clunky and tedious in Android Studio, especially as your app grows in complexity. The resource manager is a new tool to visualize the drawables, colors, and layouts across your app project in a consolidated view.  In addition to visualization, the panel supports drag &amp; drop bulk asset import, and, by popular request, bulk SVG to VectorDrawable conversion. These accelerators will hopefully help manage assets you get from a design team, or simply help you have a more organized view of project assets.  &lt;a href="https://d.android.com/studio/write/resource-manager"&gt;Learn more&lt;/a&gt;. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://4.bp.blogspot.com/-7NTxIItlM6c/XLdYTVSeJpI/AAAAAAAAIew/jtjL6uqdjr4MyHq3PaTfyUturBBD0-dAgCLcBGAs/s1600/image1.gif" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://4.bp.blogspot.com/-7NTxIItlM6c/XLdYTVSeJpI/AAAAAAAAIew/jtjL6uqdjr4MyHq3PaTfyUturBBD0-dAgCLcBGAs/s1600/image1.gif" data-original-width="1013" data-original-height="604" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;Resource Manager&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;Import Intentions&lt;/strong&gt; - As you work with new Jetpack and Firebase libraries, Android Studio 3.4 will recognize common classes in these libraries and suggest, via code intentions, adding the required import statement and library dependency to your Gradle project files. This optimization can be a time saver since it keeps you in the context of your code. Moreover, since Jetpack libraries are modularized, Android Studio can find the exact library or minimum set of libraries required to use a new Jetpack class. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://2.bp.blogspot.com/-0pStCIPIL3E/XLdYhSgEDmI/AAAAAAAAIe0/afoKfKvvR84yOoS3vJBDu17soipYk2S2gCLcBGAs/s1600/image6.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-0pStCIPIL3E/XLdYhSgEDmI/AAAAAAAAIe0/afoKfKvvR84yOoS3vJBDu17soipYk2S2gCLcBGAs/s1600/image6.png" data-original-width="942" data-original-height="636" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;Jetpack Import Intentions&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;Layout Editor Properties Panel&lt;/strong&gt; - To improve product refinement and polish we refreshed the Layout Editor Properties panel. Now we just have one single pane, with collapsible sections for properties. Additionally, errors and warnings have their own highlight color, we have a resource binding control for each property, and we have an updated color picker.  
&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://4.bp.blogspot.com/-09KU6FCb6c8/XLdYoa7sfWI/AAAAAAAAIe8/dYomyj0kbe06ReUN9Me40e9rjtw6bwWWQCLcBGAs/s1600/image4.gif" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://4.bp.blogspot.com/-09KU6FCb6c8/XLdYoa7sfWI/AAAAAAAAIe8/dYomyj0kbe06ReUN9Me40e9rjtw6bwWWQCLcBGAs/s1600/image4.gif" data-original-width="947" data-original-height="876" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;Layout Editor Properties Panel&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;IntelliJ Platform Update &lt;/strong&gt;-  Android Studio 3.4 includes Intellij 2018.3.4. This update has a wide range of improvements from support for multi-line TODOs to an updated search everywhere feature. &lt;a href="https://blog.jetbrains.com/idea/2019/01/intellij-idea-2018-3-4-is-released/"&gt;Learn more&lt;/a&gt;.  
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Build&lt;/h2&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;Project Structure Dialog  &lt;/strong&gt;- A long standing request from many developers is to have a user interface front end to manage Gradle project files. We have more plans for this area, but Android Studio 3.4 includes the next phase of improvement in the Product Structure Dialog (PSD). The new PSD allows you to see and add dependencies to your project at a module level. Additionally, the new PSD displays build variables, suggestions to improve your build file configuration, and more! Although the latest Gradle plugin v3.4 also has improvements, you do not have to upgrade your Gradle plugin version number to take advantage of the new PSD. &lt;a href="https://d.android.com/studio/releases#psd"&gt;Learn more.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://3.bp.blogspot.com/-vbh4uPbt9wQ/XLdYvzIwtVI/AAAAAAAAIfA/sY8FAxn63-wBNdnLP0TfbwbI5dwO2_GjwCLcBGAs/s1600/image2.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://3.bp.blogspot.com/-vbh4uPbt9wQ/XLdYvzIwtVI/AAAAAAAAIfA/sY8FAxn63-wBNdnLP0TfbwbI5dwO2_GjwCLcBGAs/s1600/image2.png" data-original-width="1600" data-original-height="899" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;Project Structure Dialogue&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;R8 by Default &lt;/strong&gt;-&lt;strong&gt; &lt;/strong&gt;Almost two years ago we previewed &lt;a href="https://r8.googlesource.com/r8"&gt;R8&lt;/a&gt; as the replacement for Proguard.  R8 code shrinking helps reduce the size of your APK by getting rid of unused code and resources as well as making your actual code take less space.  Additionally, in comparison to Proguard, R8 combines shrinking, desugaring and dexing operations into one step, which ends up to be a more efficient approach for Android apps. After additional &lt;a href="https://android-developers.googleblog.com/2018/11/r8-new-code-shrinker-from-google-is.html"&gt;validation and testing&lt;/a&gt; last year, R8 is now the default code shinker for new projects created with Android Studio 3.4 and for projects using Android Gradle plugin 3.4 and higher.  &lt;a href="https://d.android.com/studio/releases#r8-default"&gt;Learn more&lt;/a&gt;. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Test&lt;/h2&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;Android Emulator Skin updates &amp; Android Q Beta Emulator System Image &lt;/strong&gt; -   Inside of Android Studio 3.4 we released the latest Google Pixel 3 &amp; Google Pixel 3 XL device skins. Also with this release, you can also download Android Q Beta emulator system images for app testing on Android Q. Please note that we do recommend&lt;a href="https://developer.android.com/studio/preview/install-preview"&gt; running the canary version&lt;/a&gt; of Android Studio and the emulator to get the latest compatibility changes during the Android Q Beta program. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://2.bp.blogspot.com/-ez42wN56Cl4/XLdY10OLj1I/AAAAAAAAIfE/hiuCnHV0eu0mECqqhsBjOVR0wdB0LTDqQCLcBGAs/s1600/image5.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-ez42wN56Cl4/XLdY10OLj1I/AAAAAAAAIfE/hiuCnHV0eu0mECqqhsBjOVR0wdB0LTDqQCLcBGAs/s1600/image5.png" data-original-width="1600" data-original-height="780" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;&lt;em&gt;Android Emulator - Pixel 3 XL Emulator Skin&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
To recap, Android Studio 3.4 includes these new enhancements &amp; features: 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Develop&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;Resource Manager

&lt;li&gt;Import Intentions

&lt;li&gt;Layout Editor Properties Panel

&lt;li&gt;IntelliJ 2018.3.4 Platform Update
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Build&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;Project Structure Dialog&lt;/li&gt;

&lt;li&gt;R8 by Default
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Test &lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Emulator Device Skins

&lt;li&gt;Android Q Beta Emulator System Image Support
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Check out the Android Studio &lt;a href="https://developer.android.com/studio/releases/#3-3-0"&gt;release notes&lt;/a&gt;, Android Gradle plugin &lt;a href="https://developer.android.com/studio/releases/gradle-plugin"&gt;release notes&lt;/a&gt;, and the Android Emulator &lt;a href="https://developer.android.com/studio/releases/emulator"&gt;release notes&lt;/a&gt; for more details.
&lt;/p&gt;
&lt;h2&gt;Getting Started &lt;/h2&gt;
&lt;p&gt;
&lt;strong&gt;Download &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Download the latest version of Android Studio 3.4 from the &lt;a href="https://developer.android.com/studio/"&gt;download page&lt;/a&gt;. If you are using a previous release of Android Studio, you can simply update to the latest version of Android Studio. If you want to maintain a stable version of Android Studio, you can run the stable release version and canary release versions of Android Studio at the same time. &lt;a href="https://developer.android.com/studio/preview/install-preview"&gt;Learn more&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
To use the mentioned Android Emulator features make sure you are running at least Android Emulator v28.0.22 downloaded via the Android Studio SDK Manager. 
&lt;/p&gt;
&lt;p&gt;
We appreciate any feedback on things you like, and issues or features you would like to see. If you find a bug or issue, feel free to &lt;a href="https://source.android.com/source/report-bugs#developer-tools"&gt;file an issue&lt;/a&gt;. Follow us -- the Android Studio development team ‐ on &lt;a href="http://www.twitter.com/androidstudio"&gt;Twitter&lt;/a&gt; and on &lt;a href="https://medium.com/androiddevelopers"&gt;Medium&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=hoGS-oiL65g:wSvPU2d2w78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=hoGS-oiL65g:wSvPU2d2w78:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=hoGS-oiL65g:wSvPU2d2w78:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/hoGS-oiL65g" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2235983586529964498" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2235983586529964498" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/hoGS-oiL65g/android-studio-34.html" title=" Android Studio 3.4" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-7NTxIItlM6c/XLdYTVSeJpI/AAAAAAAAIew/jtjL6uqdjr4MyHq3PaTfyUturBBD0-dAgCLcBGAs/s72-c/image1.gif" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/android-studio-34.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-5647669118660861307</id><published>2019-04-16T23:00:00.000-07:00</published><updated>2019-04-16T23:00:00.853-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="Indie Games Accelerator" /><category scheme="http://www.blogger.com/atom/ns#" term="Launchpad Accelerator" /><title type="text"> Indie Games Accelerator - Applications open for class of 2019</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-xyWrrNXR5wA/XLEZoAVDmkI/AAAAAAAAIEs/6oAg5qHUnPckdFkWJItgqOAr1Z_L9LS_gCLcBGAs/s1600/Key%2BVisual%2B-%2Bhashtag.jpg"&gt;
&lt;img style="display:none" src="https://4.bp.blogspot.com/-xyWrrNXR5wA/XLEZoAVDmkI/AAAAAAAAIEs/6oAg5qHUnPckdFkWJItgqOAr1Z_L9LS_gCLcBGAs/s1600/Key%2BVisual%2B-%2Bhashtag.jpg"&gt;

&lt;p&gt;&lt;em&gt;Posted by Anuj Gulati, Developer Marketing Manager and Sami Kizilbash, Developer Relations Program Manager&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Last year we announced the &lt;a href="https://events.withgoogle.com/indie-games-accelerator/"&gt;Indie Games Accelerator,&lt;/a&gt; a special edition of Launchpad Accelerator, to help top indie game developers from emerging markets achieve their full potential on Google Play. Our team of program mentors had an &lt;a href="https://www.youtube.com/watch?v=FErjDx0aAUk&amp;t=13s"&gt;amazing time&lt;/a&gt; coaching some of the best gaming talent from India, Pakistan, and Southeast Asia. We’re very encouraged by the positive feedback we received for the program and are excited to bring it back in 2019.
&lt;/p&gt;
&lt;p&gt;
Applications for the class of 2019 are now open, and we’re happy to announce that &lt;strong&gt;we are expanding the program to developers from select countries* in Asia, Middle East, Africa, and Latin America.&lt;/strong&gt;
&lt;/p&gt;
&lt;iframe width="560" height="315" id="imgFull" src="https://www.youtube.com/embed/tZdD9l4KmbU" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;
Successful participants will be invited to &lt;strong&gt;attend two gaming bootcamps, all-expenses-paid at the Google Asia-Pacific office in Singapore&lt;/strong&gt;, where they will &lt;strong&gt;receive personalized mentorship&lt;/strong&gt; from Google teams and industry experts. Additional benefits include Google hardware, invites to exclusive Google and industry events and &lt;a href="https://events.withgoogle.com/indie-games-accelerator/"&gt;more&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://events.withgoogle.com/indie-games-accelerator/"&gt;Find out more&lt;/a&gt; about the program and apply to be a part of it.
&lt;/p&gt;
&lt;p style="font-size:12px" &gt;
&lt;em&gt;* The competition is open to developers from the following countries: Bangladesh, Brunei, Cambodia, India, Indonesia, Laos, Malaysia, Myanmar, Nepal, Pakistan, Philippines, Singapore, Sri Lanka, Thailand, Vietnam, Egypt, Jordan, Kenya, Lebanon, Nigeria, South Africa, Tunisia, Turkey, Argentina, Bolivia, Brazil, Chile, Colombia, Costa Rica, Ecuador, Guatemala, Mexico, Panama, Paraguay, Peru, Uruguay and Venezuela.&lt;/em&gt;
&lt;/p&gt;

&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=Indiegamesacceleratorlaunch-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;entry.2056663615&amp;entry.646747778=Indiegamesacceleratorlaunch-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=Indiegamesacceleratorlaunch-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=4%E2%98%85+%E2%80%93+Very&amp;entry.2056663615&amp;entry.646747778=Indiegamesacceleratorlaunch-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=5%E2%98%85+%E2%80%93+Extremely&amp;entry.2056663615&amp;entry.646747778=Indiegamesacceleratorlaunch-04/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=k-fygw0SJyg:z5uTWql0_LM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=k-fygw0SJyg:z5uTWql0_LM:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=k-fygw0SJyg:z5uTWql0_LM:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/k-fygw0SJyg" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/5647669118660861307" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/5647669118660861307" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/k-fygw0SJyg/indie-games-accelerator-applications.html" title=" Indie Games Accelerator - Applications open for class of 2019" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-xyWrrNXR5wA/XLEZoAVDmkI/AAAAAAAAIEs/6oAg5qHUnPckdFkWJItgqOAr1Z_L9LS_gCLcBGAs/s72-c/Key%2BVisual%2B-%2Bhashtag.jpg" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/indie-games-accelerator-applications.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-8599951416903023947</id><published>2019-04-15T11:16:00.000-07:00</published><updated>2019-04-15T11:16:47.267-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Q" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Q Permissions" /><category scheme="http://www.blogger.com/atom/ns#" term="Developer Accounts" /><category scheme="http://www.blogger.com/atom/ns#" term="Developer Feedback" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="permissions" /><category scheme="http://www.blogger.com/atom/ns#" term="Policy" /><category scheme="http://www.blogger.com/atom/ns#" term="Policy Enforcement" /><title type="text">Improving the update process with your feedback</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-wXlc2Vrde3M/XLTAkCdNtlI/AAAAAAAAIMM/kRTZRSlWd4E-KEdxAuzrIDNhndHIGdwrwCLcBGAs/s1600/Umbrella.png"&gt;
&lt;img style="display:none" src="https://4.bp.blogspot.com/-wXlc2Vrde3M/XLTAkCdNtlI/AAAAAAAAIMM/kRTZRSlWd4E-KEdxAuzrIDNhndHIGdwrwCLcBGAs/s1600/Umbrella.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Sameer Samat, VP of Product Management, Android &amp; Google Play&lt;/em&gt;&lt;/p&gt;

&lt;a href="https://4.bp.blogspot.com/-wXlc2Vrde3M/XLTAkCdNtlI/AAAAAAAAIMM/kRTZRSlWd4E-KEdxAuzrIDNhndHIGdwrwCLcBGAs/s1600/Umbrella.png" imageanchor="1" &gt;&lt;img id="imgFull" style="width:100%" border="0" src="https://4.bp.blogspot.com/-wXlc2Vrde3M/XLTAkCdNtlI/AAAAAAAAIMM/kRTZRSlWd4E-KEdxAuzrIDNhndHIGdwrwCLcBGAs/s1600/Umbrella.png" data-original-width="1600" data-original-height="477" /&gt;&lt;/a&gt;
&lt;p&gt;
Thank you for all the feedback about updates we’ve been making to Android APIs and Play policies. We’ve heard your requests for improvement as well as some frustration. We want to explain how and why we’re making these changes, and how we are using your feedback to improve the way we roll out these updates and communicate with the developer community.
&lt;/p&gt;
&lt;p&gt;
From the outset, we’ve sought to craft Android as a completely open source operating system. We’ve also worked hard to ensure backwards compatibility and API consistency, out of respect and a desire to make the platform as easy to use as possible. This developer-centric approach and openness have been cornerstones of Android’s philosophy from the beginning. These are not changing.
&lt;/p&gt;
&lt;p&gt;
But as the platform grows and evolves, each decision we make comes with trade-offs. Everyday, billions of people around the world use the apps you’ve built to do incredible things like connect with loved ones, manage finances or communicate with doctors. Users want more control and transparency over how their personal information is being used by applications, and expect Android, as the platform, to do more to provide that control and transparency. This responsibility to users is something we have always taken seriously, and that’s why we are taking a comprehensive look at how our platform and policies reflect that commitment.
&lt;/p&gt;
&lt;h2&gt;Taking a closer look at permissions&lt;/h2&gt;


&lt;p&gt;
Earlier this year, we &lt;a href="https://android-developers.googleblog.com/2019/03/introducing-android-q-beta.html"&gt;introduced&lt;/a&gt; Android Q Beta with dozens of features and improvements that provide users with more transparency and control, further securing their personal data. Along with the system-level changes introduced in Q, we’re also reviewing and refining our &lt;a href="https://play.google.com/about/developer-content-policy/#"&gt;Play Developer policies&lt;/a&gt; to further enhance user privacy. For years, we’ve required developers to disclose the collection and use of personal data so users can understand how their information is being used, and to only use the permissions that are really needed to deliver the features and services of the app. As part of Project Strobe, which we &lt;a href="https://www.blog.google/technology/safety-security/project-strobe/"&gt;announced&lt;/a&gt; last October, we are rolling out specific guidance for each of the Android &lt;a href="https://developer.android.com/guide/topics/permissions/overview#permission-groups"&gt;runtime permissions&lt;/a&gt;, and we are holding apps developed by Google to the same standard.
&lt;/p&gt;
&lt;p&gt;
We started with changes to SMS and Call Log permissions late last year. To better protect sensitive user data available through these permissions, we restricted access to select use cases, such as when an app has been chosen by the user to be their default text message app. We understood that some app features using this data would no longer be allowed -- including features that many users found valuable -- and worked with you on alternatives where possible. As a result, today, the number of apps with access to this sensitive information has decreased by more than 98%. The vast majority of these were able to switch to an alternative or eliminate minor functionality. 
&lt;/p&gt;
&lt;h2&gt;Learning from developer feedback&lt;/h2&gt;


&lt;p&gt;
While these changes are critical to help strengthen privacy protections for our users, we’re sensitive that evolving the platform can lead to substantial work for developers. We have a responsibility to make sure you have the details and resources you need to understand and implement changes, and we know there is room for improvement there. For example, when we began enforcing these new SMS and Call Log policies, many of you expressed frustration about the decision making process. There were a number of common themes that we wanted to share:
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Permission declaration form.&lt;/span&gt;&lt;/strong&gt; Some of you felt that the use case descriptions in our permissions declaration form were unclear and hard to complete correctly.

&lt;li&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Timeliness in review and appeals process.&lt;/span&gt; &lt;/strong&gt;For some of you, it took too long to get answers on whether apps met policy requirements. Others felt that the process for appealing a decision was too long and cumbersome.

&lt;li&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Getting information from a ‘real human’ at Google.&lt;/span&gt;&lt;/strong&gt;  Some of you came away with the impression that our decisions were automated, without human involvement. And others felt that it was hard to reach a person who could help provide details about our policy decisions and about new use cases proposed by developers.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In response, we are improving and clarifying the process, including:
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;More detailed communication.&lt;/span&gt;&lt;/strong&gt; We are revising the emails we send for policy rejections and appeals to better explain with more details, including why a decision was made, how you can modify your app to comply, and how to appeal.

&lt;li&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Evaluations and appeals.&lt;/span&gt;&lt;/strong&gt; We will include appeal instructions in all enforcement emails and the appeal form with details can also be found in our &lt;a href="https://support.google.com/googleplay/android-developer/answer/2477981?hl=en"&gt;Help Center&lt;/a&gt;. We will also be reviewing and improving our appeals process.

&lt;li&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Growing the team&lt;/span&gt;&lt;/strong&gt;. Humans, not bots, already review every sensitive decision but we are improving our communication so responses are more personalized -- and we are expanding our team to help accelerate the appeals process.
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Evaluating developer accounts&lt;/h2&gt;


&lt;p&gt;
We have also heard concerns from some developers whose accounts have been blocked from distributing apps through Google Play. While the vast majority of developers on Android are well-meaning, some accounts are suspended for serious, repeated violation of policies that protect our shared users. Bad-faith developers often try to get around this by opening new accounts or using other developers’ existing accounts to publish unsafe apps. While we strive for openness wherever possible, in order to prevent bad-faith developers from gaming our systems and putting our users at risk in the process, we can’t always share the reasons we’ve concluded that one account is related to another. 
&lt;/p&gt;
&lt;p&gt;
While 99%+ of these suspension decisions are correct, we are also very sensitive to how impactful it can be if your account has been disabled in error. You can immediately &lt;a href="https://support.google.com/googleplay/android-developer/answer/2477981?hl=en"&gt;appeal&lt;/a&gt; any enforcement, and each appeal is carefully reviewed by a person on our team. During the appeals process, we will reinstate your account if we discover that an error has been made.
&lt;/p&gt;
&lt;p&gt;
Separately, we will soon be taking more time (days, not weeks) to review apps by developers that don’t yet have a track record with us. This will allow us to do more thorough checks before approving apps to go live in the store and will help us make even fewer inaccurate decisions on developer accounts. 
&lt;/p&gt;
&lt;p&gt;
Thank you for your ongoing partnership and for continuing to make Android an incredibly helpful platform for billions of people around the world.
&lt;/p&gt;

&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=Playtrustpolicy-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;entry.2056663615&amp;entry.646747778=Playtrustpolicy-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=Playtrustpolicy-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=4%E2%98%85+%E2%80%93+Very&amp;entry.2056663615&amp;entry.646747778=Playtrustpolicy-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=5%E2%98%85+%E2%80%93+Extremely&amp;entry.2056663615&amp;entry.646747778=Playtrustpolicy-03/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=HhkNfIT4vWc:CQsMysg-yts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=HhkNfIT4vWc:CQsMysg-yts:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=HhkNfIT4vWc:CQsMysg-yts:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/HhkNfIT4vWc" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8599951416903023947" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8599951416903023947" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/HhkNfIT4vWc/improving-update-process-with-your.html" title="Improving the update process with your feedback" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-wXlc2Vrde3M/XLTAkCdNtlI/AAAAAAAAIMM/kRTZRSlWd4E-KEdxAuzrIDNhndHIGdwrwCLcBGAs/s72-c/Umbrella.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/improving-update-process-with-your.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-1153884751784446967</id><published>2019-04-11T10:00:00.000-07:00</published><updated>2019-04-11T10:00:05.137-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="monetization" /><category scheme="http://www.blogger.com/atom/ns#" term="subscriptions" /><title type="text">Optimize your subscriptions with new insights in the Play Console</title><content type="html">&lt;meta name="twitter:image" content="https://3.bp.blogspot.com/-MA7u9v0MrKo/XKfd7OyjuvI/AAAAAAAAHZU/sxbQ2i4itzA8nYMEV_iyB5np-DUoalAygCLcBGAs/s1600/image2.png"&gt;
&lt;img style="display:none" src="https://3.bp.blogspot.com/-MA7u9v0MrKo/XKfd7OyjuvI/AAAAAAAAHZU/sxbQ2i4itzA8nYMEV_iyB5np-DUoalAygCLcBGAs/s1600/image2.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Daniel Schramm, Product Manager, Google Play&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Since launching on Google Play nearly 7 years ago, subscriptions have proven to be an essential element in creating sustainable mobile app businesses; 89 of the top 100 highest grossing apps on Google Play in the US now provide subscription products. As the market matures, it is becoming increasingly important for subscription developers to optimize both subscriber conversion and retention in order to maintain growth. To help you do that, we're rolling out new insights available directly in the Play Console.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Subscription retention report&lt;/strong&gt;
&lt;/p&gt;
&lt;a href="https://3.bp.blogspot.com/-MA7u9v0MrKo/XKfd7OyjuvI/AAAAAAAAHZU/sxbQ2i4itzA8nYMEV_iyB5np-DUoalAygCLcBGAs/s1600/image2.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://3.bp.blogspot.com/-MA7u9v0MrKo/XKfd7OyjuvI/AAAAAAAAHZU/sxbQ2i4itzA8nYMEV_iyB5np-DUoalAygCLcBGAs/s1600/image2.png" data-original-width="1600" data-original-height="1222" /&gt;&lt;/a&gt;

&lt;p id="imgCaption"&gt;Example subscription retention report data in the Play Console. Source: Google Internal Data.&lt;/p&gt;

&lt;p&gt;
The recently updated &lt;strong&gt;subscription retention report&lt;/strong&gt; shows how well you are retaining subscribers, along with how well subscribers convert from free trial, introductory price, and first to second payment.
&lt;/p&gt;
&lt;p&gt;
You can configure two cohorts based on SKU, country, and subscription start date. This is particularly useful for evaluating the success of A/B tests; for example, to determine if changing the duration of a free trial has an impact on free trial conversion.
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-eiUIgfwTokc/XKfeHSfp05I/AAAAAAAAHZY/ljdhpi_e11MLXr9g72Vj0b1vLIWPfhrcACLcBGAs/s1600/image4.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-eiUIgfwTokc/XKfeHSfp05I/AAAAAAAAHZY/ljdhpi_e11MLXr9g72Vj0b1vLIWPfhrcACLcBGAs/s1600/image4.png" data-original-width="1600" data-original-height="871" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;Example free trial conversion data in the Play Console. Source: Google Internal Data.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Cancellation survey results&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Retaining your existing subscribers is just as important as acquiring new subscribers, so we have updated the &lt;strong&gt;subscription cancellations report&lt;/strong&gt; to give more insight into voluntary and involuntary cancellations.
&lt;/p&gt;
&lt;p&gt;
The launch of the subscriptions center last year introduced a cancellation survey allowing users to give developers feedback as to why they were cancelling, with results available through the Google Play Developer API. To make these results easier to access and monitor, we now surface daily aggregates directly within the Play Console, along with the ability to download written responses in a CSV.
&lt;/p&gt;
&lt;a href="https://3.bp.blogspot.com/-x2AARSnhW_A/XKfeR-lylYI/AAAAAAAAHZc/v2i811AXuFwS6wKQI_nufdAPpT1sH3TbACLcBGAs/s1600/image1.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://3.bp.blogspot.com/-x2AARSnhW_A/XKfeR-lylYI/AAAAAAAAHZc/v2i811AXuFwS6wKQI_nufdAPpT1sH3TbACLcBGAs/s1600/image1.png" data-original-width="1600" data-original-height="1439" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;Example cancellation survey responses in the Play Console. Source: Google Internal Data.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Recover more users&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Involuntary cancellations, which occur when a user's form of payment fails, account for over a third of all cancellations. The new recovery performance cards in the cancellation report helps you understand how effectively you are recovering users with grace period and account hold, and the day the subscriptions were recovered to help you evaluate the effectiveness of recovery messaging.
&lt;/p&gt;
&lt;a href="https://3.bp.blogspot.com/-LOKlNHILsKM/XKfeacC8PVI/AAAAAAAAHZk/AZZx9KGgAeEebcORLEIQqpXgE_4q8Go6wCLcBGAs/s1600/image5.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://3.bp.blogspot.com/-LOKlNHILsKM/XKfeacC8PVI/AAAAAAAAHZk/AZZx9KGgAeEebcORLEIQqpXgE_4q8Go6wCLcBGAs/s1600/image5.png" data-original-width="1600" data-original-height="873" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;Example account hold performance recovery card in the Play Console. Source: Google Internal Data.&lt;/p&gt;
&lt;p&gt;
Make sure you've set up grace periods and account hold for your apps! We've seen that  developers who use both grace period and account hold see more than a &lt;strong&gt;3x increase in decline recovery rate&lt;/strong&gt; from 10% to 33%. Discover more information on &lt;a href="https://www.youtube.com/watch?v=OBhipUSngkY"&gt;grace period&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=KPqsgQhP4bU"&gt;account hold&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
You can find the subscription retention and cancellation reports linked from the bottom of the &lt;em&gt;Subscriptions&lt;/em&gt; page, in the &lt;em&gt;Financial reports&lt;/em&gt; section of the Play Console. If you don't have access to financial reporting, ask your developer account owner for permission to &lt;a href="https://support.google.com/googleplay/android-developer/answer/2528691#view_financial"&gt;view financial data&lt;/a&gt;.
&lt;/p&gt;
&lt;a href="https://3.bp.blogspot.com/-Peqe54qYNVU/XKfefRQN0XI/AAAAAAAAHZo/jRmhvepvzC03UxfMWiO-AfB2I39ICgLOwCLcBGAs/s1600/image3.png" imageanchor="1" &gt;&lt;img id="imgFull"  border="0" src="https://3.bp.blogspot.com/-Peqe54qYNVU/XKfefRQN0XI/AAAAAAAAHZo/jRmhvepvzC03UxfMWiO-AfB2I39ICgLOwCLcBGAs/s1600/image3.png" data-original-width="1600" data-original-height="652" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;Example account hold performance recovery card in the Play Console. Source: Google Internal Data.&lt;/p&gt;
&lt;p&gt;
We hope this new reporting gives you new insights to optimize your subscription business, and we look forward to sharing more with you at Google I/O in May.
&lt;/p&gt;

&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=subsinsightsreports-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;entry.2056663615&amp;entry.646747778=subsinsightsreports-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=subsinsightsreports-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=4%E2%98%85+%E2%80%93+Very&amp;entry.2056663615&amp;entry.646747778=subsinsightsreports-04/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=5%E2%98%85+%E2%80%93+Extremely&amp;entry.2056663615&amp;entry.646747778=subsinsightsreports-04/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=CYE7yqrADnE:CvztTHzYaIU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=CYE7yqrADnE:CvztTHzYaIU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=CYE7yqrADnE:CvztTHzYaIU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/CYE7yqrADnE" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1153884751784446967" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1153884751784446967" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/CYE7yqrADnE/optimize-your-subscriptions-with-new.html" title="Optimize your subscriptions with new insights in the Play Console" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-MA7u9v0MrKo/XKfd7OyjuvI/AAAAAAAAHZU/sxbQ2i4itzA8nYMEV_iyB5np-DUoalAygCLcBGAs/s72-c/image2.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/optimize-your-subscriptions-with-new.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-437099706651225738</id><published>2019-04-09T11:33:00.000-07:00</published><updated>2019-04-10T07:22:01.847-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App" /><category scheme="http://www.blogger.com/atom/ns#" term="App Bundles" /><category scheme="http://www.blogger.com/atom/ns#" term="Deprecation" /><category scheme="http://www.blogger.com/atom/ns#" term="dynamic delivery" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Instant" /><category scheme="http://www.blogger.com/atom/ns#" term="instant experience" /><category scheme="http://www.blogger.com/atom/ns#" term="Plugin" /><title type="text">A simpler experience for instant apps</title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-kNHdFWHizk8/XKvDaH2JypI/AAAAAAAAH58/RXaoKTe4DWEAYu1ggFt-w6_AiFZ9wLb5wCLcBGAs/s1600/image1.png"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-kNHdFWHizk8/XKvDaH2JypI/AAAAAAAAH58/RXaoKTe4DWEAYu1ggFt-w6_AiFZ9wLb5wCLcBGAs/s1600/image1.png"&gt;
&lt;style&gt;
table, td{
   border: .5px solid black;
&lt;/style&gt;

&lt;p&gt;&lt;em&gt;Posted by Miguel Montemayor and Diana García Ríos&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
As of Android Gradle plugin 3.4.0 (included in Android Studio 3.4), we are starting the deprecation process of the feature plugin (&lt;code&gt;com.android.feature&lt;/code&gt;) and instant app plugin (&lt;code&gt;com.android.instantapp&lt;/code&gt;) as a way to build your instant app. When building your app, you will receive a warning flagging &lt;code&gt;com.android.feature &lt;/code&gt;as deprecated.&lt;strong&gt; If you have an existing instant app built with the feature plugin, &lt;a href="https://developer.android.com/topic/google-play-instant/feature-module-migration"&gt;migrate your existing app to an instant-enabled app bundle&lt;/a&gt; as soon as possible.&lt;/strong&gt;
&lt;/p&gt;
&lt;h2&gt;What is changing?&lt;/h2&gt;


&lt;p&gt;
Last year, we introduced &lt;a href="https://developer.android.com/platform/technology/app-bundle/"&gt;Android App Bundles&lt;/a&gt;—a new way to build and publish your Android apps. App bundles simplify delivering optimized APKs, including instant delivery, by unifying uploads into a single artifact. Google Play handles distribution by serving the correct APKs to your instant and installed app users—this is called &lt;a href="https://developer.android.com/studio/projects/dynamic-delivery"&gt;Dynamic Delivery&lt;/a&gt;. To learn more about app bundles, visit the &lt;a href="https://developer.android.com/guide/app-bundle/"&gt;documentation site&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://developer.android.com/studio/projects/dynamic-delivery"&gt;Dynamic Delivery&lt;/a&gt; is based on the idea of shipping dynamic features (&lt;code&gt;com.android.dynamic-feature&lt;/code&gt;) to app users when they need them and only if they need them. There are currently three delivery types, based on the different values you will give the &lt;code&gt;dist:module&lt;/code&gt; tag attributes on the dynamic feature module’s manifest file:
&lt;/p&gt;

&lt;div&gt;
&lt;pre class="prettyprint"&gt;    &amp;lt;dist:module
       dist:instant="..."
       dist:onDemand="..."
       ...
    &amp;lt;/dist:module&gt;
&lt;/div&gt;
&lt;table&gt;&lt;colgroup&gt;&lt;col width="30%"&gt;&lt;/col&gt;&lt;col width="30%"&gt;&lt;/col&gt;&lt;col width="40%"&gt;&lt;/col&gt;&lt;/colgroup&gt;&lt;tbody&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;/pre&gt;

   &lt;/td&gt;
   &lt;td bgcolor="#F0F0F0"&gt;&lt;strong&gt;&lt;code&gt;dist:instant="false"&lt;/code&gt;&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td bgcolor="#F0F0F0"&gt;&lt;strong&gt;&lt;code&gt;dist:instant="true"&lt;/code&gt;&lt;/strong&gt;
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td bgcolor="#F0F0F0"&gt;&lt;strong&gt;&lt;code&gt;dist:onDemand="false"&lt;/code&gt;&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;Dynamic feature delivered at install time
   &lt;/td&gt;
   &lt;td&gt;Dynamic feature delivered instantly and at install time
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td bgcolor="#F0F0F0"&gt;&lt;strong&gt;&lt;code&gt;dist:onDemand="true"&lt;/code&gt;&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;Dynamic feature delivered on demand (&lt;a href="https://support.google.com/googleplay/android-developer/answer/9006925#beta"&gt;beta&lt;/a&gt;)
   &lt;/td&gt;
   &lt;td&gt;N/A
   &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;


&lt;p&gt;
By migrating your instant app to an instant-enabled app bundle with dynamic features, you will be ready to leverage the full power of this new paradigm and you will be able to simplify your app’s modular design.
&lt;/p&gt;
&lt;h2&gt;The migration&lt;/h2&gt;


&lt;p&gt;
Previously, instant apps required creating a feature module that acted as the base module for your app. This base feature module contained the shared code and resources for both your instant and installed application. The rest of your codebase was comprised of: 
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;multiple non-base feature modules, which contained the instant app entry points, 

&lt;li&gt;an application module, which contained the code and activities required only for your main installed application, and

&lt;li&gt;an instant app module, which represented the instant app and mapped its dependencies.
&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://2.bp.blogspot.com/-kNHdFWHizk8/XKvDaH2JypI/AAAAAAAAH58/RXaoKTe4DWEAYu1ggFt-w6_AiFZ9wLb5wCLcBGAs/s1600/image1.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-kNHdFWHizk8/XKvDaH2JypI/AAAAAAAAH58/RXaoKTe4DWEAYu1ggFt-w6_AiFZ9wLb5wCLcBGAs/s1600/image1.png" data-original-width="780" data-original-height="680" /&gt;&lt;/a&gt;
&lt;p&gt;
With the new app bundle implementation, your base feature module takes the role as your app module (&lt;code&gt;com.android.application&lt;/code&gt;), hosting the code and resources common to all features (instant and installed). You organize additional, modular features as one of three types of dynamic feature modules, based on when you want to deliver them to the user. The instant app module disappears, since the &lt;code&gt;dist:instant&lt;/code&gt; attributes in the manifest are enough to identify which features will be included as part of the instant experience.
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-gfgXnwufXBs/XKv2Gsy34bI/AAAAAAAAH6Q/65fgWPNpNIQ3ug7oPG-1i1tZHw98NzYAgCLcBGAs/s1600/App%2Bbundle%2Bdependencies.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-gfgXnwufXBs/XKv2Gsy34bI/AAAAAAAAH6Q/65fgWPNpNIQ3ug7oPG-1i1tZHw98NzYAgCLcBGAs/s1600/App%2Bbundle%2Bdependencies.png" data-original-width="1000" data-original-height="480" /&gt;&lt;/a&gt;
&lt;p&gt;
If you don’t have an instant experience added to your app and you’d like to create one, use Android Studio 3.3+ to &lt;a href="https://developer.android.com/topic/google-play-instant/getting-started/instant-enabled-app-bundle"&gt;create an instant-enabled app bundle&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=O0eJKYSgKEU:epmqTOgLXFs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=O0eJKYSgKEU:epmqTOgLXFs:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=O0eJKYSgKEU:epmqTOgLXFs:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/O0eJKYSgKEU" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/437099706651225738" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/437099706651225738" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/O0eJKYSgKEU/google-play-instant-feature-plugin.html" title="A simpler experience for instant apps" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-kNHdFWHizk8/XKvDaH2JypI/AAAAAAAAH58/RXaoKTe4DWEAYu1ggFt-w6_AiFZ9wLb5wCLcBGAs/s72-c/image1.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/google-play-instant-feature-plugin.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-1808576435858036215</id><published>2019-04-05T10:00:00.000-07:00</published><updated>2019-04-08T14:29:11.392-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="language id" /><category scheme="http://www.blogger.com/atom/ns#" term="language identification" /><category scheme="http://www.blogger.com/atom/ns#" term="ML" /><category scheme="http://www.blogger.com/atom/ns#" term="ML Kit" /><category scheme="http://www.blogger.com/atom/ns#" term="NLP" /><category scheme="http://www.blogger.com/atom/ns#" term="smart reply" /><title type="text">ML Kit expands into NLP with Language Identification and Smart Reply</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-AAjLSlCJ4Vw/XKKWu_F02NI/AAAAAAAADgI/SGYNcN4i5Y8dXw3Xg7o75sFvdDYS57BIgCLcBGAs/s1600/pasted%2Bimage%2B0%2B%25281%2529.png"&gt;
&lt;img style="display:none" src="https://1.bp.blogspot.com/-AAjLSlCJ4Vw/XKKWu_F02NI/AAAAAAAADgI/SGYNcN4i5Y8dXw3Xg7o75sFvdDYS57BIgCLcBGAs/s1600/pasted%2Bimage%2B0%2B%25281%2529.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Christiaan Prins and Max Gubin&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;
Today we are announcing the release of two new features to ML Kit: &lt;a href="https://firebase.google.com/docs/ml-kit/identify-languages"&gt;Language Identification&lt;/a&gt; and &lt;a href="https://firebase.google.com/docs/ml-kit/generate-smart-replies"&gt;Smart Reply&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
You might notice that both of these features are different from our existing APIs that were all focused on image/video processing. Our goal with ML Kit is to offer powerful but simple-to-use APIs to leverage the power of ML, independent of the domain.  As such, we are excited to expand ML Kit with solutions for Natural Language Processing (NLP)!
&lt;/p&gt;
&lt;p&gt;
NLP is a category of ML that deals with analyzing and generating text, speech, and other kinds of natural language data. We're excited to start out with two APIs: one that helps you identify the language of text, and one that generates reply suggestions in chat applications. Both of these features work fully on-device and are available on the latest version of the ML Kit SDK, on iOS (9.0 and higher) and Android (4.1 and higher).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Generate reply suggestions based on previous messages&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
A new feature popping up in messaging apps is to provide the user with a selection of suggested responses, either as actions on a notification or inside the app itself. This can really help a user to quickly respond when they are busy or a handy way to initiate a longer message.
&lt;/p&gt;
&lt;p&gt;
With the new Smart Reply API you can now quickly achieve the same in your own apps. The API provides suggestions based on the last 10 messages in a conversation, although it still works if only one previous message is available. It is a stateless API that fully runs on-device, so we don't keep message history in memory nor send it to a server.
&lt;/p&gt;
&lt;a href="https://1.bp.blogspot.com/-AAjLSlCJ4Vw/XKKWu_F02NI/AAAAAAAADgI/SGYNcN4i5Y8dXw3Xg7o75sFvdDYS57BIgCLcBGAs/s1600/pasted%2Bimage%2B0%2B%25281%2529.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://1.bp.blogspot.com/-AAjLSlCJ4Vw/XKKWu_F02NI/AAAAAAAADgI/SGYNcN4i5Y8dXw3Xg7o75sFvdDYS57BIgCLcBGAs/s1600/pasted%2Bimage%2B0%2B%25281%2529.png" data-original-width="1080" data-original-height="619" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;textPlus app providing response suggestions using Smart Reply&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
We have worked closely with partners like &lt;a href="https://textplus.com/"&gt;textPlus&lt;/a&gt; to ensure Smart Reply is ready for prime time and they have now implemented in-app response suggestions with the latest version of their app (screenshot above).
&lt;/p&gt;
&lt;p&gt;
Adding Smart Reply to your own app is done with a simple function call (using Kotlin in this example):
&lt;/p&gt;



&lt;pre class="prettyprint"&gt;val smartReply = FirebaseNaturalLanguage.getInstance().smartReply
smartReply.suggestReplies(conversation)
        .addOnSuccessListener { result -&gt;
            if (result.status == SmartReplySuggestionResult.STATUS_NOT_SUPPORTED_LANGUAGE) {
                // The conversation's language isn't supported, so the
                // the result doesn't contain any suggestions.
            } else if (result.status == SmartReplySuggestionResult.STATUS_SUCCESS) {
                // Task completed successfully
                // ...
            }
        }
        .addOnFailureListener {
            // Task failed with an exception
            // ...
        }&lt;/pre&gt;


&lt;p&gt;
After you initialize a Smart Reply instance, call &lt;code&gt;suggestReplies&lt;/code&gt; with a list of recent messages. The callback provides the &lt;code&gt;result&lt;/code&gt; which contains a list of suggestions. 
&lt;/p&gt;
&lt;p&gt;
For details on how to use the Smart Reply API, check out &lt;a href="https://firebase.google.com/docs/ml-kit/generate-smart-replies"&gt;the documentation&lt;/a&gt;.
&lt;/p&gt;

&lt;div style="background-color:#F5F5F5; padding:10px; border:1px solid #A9A9A9"&gt;
&lt;p&gt;
&lt;strong&gt;Tell me more ...&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Although as a developer, you can just pick up this new API and easily get it integrated in your app, it may be interesting to reveal a bit on how it works under the hood. At the core of Smart Reply is a machine-learned model that is executed using &lt;a href="https://www.tensorflow.org/lite"&gt;TensorFlow Lite &lt;/a&gt;and has a state-of-the-art modern architecture based on SentencePiece text encoding[&lt;a href="https://arxiv.org/abs/1808.06226"&gt;1&lt;/a&gt;] and Transformer[&lt;a href="https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html"&gt;2&lt;/a&gt;].
&lt;/p&gt;
&lt;p&gt;
However, as we realized when we started development of the API, the core suggestion model is not all that’s needed to provide a solution that developers can use in their apps. For example, we added a model to detect sensitive topics, so that we avoid making suggestions in response to profanity or in cases of personal tragedy/hardship. Also, we included language identification, to ensure we do not provide suggestions for languages the core model is not trained on. The Smart Reply feature is launching with English support first.
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;Identify the language of a piece of text&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The language of a given text string is a subtle but helpful piece of information. A lot of apps have functionality with a dependency on the language: you can think of features like spell checking, text translation or Smart Reply. Rather than asking a user to specify the language they use, you can use our new Language Identification API.
&lt;/p&gt;
&lt;p&gt;
ML Kit recognizes text in &lt;a href="https://firebase.google.com/docs/ml-kit/langid-support"&gt;110 different languages&lt;/a&gt; and typically only requires a few words to make an accurate determination. It is fast as well, typically providing a response within 1 to 2 ms across iOS and Android phones.
&lt;/p&gt;
&lt;p&gt;
Similar to the Smart Reply API, you can identify the language with a function call (using Kotlin in this example):
&lt;/p&gt;



&lt;pre class="prettyprint"&gt;val languageIdentification =
    FirebaseNaturalLanguage.getInstance().languageIdentification
languageIdentification
    .identifyLanguage("¿Cómo estás?")
    .addOnSuccessListener { identifiedLanguage -&gt;
        Log.i(TAG, "Identified language: $identifiedLanguage")
    }
    .addOnFailureListener { e -&gt;
        Log.e(TAG, "Language identification error", e)
    }&lt;/pre&gt;


&lt;p&gt;
The  &lt;code&gt;identifyLanguage &lt;/code&gt;functions takes a piece of a text and its callback provides a &lt;a href="https://en.wikipedia.org/wiki/IETF_language_tag"&gt;BCP-47 language code&lt;/a&gt;. If no language can be confidently recognized, ML Kit returns a code of &lt;code&gt;und&lt;/code&gt; for undetermined. The Language Identification API can also provide a list of possible languages and their confidence values.
&lt;/p&gt;
&lt;p&gt;
For details on how to use the Language Identification API, check out &lt;a href="https://firebase.google.com/docs/ml-kit/identify-languages"&gt;the documentation&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Get started today&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We're really excited to expand ML Kit to include Natural Language APIs. Give the two new NLP APIs a spin today and let us know what you think! You can always reach us in our &lt;a href="https://groups.google.com/forum/#!forum/firebase-talk"&gt;Firebase Talk Google Group&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
As ML Kit grows we look forward to adding more APIs and categories that enables you to provide smarter experiences for your users. With that, please keep an eye out for some exciting ML Kit announcements at &lt;a href="https://events.google.com/io/"&gt;Google I/O&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=18nUqY9Da7Q:OMiLPTztjnU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=18nUqY9Da7Q:OMiLPTztjnU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=18nUqY9Da7Q:OMiLPTztjnU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/18nUqY9Da7Q" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1808576435858036215" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1808576435858036215" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/18nUqY9Da7Q/ml-kit-expands-into-nlp-with-language.html" title="ML Kit expands into NLP with Language Identification and Smart Reply" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-AAjLSlCJ4Vw/XKKWu_F02NI/AAAAAAAADgI/SGYNcN4i5Y8dXw3Xg7o75sFvdDYS57BIgCLcBGAs/s72-c/pasted%2Bimage%2B0%2B%25281%2529.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/ml-kit-expands-into-nlp-with-language.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-8869489024707101237</id><published>2019-04-03T10:05:00.000-07:00</published><updated>2019-04-03T10:46:31.113-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="androidq" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Privacy" /><category scheme="http://www.blogger.com/atom/ns#" term="Storage" /><title type="text">Android Q Beta 2 update</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-lUCn_rFyM8U/XKTWZJrKAqI/AAAAAAAAHYs/GxnQH49NGeMOAfMux3AiFDZPpPEIDNvggCLcBGAs/s1600/image1a.png"&gt;

&lt;em&gt;Posted by Dave Burke, VP of Engineering&lt;/em&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-lUCn_rFyM8U/XKTWZJrKAqI/AAAAAAAAHYs/GxnQH49NGeMOAfMux3AiFDZPpPEIDNvggCLcBGAs/s1600/image1a.png" imageanchor="1" &gt;&lt;img id='floatRight' border="0" src="https://4.bp.blogspot.com/-lUCn_rFyM8U/XKTWZJrKAqI/AAAAAAAAHYs/GxnQH49NGeMOAfMux3AiFDZPpPEIDNvggCLcBGAs/s1600/image1a.png" data-original-width="1197" data-original-height="1217" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
A few weeks ago we &lt;a href="https://developer.android.com/preview"&gt;Introduced Android Q Beta&lt;/a&gt;, a first look at the next version of Android. Along with new privacy features for users, Android Q adds new capabilities for developers - like enhancements for foldables, new APIs for connectivity, new media codecs and camera capabilities, NNAPI extensions, Vulkan 1.1 graphics, and more. 
&lt;/p&gt;
&lt;p&gt;
Android's program of early, open previews is driven by our core philosophy of openness, and collaboration with our community. Your feedback since Beta 1 proves yet again the value of that openness - it's been loud, clear, and incredibly valuable. You've sent us &lt;a href="https://issuetracker.google.com/hotlists/1501303"&gt;thousands of bug reports&lt;/a&gt;, giving us insights and directional feedback, changing our plans in ways that make the platform better for users and developers. We're taking your feedback to heart, so please stay tuned. We're fortunate to have such a passionate community helping to guide Android Q toward the final product later this year.
&lt;/p&gt;
&lt;p&gt;
Today we're releasing Android Q Beta 2 and an updated SDK for developers. It includes the latest bug fixes, optimizations, and API updates for Android Q, along with the April 2019 security patches. You'll also notice isolated storage becoming more prominent as we look for your wider testing and &lt;a href="http://developer.android.com/preview/bug"&gt;feedback&lt;/a&gt; to help us refine that feature.
&lt;/p&gt;
&lt;p&gt;
We're still in early Beta with Android Q so expect rough edges! Before you install, check out the &lt;a href="https://developer.android.com/preview/release-notes"&gt;Known Issues&lt;/a&gt;. In particular, expect the usual transitional issues with apps that we typically see during early Betas as developers get their app updates ready. For example, you might see issues with apps that access photos, videos, media, or other files stored on your device, such as when browsing or sharing in social media apps. 
&lt;/p&gt;
&lt;p&gt;
You can get Beta 2 today by &lt;a href="https://www.google.com/android/beta"&gt;enrolling any Pixel device here&lt;/a&gt;. If you're already enrolled, watch for the Beta 2 update coming soon. Stay tuned for more at &lt;a href="https://events.google.com/io/"&gt;Google I/O in May&lt;/a&gt;. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;What's new in Beta 2?&lt;/strong&gt;&lt;/h2&gt;


&lt;h3&gt;&lt;strong&gt;Privacy features for testing and feedback&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
As we shared at Beta 1, we're making significant &lt;a href="https://developer.android.com/preview/privacy"&gt;privacy investments in Android Q&lt;/a&gt; in addition to the &lt;a href="https://android-developers.googleblog.com/2018/12/android-pie-la-mode-security-privacy.html"&gt;work we've done in previous releases&lt;/a&gt;. Our goals are improving transparency, giving users more control, and further securing personal data across platform and apps. We know that to reach those goals, we need to partner with you, our app developers. We realize that supporting these features is an investment for you too, so we'll do everything we can to minimize the impact on your apps. 
&lt;/p&gt;
&lt;p&gt;
For features like &lt;a href="https://developer.android.com/preview/privacy/scoped-storage"&gt;Scoped Storage,&lt;/a&gt; we're sharing our plans as early as possible to give you more time to test and &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1245332"&gt;give us your input&lt;/a&gt;.  To generate broader feedback, we've also enabled Scoped Storage for new app installs in Beta 2, so you can more easily see what is affected. 
&lt;/p&gt;
&lt;p&gt;
With &lt;a href="https://developer.android.com/preview/privacy/scoped-storage"&gt;Scoped Storage&lt;/a&gt;, apps can use their private sandbox without permission, but they need new permissions to access shared collections for photos, videos and audio. Apps using files in shared collections -- for example, photo and video galleries and pickers, media browsing, and document storage -- may behave differently under Scoped Storage. 
&lt;/p&gt;
&lt;p&gt;We recommend getting started with Scoped Storage soon  -- the &lt;a href="https://developer.android.com/preview/privacy/scoped-storage"&gt;developer guide&lt;/a&gt; has details on how to handle key use-cases. For testing, make sure to enable Scoped Storage for your app using the &lt;a href="https://developer.android.com/preview/privacy/scoped-storage#toggle-behavior-change"&gt;adb command&lt;/a&gt;. If you discover that your app has a use-case that's not supported by Scoped Storage, please &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdhhKVRKp1a7lj5XsQJ6rN9HyJ8d9WGPcdGwmTibWfhPUmj_g/viewform?vc=0&amp;c=0&amp;w=1&amp;usp=mail_form_link"&gt;let us know by taking this short survey&lt;/a&gt;. We appreciate the great feedback you've given us already, it's a big help as we move forward with the development of this feature.&lt;/p&gt;


&lt;h3&gt;&lt;strong&gt;Bubbles: a new way to multitask&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
In Android Q we're adding platform support for &lt;strong&gt;bubbles&lt;/strong&gt;, a new way for users to multitask and re-engage with your apps. Various apps have already built similar interactions from the ground up, and we're excited to bring the best from those into the platform, while helping to make interactions consistent, safeguard user privacy, reduce development time, and drive innovation.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://1.bp.blogspot.com/-N0zZJgMmyUM/XKTWm-4x1VI/AAAAAAAAHYw/a80nIkJnt14ynTCajktykNoI_nz41XXRQCLcBGAs/s1600/image2a.png" imageanchor="1" &gt;&lt;img id='imgHalf' border="0" src="https://1.bp.blogspot.com/-N0zZJgMmyUM/XKTWm-4x1VI/AAAAAAAAHYw/a80nIkJnt14ynTCajktykNoI_nz41XXRQCLcBGAs/s1600/image2a.png" data-original-width="800" data-original-height="1600" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p id='imgCaption'&gt;Bubbles will let users multitask as they move between activities.&lt;/p&gt;
&lt;p&gt;
Bubbles help users prioritize information and take action deep within another app, while maintaining their current context. They also let users carry an app's functionality around with them as they move between activities on their device.
&lt;/p&gt;
&lt;p&gt;
Bubbles are great for messaging because they let users keep important conversations within easy reach. They also provide a convenient view over ongoing tasks and updates, like phone calls or arrival times.  They can provide quick access to portable UI like notes or translations, and can be visual reminders of tasks too.  
&lt;/p&gt;
&lt;p&gt;
We've built bubbles on top of Android's notification system to provide a familiar and easy to use API for developers. To send a bubble through a notification you need to add a &lt;a href="https://developer.android.com/reference/android/app/Notification.BubbleMetadata"&gt;BubbleMetadata&lt;/a&gt; by calling &lt;a href="https://developer.android.com/reference/android/app/Notification.Builder#setBubbleMetadata(android.app.Notification.BubbleMetadata)"&gt;setBubbleMetadata&lt;/a&gt;. Within the metadata you can provide the Activity to display as content within the bubble, along with an &lt;a href="https://developer.android.com/reference/android/graphics/drawable/Icon"&gt;icon&lt;/a&gt; (disabled in beta 2) and associated &lt;a href="https://developer.android.com/reference/android/app/Person"&gt;person&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
We're just getting started with bubbles, but please give them a try and &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1226573"&gt;let us know what you think&lt;/a&gt;. You can find a &lt;a href="http://github.com/googlesamples/android-Bubbles"&gt;sample implementation here&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Foldables emulator&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
As the ecosystem moves quickly toward foldable devices, new use-cases are opening up for your apps to take advantage of these new screens. With Beta 2, you can build for foldable devices through Android Q enhanced platform support, combined with a new foldable device emulator, available as an Android Virtual device in Android Studio 3.5 available in the canary release channel. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://2.bp.blogspot.com/-DZx0iTv5254/XKTW4EczNeI/AAAAAAAAHY8/hU5dHRaCgF02Loxvuyi2VGt1-MFftnLIwCLcBGAs/s1600/image3.gif" imageanchor="1" &gt;&lt;img id='imgFull' style='width:70%' border="0" src="https://2.bp.blogspot.com/-DZx0iTv5254/XKTW4EczNeI/AAAAAAAAHY8/hU5dHRaCgF02Loxvuyi2VGt1-MFftnLIwCLcBGAs/s1600/image3.gif" data-original-width="1264" data-original-height="1472" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p id='imgCaption'&gt;7.3" Foldable AVD switches between the folded and unfolded states&lt;/p&gt;
&lt;p&gt;
On the platform side, we've made a number of improvements in &lt;a href="https://developer.android.com/reference/android/app/Activity.html#onResume()"&gt;onResume&lt;/a&gt; and &lt;a href="https://developer.android.com/reference/android/app/Activity.html#onPause()"&gt;onPause&lt;/a&gt; to support multi-resume and notify your app when it has focus. We've also changed how the &lt;a href="https://developer.android.com/guide/topics/ui/multi-window#resizeableActivity"&gt;resizeableActivity&lt;/a&gt; manifest attribute works, to help you manage how your app is displayed on foldable and large screens. You can read more in the foldables developer guide. 
&lt;/p&gt;
&lt;p&gt;
To set up a runtime environment for your app, you can now configure a foldable emulator as a virtual device (AVD) in Android Studio. The foldable AVD is a reference device that lets you test with standard hardware configurations, behaviors, and states, as will be used by our device manufacturer partners. To ensure compatibility, the AVD meets CTS/GTS requirements and models CDD compliance. It supports &lt;a href="https://developer.android.com/guide/topics/resources/runtime-changes"&gt;runtime configuration change&lt;/a&gt;, multi-resume and the new &lt;a href="https://developer.android.com/guide/topics/ui/multi-window#resizeableActivity"&gt;resizeableActivity&lt;/a&gt; behaviors. 
&lt;/p&gt;
&lt;p&gt;
Use the canary release of Android Studio 3.5 to create a foldable virtual device to support either of two hardware configurations 7.3" (4.6" folded) and 8" (6.6" folded) with Beta 2. In each configuration, the emulator gives you on-screen controls to trigger fold/unfold, change orientation, and quick actions. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://1.bp.blogspot.com/-L2oEk2HCHls/XKTXCQ2P0RI/AAAAAAAAHZA/BPlcZVxXyQQTs2G28_mJFMIAr4UmrBo_wCLcBGAs/s1600/image4.png" imageanchor="1" &gt;&lt;img id='imgFull' border="0" src="https://1.bp.blogspot.com/-L2oEk2HCHls/XKTXCQ2P0RI/AAAAAAAAHZA/BPlcZVxXyQQTs2G28_mJFMIAr4UmrBo_wCLcBGAs/s1600/image4.png" data-original-width="1600" data-original-height="1027" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p id='imgCaption'&gt;Android Studio - AVD Manager: Foldable Device Setup&lt;/p&gt;
&lt;p&gt;
Try your app on the foldable emulator today by downloading the &lt;a href="https://developer.android.com/studio/preview"&gt;canary release of Android Studio 3.5&lt;/a&gt;  and setting up a foldable AVD that uses the Android Q Beta 2 system image. 
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Improved sharesheet &lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
Following on the initial Sharing Shortcuts APIs in Beta 1, you can now offer a preview of the content being shared by providing an &lt;a href="https://developer.android.com/reference/android/content/Intent.html#EXTRA_TITLE"&gt;EXTRA_TITLE&lt;/a&gt; extra in the Intent for the title, or by setting the Intent's &lt;a href="https://developer.android.com/reference/android/content/ClipData"&gt;ClipData&lt;/a&gt; for a thumbnail image. See the updated &lt;a href="https://github.com/googlesamples/android-SharingShortcuts"&gt;sample application&lt;/a&gt; for the implementation details.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Directional, zoomable microphones&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
Android Q Beta 2 gives apps more control over audio capture through a new &lt;a href="https://developer.android.com/reference/android/media/MicrophoneDirection"&gt;MicrophoneDirection&lt;/a&gt; API. You can use the API to specify a preferred direction of the microphone when taking an audio recording. For example, when the user is taking a "selfie" video, you can request the front-facing microphone for audio recording (if it exists) by calling &lt;a href="https://developer.android.com/reference/android/media/MicrophoneDirection#setMicrophoneDirection(int)"&gt;setMicrophoneDirection(MIC_DIRECTION_FRONT)&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
 Additionally, this API introduces a standardized way of controlling zoomable microphones, allowing your app to have control over the recording field dimension using &lt;a href="https://developer.android.com/reference/android/media/MicrophoneDirection#setMicrophoneFieldDimension(float)"&gt;setMicrophoneFieldDimension(float)&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Compatibility through public APIs&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
In Android Q we're continuing our long-term effort to move apps toward &lt;a href="https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces"&gt;only using public APIs&lt;/a&gt;. We introduced most of the new restrictions in Beta 1, and we're making a few minor updates to those lists in Beta 2 to minimize impact on apps.  Our goal is to provide public alternative APIs for valid use-cases before restricting access, so if an interface that you currently use in Android 9 Pie is now restricted, you should request a &lt;a href="https://android.devsite.corp.google.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces#feature-request"&gt;new public API for that interface&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Get started with Android Q Beta&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
Today's update includes Beta 2 system images for &lt;a href="https://g.co/androidbeta"&gt;all Pixel devices&lt;/a&gt; and the &lt;a href="https://developer.android.com/studio/run/managing-avds.html"&gt;Android Emulator&lt;/a&gt;, as well updated SDK and tools for developers. These give you everything you need to get started testing your apps on the new platform and build with the latest APIs. 
&lt;/p&gt;
&lt;p&gt;
First, make your app compatible and give your users a seamless transition to Android Q, including your users currently participating in the Android Beta program. To get started, just install your current app from Google Play onto a device or &lt;a href="https://developer.android.com/studio/run/managing-avds.html"&gt;emulator&lt;/a&gt; running Beta 2 and work through the user flows. The app should run and look great, and handle the Android Q &lt;a href="https://developer.android.com/preview/behavior-changes-all"&gt;behavior changes for all apps&lt;/a&gt; properly.  If you find issues, we recommend fixing them in the current app, without changing your targeting level. See the &lt;a href="https://developer.android.com/preview/migration.html"&gt;migration guide&lt;/a&gt; for steps and a recommended timeline.
&lt;/p&gt;
&lt;p&gt;
With important &lt;a href="https://developer.android.com/preview/privacy"&gt;privacy features&lt;/a&gt; that are likely to affect your apps, we recommend getting started with testing right away. In particular, you'll want to test against &lt;a href="https://developer.android.com/preview/privacy/scoped-storage"&gt;scoped storage&lt;/a&gt;, &lt;a href="https://developer.android.com/preview/privacy/device-location"&gt;new location permissions&lt;/a&gt;, &lt;a href="https://developer.android.com/preview/privacy/background-activity-starts"&gt;restrictions on background Activity starts&lt;/a&gt;, and &lt;a href="https://developer.android.com/preview/privacy/data-identifiers#device-ids"&gt;restrictions on device identifiers&lt;/a&gt;. See the &lt;a href="https://developer.android.com/preview/privacy/checklist"&gt;privacy checklist&lt;/a&gt; as a starting point.
&lt;/p&gt;
&lt;p&gt;
Next, update your app's targetSdkVersion to 'Q' as soon as possible. This lets you test your app with all of the privacy and security features in Android Q, as well as any other &lt;a href="https://developer.android.com/preview/behavior-changes-29"&gt;behavior changes for apps targeting Q&lt;/a&gt;. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Explore the new features and APIs&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
When you're ready, dive into Android Q and learn about the &lt;a href="https://developer.android.com/preview/features"&gt;new features and APIs&lt;/a&gt; you can use in your apps. &lt;a href="https://www.youtube.com/watch?v=hvUH8ZHAq3A"&gt;Here's a video&lt;/a&gt; highlighting many of the changes for developers in Beta 1 and Beta 2. Take a look at the &lt;a href="https://developer.android.com/sdk/api_diff/q-beta2-incr/changes.html"&gt;API diff report&lt;/a&gt; for an overview of what's changed in Beta 2, and see the Android Q Beta &lt;a href="https://developer.android.com/reference/packages.html"&gt;API reference&lt;/a&gt; for details. Visit the &lt;a href="https://developer.android.com/preview/index.html"&gt;Android Q Beta developer site&lt;/a&gt; for more resources, including &lt;a href="https://developer.android.com/preview/release-notes.html"&gt;release notes&lt;/a&gt; and how to &lt;a href="https://developer.android.com/preview/feedback.html"&gt;report issues&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
To build with Android Q, download the Android Q Beta SDK and tools into Android Studio 3.3 or higher, and &lt;a href="https://developer.android.com/preview/setup-sdk"&gt;follow these instructions&lt;/a&gt; to configure your environment. If you want the latest fixes for Android Q related changes, we recommend you use &lt;a href="https://developer.android.com/studio/preview/"&gt;Android Studio 3.5&lt;/a&gt; or higher.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;How do I get Beta 2?&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
It's easy - you can &lt;a href="https://www.google.com/android/beta"&gt;enroll here&lt;/a&gt; to get Android Q Beta updates over-the-air, on any Pixel device (and this year we're supporting all three generations of Pixel -- Pixel 3, Pixel 2, and even the original Pixel!). If you're already enrolled, you'll receive the update to Beta 2 soon, no action is needed on your part. Downloadable system images are also &lt;a href="https://developer.android.com/preview/download"&gt;available&lt;/a&gt;. If you don't have a Pixel device, you can use the Android Emulator -- just download the latest emulator system images via the SDK Manager in Android Studio.
&lt;/p&gt;
&lt;p&gt;
As always, your input is critical, so please &lt;a href="https://developer.android.com/preview/feedback.html"&gt;let us know what you think&lt;/a&gt;. You can use our hotlists for filing &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1226573"&gt;platform issues&lt;/a&gt; (including privacy and behavior changes), &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1227376"&gt;app compatibility issues&lt;/a&gt;, and &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1227583"&gt;third-party SDK issues&lt;/a&gt;. You've shared great feedback with us so far and we're working to integrate as much of it as possible in the next Beta release.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=6a8Z_ZWSunM:9VQTGgHcYCA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=6a8Z_ZWSunM:9VQTGgHcYCA:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=6a8Z_ZWSunM:9VQTGgHcYCA:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/6a8Z_ZWSunM" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8869489024707101237" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8869489024707101237" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/6a8Z_ZWSunM/android-q-beta-2-update.html" title="Android Q Beta 2 update" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-lUCn_rFyM8U/XKTWZJrKAqI/AAAAAAAAHYs/GxnQH49NGeMOAfMux3AiFDZPpPEIDNvggCLcBGAs/s72-c/image1a.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/android-q-beta-2-update.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-5877906459788553978</id><published>2019-04-01T10:09:00.000-07:00</published><updated>2019-04-01T14:42:20.993-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android Pie" /><category scheme="http://www.blogger.com/atom/ns#" term="ART optimizing" /><category scheme="http://www.blogger.com/atom/ns#" term="ART optimizing profiles" /><category scheme="http://www.blogger.com/atom/ns#" term="Play Cloud" /><title type="text">Improving app performance with ART optimizing profiles in the cloud</title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-mBErPA5xD0w/XJ6ppc6ye7I/AAAAAAAAHYE/kP_xVzVtdjY3Grrr7fHM3Oznde-s7a4jwCLcBGAs/s1600/image6.png"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-mBErPA5xD0w/XJ6ppc6ye7I/AAAAAAAAHYE/kP_xVzVtdjY3Grrr7fHM3Oznde-s7a4jwCLcBGAs/s1600/image6.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Calin Juravle, Software Engineer&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
In Android Pie we launched &lt;em&gt;&lt;a href="https://youtu.be/Yi9-BqUxsno?list=PLWz5rJ2EKKc9Gq6FEnSXClhYkWAStbwlC&amp;t=985"&gt;ART optimizing profiles in Play Cloud&lt;/a&gt;,&lt;/em&gt; a new optimization feature that greatly improves the application startup time after a new install or update. On average, we have observed that apps start 15% faster (cold startup) across a variety of devices. Some hero cases even show 30%+ faster startup times. One of the most important aspects is that users get this for free, without any effort from their side or from developers!
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-J__2yBAq9SA/XJ6pHDtWtJI/AAAAAAAAHXw/xOQySRneEdQcfgIMXRsZVErzXN1y9yJgwCLcBGAs/s1600/image3.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-J__2yBAq9SA/XJ6pHDtWtJI/AAAAAAAAHXw/xOQySRneEdQcfgIMXRsZVErzXN1y9yJgwCLcBGAs/s1600/image3.png" data-original-width="1288" data-original-height="742" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;Source: Google internal data&lt;/em&gt;
&lt;/p&gt;
&lt;h2&gt;ART optimizing profiles in Play Cloud&lt;/h2&gt;


&lt;p&gt;
The feature builds on previous &lt;a href="https://source.android.com/devices/tech/dalvik/jit-compiler"&gt;Profile Guided Optimization&lt;/a&gt; (PGO) work, which was introduced in &lt;a href="https://www.youtube.com/watch?v=fwMM6g7wpQ8"&gt;Android 7.0 Nougat&lt;/a&gt;. PGO allows the Android Runtime to help improve an app's performance by building a profile of the app's most important hot code and focusing its optimization effort on it. This leads to big improvements while reducing the traditional memory and storage impact of a fully compiled app. However, it relies on the device to optimize apps based on these code profiles in idle maintenance mode, which means  it could be a few days before a user sees the benefits - something we aimed to improve.
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-6_ScCr79y7g/XJ6pSVfm7zI/AAAAAAAAHX0/PCTBWrbT4e87__cjtS07gE7eZetNvnQ-QCLcBGAs/s1600/image1.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-6_ScCr79y7g/XJ6pSVfm7zI/AAAAAAAAHX0/PCTBWrbT4e87__cjtS07gE7eZetNvnQ-QCLcBGAs/s1600/image1.png" data-original-width="960" data-original-height="540" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;Source: Google internal data&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;ART optimizing profiles in Play Cloud&lt;/em&gt; leverages the power of Android Play to bring all PGO benefits at install/update time: most users can get great performance without waiting!
&lt;/p&gt;
&lt;p&gt;
The idea relies on two key observations:
&lt;/p&gt;
&lt;ol&gt;

&lt;li&gt;Apps usually have many commonly used code paths (hot code) between a multitude of users and devices, e.g. classes used during startup or critical user paths. This can often be discovered by aggregating a few hundred data points. 

&lt;li&gt;App developers often roll-out their apps incrementally, starting with &lt;a href=" https://support.google.com/googleplay/android-developer/answer/3131213?hl=en"&gt;alpha/beta channels &lt;/a&gt;before expanding to a wider audience. Even if there isn't an alpha/beta set, there is often a ramp-up of users to a new version of an app. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
This means we can use the initial rollout of an app to bootstrap the performance for the rest of users. ART analyzes what part of the application code is worth optimizing on the initial devices, and then uploads the data to Play Cloud, which will build a core-aggregated code profile (containing information relevant to all devices). Once there is enough information, the code profile gets published and installed alongside the app's APKs. &lt;br&gt;

&lt;/p&gt;
&lt;p&gt;
On a device, the code profile acts as a seed, enabling efficient profile-guided optimization at install time. These optimizations help improve &lt;a href="https://developer.android.com/topic/performance/vitals/launch-time#cold"&gt;cold startup time &lt;/a&gt;and steady state performance, all without an app developer needing to write a single line of code. 
&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-YZvK3UU7D20/XJ6pZ21iv4I/AAAAAAAAHX8/9dOUqVkAqAwpS7cLu4GBUxS1NbjhOQQ3gCLcBGAs/s1600/image4.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://4.bp.blogspot.com/-YZvK3UU7D20/XJ6pZ21iv4I/AAAAAAAAHX8/9dOUqVkAqAwpS7cLu4GBUxS1NbjhOQQ3gCLcBGAs/s1600/image4.png" data-original-width="960" data-original-height="540" /&gt;&lt;/a&gt;
&lt;h3&gt;Step 1: Building the code profile&lt;/h3&gt;


&lt;p&gt;
One of the main goals is to build a quality, stable code profile out of aggregated &amp; anonymized data as fast as possible (to maximize the number of users that can benefit), while also making sure we have enough data to accurately optimize an app's performance. Sampling too much data takes up more bandwidth and time at installation. In addition, the longer we take to build the code profile, the fewer users get the benefits. Sampling too little data, and the code profile won't have enough information on what to properly optimize in order to make a difference.
&lt;/p&gt;
&lt;p&gt;
The outcome of the aggregation is what we call a core code profile, which only contains anonymous data about the code that is frequently seen across a random sample of sessions per device. We remove outliers to ensure we focus on the code that matters for most users.  
&lt;/p&gt;
&lt;p&gt;
Experiments show that the most commonly used code paths can be calculated very quickly, over a small amount of time. That means we are able to build a code profile fast enough that the majority of users will benefit from.
&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-ExYg7hPhU8E/XJ6pf1CSfRI/AAAAAAAAHYA/P-1tN7ehCoseEnK_lgHvfieX6bZmgh1XACLcBGAs/s1600/image5.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://4.bp.blogspot.com/-ExYg7hPhU8E/XJ6pf1CSfRI/AAAAAAAAHYA/P-1tN7ehCoseEnK_lgHvfieX6bZmgh1XACLcBGAs/s1600/image5.png" data-original-width="960" data-original-height="540" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;*Data averaged from Google apps, Source: Google internal data&lt;/em&gt;
&lt;/p&gt;
&lt;h3&gt;Step 2: Installing the code profile&lt;/h3&gt;


&lt;p&gt;
In Android 9.0 Pie, we introduced a new type of installation artifact: dex metadata files. Similar to the APKs, the dex metadata files are regular archives that contain data about how the APK should be optimized - like the core code profiles that have been built in the cloud. A key difference is that the dex metadata are managed solely by the platform and the app stores, and are not directly visible to developers.
&lt;/p&gt;
&lt;p&gt;
There is also built-in support for &lt;a href="https://developer.android.com/platform/technology/app-bundle/"&gt;App Bundles / Google Play Dynamic Delivery&lt;/a&gt;: without any developer intervention, all the app's feature splits are optimized. 
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-mBErPA5xD0w/XJ6ppc6ye7I/AAAAAAAAHYE/kP_xVzVtdjY3Grrr7fHM3Oznde-s7a4jwCLcBGAs/s1600/image6.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-mBErPA5xD0w/XJ6ppc6ye7I/AAAAAAAAHYE/kP_xVzVtdjY3Grrr7fHM3Oznde-s7a4jwCLcBGAs/s1600/image6.png" data-original-width="960" data-original-height="540" /&gt;&lt;/a&gt;
&lt;h3&gt;Step 3: Using the code profiles to optimize performance&lt;/h3&gt;


&lt;p&gt;
To understand how these code profiles achieve better performance, we need to look at their structure. Code profiles contain information about:
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;Classes loaded during startup

&lt;li&gt;Hot methods that the runtime deemed worthy of optimizations

&lt;li&gt;The layout of the code (e.g. code that executes during startup or post-startup)
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Using this information, we use a variety of optimization techniques, out of which the following three provide most of the benefits:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;a href="https://youtu.be/fwMM6g7wpQ8?t=2145"&gt;App Images&lt;/a&gt;: &lt;/em&gt;We use the start up classes to build a pre-populated heap where the classes are pre-initialized (called an app image). When the application starts, we map the image directly into memory so that all the startup classes are readily available.  
&lt;ul&gt;
 
&lt;li&gt;The benefit here is that the app's execution saves cycles since it doesn't need to do the work again, leading to a faster startup time.&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Code pre-compilation: &lt;/em&gt;We pre-compile all the hot code. When the apps execute, the most important parts of the code are already optimized and ready to be natively executed. The app no longer needs to wait for the JIT compiler to kick in.&lt;/li&gt; 
&lt;ul&gt; 
&lt;li&gt;The benefit is that the code is mapped as clean memory (compared to the JIT dirty memory) which improves the overall memory efficiency. The clean memory can be released by the kernel when under memory pressure while the dirty memory cannot, lessening the chances that the kernel will kill the app.
&lt;/li&gt; 
&lt;/ul&gt;
&lt;/li&gt; 
&lt;/ul&gt;
&lt;/li&gt; 
&lt;/li&gt; 
&lt;ul&gt;

&lt;li&gt;&lt;em&gt;More efficient dex layout: &lt;/em&gt;We reorganize the dex bytecode based on method information the profile exposes. The dex bytecode layout will look like: [startup code, post startup code, the rest of non profiled code].  
&lt;ul&gt;
 
&lt;li&gt;The benefit of doing this is a much higher efficiency of loading the dex byte code in memory: The memory pages have a better occupancy, and since everything is together, we need to load less and we can do less I/O.
&lt;/li&gt; 
&lt;/ul&gt;
&lt;/li&gt; 
&lt;/ul&gt;
&lt;h3&gt;Improvements &amp; Observations&lt;/h3&gt;


&lt;p&gt;
We rolled out profiles in the cloud to all apps on the playstore at the end of last year. 
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;More than 30,000 apps have shown improvement

&lt;li&gt;On average the cold startup is 15% faster across a variety of devices 
&lt;ul&gt;
 
&lt;li&gt;with many top apps getting 20%+ (e.g. Youtube) or even 30% (e.g. Google Search) on selected devices.
&lt;/li&gt; 
&lt;/ul&gt;

&lt;li&gt;90%+ of the app installs on Android Pie get profiles

&lt;li&gt;Little increase in install time for the extra optimization

&lt;li&gt;Available to all Pie devices.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
A very interesting observation is that, on average, ART profiles about 20% of the application methods (even less if we count the actual size of the code). For some apps, the profile covers only 2% of the code while for some the number goes up to 60%.
&lt;/p&gt;
&lt;a href="https://1.bp.blogspot.com/-179Ds6kuco4/XJ6pxOk4_oI/AAAAAAAAHYQ/WdjbULWQ9ZkaPjzBQKlkawPNU_xLnF4fgCLcBGAs/s1600/image2.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://1.bp.blogspot.com/-179Ds6kuco4/XJ6pxOk4_oI/AAAAAAAAHYQ/WdjbULWQ9ZkaPjzBQKlkawPNU_xLnF4fgCLcBGAs/s1600/image2.png" data-original-width="1200" data-original-height="742" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;
&lt;em&gt;Source: Google internal data&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Why is this an important observation? It means that the runtime has not seen a lot of the application code, and is thus not investing in the code's optimization. While there are a lot of valid use-cases where the code will not be executed (e.g. error handling or backwards compatibility code), this may also be due to unused features or unnecessary code. The skew distribution is a strong signal that the latter could play an important role in further optimizations (e.g. lowering APK size by removing unneeded dex bytecode).
&lt;/p&gt;
&lt;h3&gt;Future Development&lt;/h3&gt;


&lt;p&gt;
We're excited about the improvements that ART optimizing profiles has shown, and we'll be growing this concept more in the future. Building a profile of code per app opens opportunities for even more application improvements. Data can be used by developers to improve the app based on what's relevant and important for their end users. Using the information collected in Profiles, code can be re-organized or trimmed for better efficiency. Developers can potentially use App Bundles to split their features based on their use and avoid shipping unnecessary code to their users. We've already seen great improvements in app startup time, and hope to see additional benefits coming from profiles to make developer's lives easier while providing better experiences for our users.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=t6uSmUGKPSw:uFER37bZGNc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=t6uSmUGKPSw:uFER37bZGNc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=t6uSmUGKPSw:uFER37bZGNc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/t6uSmUGKPSw" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/5877906459788553978" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/5877906459788553978" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/t6uSmUGKPSw/improving-app-performance-with-art.html" title="Improving app performance with ART optimizing profiles in the cloud" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-mBErPA5xD0w/XJ6ppc6ye7I/AAAAAAAAHYE/kP_xVzVtdjY3Grrr7fHM3Oznde-s7a4jwCLcBGAs/s72-c/image6.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/04/improving-app-performance-with-art.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-2269119913510316404</id><published>2019-03-28T11:00:00.000-07:00</published><updated>2019-03-28T11:00:11.505-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Open Source Project" /><category scheme="http://www.blogger.com/atom/ns#" term="aosp" /><title type="text"> AOSP Application Updates</title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-S0w3eZGGANE/XJzjloRCLFI/AAAAAAAAHXg/Sg-xiSbQ46UTsKHTtv_EV7le4sVnJf1ewCLcBGAs/s1600/image2.png"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-S0w3eZGGANE/XJzjloRCLFI/AAAAAAAAHXg/Sg-xiSbQ46UTsKHTtv_EV7le4sVnJf1ewCLcBGAs/s1600/image2.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/rtenneti"&gt;Raman Tenneti&lt;/a&gt;, AOSP Software Engineer and &lt;a href="https://twitter.com/allysillins?lang=en"&gt;Ally Sillins&lt;/a&gt;, AOSP Program Manager
&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
When we started the Android Open Source Project (AOSP) 10 years ago, we included some basic applications in the AOSP build for three main purposes:
&lt;/p&gt;
&lt;ol&gt;

&lt;li&gt;to provide a usable set of applications for someone building an Android device from our AOSP

&lt;li&gt;to serve as a demonstration for the nascent Android app developer community,  showcasing how they should build some of these applications

&lt;li&gt;to, as part of the platform, provide functionality to other Android applications that would interact with them through the standard Android APIs like the &lt;a href="https://developer.android.com/guide/components/intents-common"&gt;common intents&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
However, as the Android ecosystem has matured over time, we've noticed a healthy growth of alternative applications - both as &lt;a href="https://www.google.com/search?q=android+calendar+app+open+source"&gt;open source&lt;/a&gt; and &lt;a href="https://play.google.com/store/search?q=calendar+apps"&gt;proprietary&lt;/a&gt; implementations - developed by the developer community. These alternative applications are not only capable to serve the first two purposes, but often times showcase richer set of features demonstrating the power of Android. Late last year, we began to clean up these applications in AOSP to focus more effectively on the last purpose — their role to provide functionality to other Android applications as part of the platform.
&lt;/p&gt;
&lt;p&gt;
To date, the following 3 apps have been cleaned up: Music, Calendar, and Calculator. See below for details on these updates. Going forward, you can expect to see similar efforts with the other &lt;a href="https://android.googlesource.com/platform/packages/apps/"&gt;applications in the AOSP repository&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
As always, we're excited to hear your feedback on the &lt;a href="http://developer.android.com"&gt;developer website&lt;/a&gt; or through our &lt;a href="https://groups.google.com/forum/?fromgroups#!forum/android-building"&gt;AOSP forum&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;Music Application&lt;/h2&gt;


&lt;p&gt;
AOSP's Music app can now playback music, one file at a time, and exposes itself as an intent handler for the android.media.browse.MediaBrowserService. The app has controls to play and pause, and a slider moving forward and backward. Features removed include: Music Icon, Artists, Albums, Songs, Playlists, Search, and Settings.
&lt;/p&gt;
&lt;a href="https://1.bp.blogspot.com/-RBpzoVUHQOw/XJzjfXqg63I/AAAAAAAAHXc/gRFFnwPcsSgfOJ_lyraTZv-lPCcp3LsswCLcBGAs/s1600/image1.png" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://1.bp.blogspot.com/-RBpzoVUHQOw/XJzjfXqg63I/AAAAAAAAHXc/gRFFnwPcsSgfOJ_lyraTZv-lPCcp3LsswCLcBGAs/s1600/image1.png" data-original-width="901" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;h2&gt;Calendar Application&lt;/h2&gt;


&lt;p&gt;
AOSP's Calendar app now exposes itself as an intent handler for &lt;a href="https://developer.android.com/guide/topics/providers/calendar-provider#intent-view"&gt;the calendar events&lt;/a&gt;. New events cannot be created and existing events cannot be edited or deleted. The following features have been deleted: support for multiple accounts, reminders and settings. In addition, some features remain that are not needed for providing a part of the platform functionality: views for day, week, and month. This app may be further simplified in the future. 
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-S0w3eZGGANE/XJzjloRCLFI/AAAAAAAAHXg/Sg-xiSbQ46UTsKHTtv_EV7le4sVnJf1ewCLcBGAs/s1600/image2.png" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://2.bp.blogspot.com/-S0w3eZGGANE/XJzjloRCLFI/AAAAAAAAHXg/Sg-xiSbQ46UTsKHTtv_EV7le4sVnJf1ewCLcBGAs/s1600/image2.png" data-original-width="901" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;h2&gt;Calculator App&lt;/h2&gt;


&lt;p&gt;
The calculator application is a standalone app, and does not function as part of the platform and hence has been removed from the AOSP build. However, the application will continue to exist as &lt;a href="https://github.com/aosp-mirror/platform_packages_apps_calculator"&gt;an open source project&lt;/a&gt; separately.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=rllAiGwSO9Q:kculyb4hdDI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=rllAiGwSO9Q:kculyb4hdDI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=rllAiGwSO9Q:kculyb4hdDI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/rllAiGwSO9Q" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2269119913510316404" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2269119913510316404" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/rllAiGwSO9Q/aosp-application-updates.html" title=" AOSP Application Updates" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-S0w3eZGGANE/XJzjloRCLFI/AAAAAAAAHXg/Sg-xiSbQ46UTsKHTtv_EV7le4sVnJf1ewCLcBGAs/s72-c/image2.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/aosp-application-updates.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-8441973709171803162</id><published>2019-03-26T16:27:00.000-07:00</published><updated>2019-03-26T16:27:19.234-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Console" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Developer API" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Developer API V3" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Developer API Version 3" /><title type="text">Changes to the Google Play Developer API</title><content type="html">&lt;meta name="twitter:image" content=" "&gt;
&lt;img style="display:none" src=" "&gt;

&lt;p&gt;&lt;em&gt;Posted by Vlad Radu, Product Manager and Nicholas Lativy, Software Engineer&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
The &lt;a href="https://developers.google.com/android-publisher/"&gt;Google Play Developer API&lt;/a&gt; allows you to automate your in-app billing and app distribution workflows. At Google I/O '18, we introduced &lt;a href="https://www.youtube.com/watch?v=Thp9_KVSZ1Y"&gt;version 3&lt;/a&gt; of the API, which allows you to transactionally start, manage, and halt staged &lt;a href="https://developers.google.com/android-publisher/tracks"&gt;releases on all tracks&lt;/a&gt;, through production, open testing, closed testing (including the new &lt;a href="https://support.google.com/googleplay/android-developer/answer/3131213?hl=en"&gt;additional testing tracks&lt;/a&gt;), and internal testing. 
&lt;/p&gt;
&lt;h3&gt;Updating from versions 1 and 2 to the latest version 3&lt;/h3&gt;


&lt;p&gt;
In addition to these new features, version 3 also supports all the functionality of previous versions, improving and simplifying how you manage workflows. Starting &lt;strong&gt;December 1, 2019&lt;/strong&gt;, versions 1 and 2 of the Google Play Developer API will no longer be available so you need to update to version 3 ahead of this date. 
&lt;/p&gt;
&lt;h3&gt;Migrating to version 3&lt;/h3&gt;


&lt;p&gt;
If you use the Google Play API client libraries (available for &lt;a href="https://developers.google.com/api-client-library/java/apis/androidpublisher/v3"&gt;Java&lt;/a&gt;, &lt;a href="https://developers.google.com/api-client-library/python/apis/androidpublisher/v3"&gt;Python&lt;/a&gt;, and other popular languages), we recommend upgrading to their latest versions, which already support version 3 of the API. In many cases, changing the version of the client library should be all that is necessary. However, you may also need to update specific code references to the version of the API in use - see examples in &lt;a href="https://github.com/googlesamples/android-play-publisher-api/tree/master/v3"&gt;our samples repository&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Many third-party plugins are already using version 3 of the API. If you use a plugin that does not support version 3 you will need to contact the maintainer. You will start seeing warnings in the Google Play Console in mid-May if we detect that your app is still using version 1 and version 2 endpoints.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;For version 1 users&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
If you currently use version 1 of the API, you may also need to link your API project to the Google Console before converting to version 3. &lt;a href="https://developers.google.com/android-publisher/getting_started#linking_your_api_project"&gt;Learn more about this process&lt;/a&gt;. 
&lt;/p&gt;
&lt;h3&gt;Going forward&lt;/h3&gt;


&lt;p&gt;
We hope you benefit from the new features of the Google Play Developer Publishing API and are looking forward to your continued feedback to help us improve the publishing experience on Google Play. 
&lt;/p&gt;

&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=deprecatingAPI-02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;entry.2056663615&amp;entry.646747778=deprecatingAPI-02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=deprecatingAPI-02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=4%E2%98%85+%E2%80%93+Very&amp;entry.2056663615&amp;entry.646747778=deprecatingAPI-02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=5%E2%98%85+%E2%80%93+Extremely&amp;entry.2056663615&amp;entry.646747778=deprecatingAPI-02/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=LTn4WObkyoQ:57ZrTspQWTg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=LTn4WObkyoQ:57ZrTspQWTg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=LTn4WObkyoQ:57ZrTspQWTg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/LTn4WObkyoQ" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8441973709171803162" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8441973709171803162" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/LTn4WObkyoQ/changes-to-google-play-developer-api.html" title="Changes to the Google Play Developer API" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s72-c/play_logo_16_9%2B%25285%2529.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/changes-to-google-play-developer-api.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-3035542401758321232</id><published>2019-03-21T14:54:00.000-07:00</published><updated>2019-03-22T11:24:18.558-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android App Bundles" /><category scheme="http://www.blogger.com/atom/ns#" term="android developers" /><category scheme="http://www.blogger.com/atom/ns#" term="App Bundle" /><category scheme="http://www.blogger.com/atom/ns#" term="app signing" /><category scheme="http://www.blogger.com/atom/ns#" term="Distribute" /><category scheme="http://www.blogger.com/atom/ns#" term="dynamic delivery" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="i18n" /><category scheme="http://www.blogger.com/atom/ns#" term="internationalization" /><category scheme="http://www.blogger.com/atom/ns#" term="l10n" /><category scheme="http://www.blogger.com/atom/ns#" term="language" /><category scheme="http://www.blogger.com/atom/ns#" term="Localization" /><category scheme="http://www.blogger.com/atom/ns#" term="play core" /><category scheme="http://www.blogger.com/atom/ns#" term="Translation" /><title type="text">The latest Android App Bundle updates including the additional languages API</title><content type="html">&lt;meta name="twitter:image" content="https://3.bp.blogspot.com/-1FxdTkvAvjA/XJQE4TjgvqI/AAAAAAAAHXE/3q78hoDH5SkXzl0J_xubpLSq-hd7NbhUgCLcBGAs/s1600/Language_API%2B%25281%2529.png"&gt; &lt;img style="display:none" src="https://3.bp.blogspot.com/-1FxdTkvAvjA/XJQE4TjgvqI/AAAAAAAAHXE/3q78hoDH5SkXzl0J_xubpLSq-hd7NbhUgCLcBGAs/s1600/Language_API%2B%25281%2529.png"&gt;  &lt;p&gt;&lt;em&gt;Posted by Wojtek Kaliciński, Developer Advocate, Android&lt;/em&gt;&lt;/p&gt;&lt;a href="https://3.bp.blogspot.com/-1FxdTkvAvjA/XJQE4TjgvqI/AAAAAAAAHXE/3q78hoDH5SkXzl0J_xubpLSq-hd7NbhUgCLcBGAs/s1600/Language_API%2B%25281%2529.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://3.bp.blogspot.com/-1FxdTkvAvjA/XJQE4TjgvqI/AAAAAAAAHXE/3q78hoDH5SkXzl0J_xubpLSq-hd7NbhUgCLcBGAs/s1600/Language_API%2B%25281%2529.png" data-original-width="1600" data-original-height="477" /&gt;&lt;/a&gt;  &lt;p&gt;Last year, we launched &lt;a href="https://developer.android.com/guide/app-bundle/"&gt;Android App Bundles&lt;/a&gt; and Google Play's Dynamic Delivery to introduce modular development, reduce app size and streamline the release process. Since then, we've seen developers quickly adopt this new app model in over 60,000 production apps. We've been excited to see developers  experience significant app size savings and reductions in the time needed to manage each release, and have documented these benefits in case studies with &lt;a href="https://developer.android.com/stories/apps/duolingo"&gt;Duolingo&lt;/a&gt; and &lt;a href="https://developer.android.com/stories/apps/redbus"&gt;redBus&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;Thank you to everyone who took the time to give us feedback on our initial launch. We're always open to new ideas, and today, we're happy to announce some new improvements based on your suggestions:  &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A new &lt;strong&gt;additional languages install API&lt;/strong&gt;, which supports in-app language pickers&lt;br /&gt;
&lt;li&gt;A streamlined &lt;strong&gt;publishing process for instant-enabled app bundles&lt;/strong&gt;&lt;br /&gt;
&lt;li&gt;A new enrollment option for&lt;strong&gt; app signing by Google Play&lt;/strong&gt;&lt;br /&gt;
&lt;li&gt;The ability to &lt;strong&gt;permanently uninstall dynamic feature modules &lt;/strong&gt;that are included in your app's initial install &lt;/li&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/ul&gt;&lt;h2&gt;Additional languages API&lt;/h2&gt;&lt;p&gt;When you adopt the Android App Bundle as the publishing format for your app, Google Play is able to optimize the installation by delivering only the language resources that match the device's system locales. If a user changes the system locale after the app is installed, Play automatically downloads the required resources. &lt;/p&gt;&lt;p&gt;Some developers choose to decouple the app's display language from the system locale by adding an in-app language switcher. With the latest release of the &lt;a href="https://developer.android.com/guide/app-bundle/playcore"&gt;Play Core library&lt;/a&gt; (version 1.4.0), we're introducing a new additional languages API that makes it possible to build in-app language pickers while retaining the full benefits of smaller installs provided by using app bundles. &lt;/p&gt;&lt;p&gt;With the additional languages API, apps can now request the Play Store to install resources for a new language configuration on demand and immediately start using it. &lt;/p&gt;&lt;h3&gt;Get a list of installed languages&lt;/h3&gt;&lt;p&gt;The app can get a list of languages that are already installed using the &lt;code&gt;&lt;a href="https://developer.android.com/reference/com/google/android/play/core/splitinstall/SplitInstallManager.html#getInstalledLanguages()"&gt;SplitInstallManager#getInstalledLanguages()&lt;/a&gt;&lt;/code&gt; method.      &lt;pre class="prettyprint"&gt;val splitInstallManager = SplitInstallManagerFactory.create(context)
val langs: Set&amp;lt;String&gt; = splitInstallManager.installedLanguages&lt;/pre&gt;&lt;h3&gt;Requesting additional languages&lt;/h3&gt;&lt;p&gt;Requesting an additional language is similar to &lt;a href="https://developer.android.com/guide/app-bundle/playcore"&gt;requesting an on demand module&lt;/a&gt;. You can do this by specifying a language in the request through &lt;code&gt;&lt;a href="https://developer.android.com/reference/com/google/android/play/core/splitinstall/SplitInstallRequest.Builder.html#addLanguage(java.util.Locale)"&gt;SplitInstallRequest.Builder#addLanguage(java.util.Locale)&lt;/a&gt;&lt;/code&gt;.     &lt;pre class="prettyprint"&gt;val installRequestBuilder = SplitInstallRequest.newBuilder()
installRequestBuilder.addLanguage(Locale.forLanguageTag("pl"))
splitInstallManager.startInstall(installRequestBuilder.build())&lt;/pre&gt;&lt;p&gt;The app can also monitor install success with callbacks and monitor the download state with a listener, just like when requesting an on demand module.  &lt;/p&gt;&lt;p&gt;Remember to handle the &lt;code&gt;SplitInstallSessionStatus.REQUIRES_USER_CONFIRMATION&lt;/code&gt; state. Please note that there was an API change in a recent Play Core release, which means you should use the new &lt;code&gt;&lt;a href="https://developer.android.com/reference/com/google/android/play/core/splitinstall/SplitInstallManager.html#startConfirmationDialogForResult(com.google.android.play.core.splitinstall.SplitInstallSessionState,%20android.app.Activity,%20int)"&gt;SplitInstallManager#startConfirmationDialogForResult()&lt;/a&gt;&lt;/code&gt; together with &lt;code&gt;Activity#onActivityResult()&lt;/code&gt;. The previous method of using &lt;code&gt;&lt;a href="https://developer.android.com/reference/com/google/android/play/core/splitinstall/SplitInstallSessionState.html#resolutionIntent()"&gt;SplitInstallSessionState#resolutionIntent()&lt;/a&gt;&lt;/code&gt; with &lt;code&gt;startIntentSender()&lt;/code&gt; has been deprecated.  &lt;p&gt;Check out the updated &lt;a href="https://developer.android.com/guide/app-bundle/playcore#lang_resources"&gt;Play Core Library documentation&lt;/a&gt; for more information on how to access the newly installed language resources in your activity. &lt;/p&gt;&lt;p&gt;We've also updated our &lt;a href="https://github.com/googlesamples/android-dynamic-features"&gt;dynamic features sample on GitHub&lt;/a&gt; with the additional languages API, including how to store the user's language preference and apply it to your activities at startup. &lt;/p&gt;&lt;p&gt;&lt;em&gt;Please note that while the additional languages API is now available to all developers, on demand modules are in a closed beta for the time being. You can experiment with on demand modules in your internal, open, and closed test tracks, while we work with our partners to make sure this feature is ready for production apps.&lt;/em&gt; &lt;/p&gt;&lt;h2&gt;Instant-enabled App Bundle&lt;/h2&gt;&lt;p&gt;In Android Studio 3.3, we &lt;a href="https://developer.android.com/studio/releases#app-bundles-instant"&gt;introduced&lt;/a&gt; a way to build app bundles that contain both the regular, installed version of your app as well as a Google Play Instant experience for modules marked with the &lt;code&gt;dist:instant="true"&lt;/code&gt; attribute in their &lt;code&gt;AndroidManifest.xml&lt;/code&gt;: &lt;/p&gt;&lt;pre class="prettyprint"&gt;&amp;lt;manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"&gt;
    &amp;lt;dist:module dist:instant="true" /&gt;
    ...
&amp;lt;/manifest&gt;&lt;/pre&gt;&lt;p&gt;Even though you could use a single project to generate the installed and instant versions of your app, up until now, developers were still required to use product flavors in order to build two separate app bundles and upload both to Play. &lt;/p&gt;&lt;p&gt;We're happy to announce that we have now removed this restriction. It's now possible to  upload a single, unified app bundle artifact, containing modules enabled for the instant experience. This functionality is now available for everyone. &lt;/p&gt;&lt;p&gt;After you build an instant-enabled app bundle, upload it to any track on the Play Console, and you'll be able to select it when creating a new instant app release. This also means that the installed and instant versions of your app no longer need different version codes, which will simplify the release workflow. &lt;/p&gt;&lt;h2&gt;Opt in to app signing by Google Play&lt;/h2&gt;&lt;p&gt;You need to enable app signing by Google Play to publish your app using an Android App Bundle and automatically benefit from Dynamic Delivery optimizations. It is also a more secure way to manage your signing key, which we recommend to everyone, even if you want to keep publishing regular APKs for now. &lt;/p&gt;&lt;p&gt;Based on your feedback, we've revamped the sign-up flow for new apps to make it easier to initialize the key you want to use for signing your app. &lt;/p&gt;&lt;p&gt;Now developers can explicitly choose to upload their existing key without needing to upload a self-signed artifact first. You can also choose to start with a key generated by Google Play, so that the key used to locally sign your app bundle can become your upload key.  &lt;/p&gt;&lt;p&gt;&lt;a href="https://support.google.com/googleplay/android-developer/answer/7384423"&gt;Read more about the new flow&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;Permanent uninstallation of install time modules&lt;/h2&gt;&lt;p&gt;We have now added the ability to permanently uninstall dynamic feature modules that are included in your app's initial install. &lt;/p&gt;&lt;p&gt;This is a behavior change, which means you can now call the existing &lt;code&gt;SplitInstallManager#deferredUninstall()&lt;/code&gt; API on modules that set &lt;code&gt;onDemand="false"&lt;/code&gt;. The module will be permanently uninstalled, even when the app is updated. &lt;/p&gt;&lt;p&gt;This opens up new possibilities for developers to further reduce the installed app size. For example, you can now uninstall a heavy sign-up module or any other onboarding content once the user completes it. If the user navigates to a section of your app that has been uninstalled, you can reinstall it using the standard on demand modules install API.  &lt;/p&gt;&lt;p&gt;We hope you enjoy these improvements and test them out in your apps. Continue to share your feedback as we work to make these features even more useful for you! &lt;/p&gt;&lt;center&gt;&lt;p&gt;How useful did you find this blog post?  &lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=PlayLanguagesAPI-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;entry.2056663615&amp;entry.646747778=PlayLanguagesAPI-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=PlayLanguagesAPI-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=4%E2%98%85+%E2%80%93+Very&amp;entry.2056663615&amp;entry.646747778=PlayLanguagesAPI-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=5%E2%98%85+%E2%80%93+Extremely&amp;entry.2056663615&amp;entry.646747778=PlayLanguagesAPI-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;/center&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=GsJfx8t9ee0:P9Nd0JpIzOI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=GsJfx8t9ee0:P9Nd0JpIzOI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=GsJfx8t9ee0:P9Nd0JpIzOI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/GsJfx8t9ee0" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3035542401758321232" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3035542401758321232" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/GsJfx8t9ee0/the-latest-android-app-bundle-updates.html" title="The latest Android App Bundle updates including the additional languages API" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-1FxdTkvAvjA/XJQE4TjgvqI/AAAAAAAAHXE/3q78hoDH5SkXzl0J_xubpLSq-hd7NbhUgCLcBGAs/s72-c/Language_API%2B%25281%2529.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/the-latest-android-app-bundle-updates.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-3202545987432399133</id><published>2019-03-18T10:30:00.000-07:00</published><updated>2019-03-27T09:48:38.500-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Announcements" /><category scheme="http://www.blogger.com/atom/ns#" term="Game Developers Conference" /><category scheme="http://www.blogger.com/atom/ns#" term="Game Development" /><category scheme="http://www.blogger.com/atom/ns#" term="GDC" /><category scheme="http://www.blogger.com/atom/ns#" term="GDC19" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Mobile Developer Day" /><category scheme="http://www.blogger.com/atom/ns#" term="Mobile Games" /><title type="text">Google Mobile Developer Day at Game Developers Conference 2019</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-HOaeJJnrzBM/XI_CBajhbiI/AAAAAAAAHWs/U_uMhB9bhHs3ORv0txg1_Dw5oBqwxoNVQCLcBGAs/s1600/Google_Developer_Day_2019_Thumb_855.png"&gt;
&lt;img style="display:none" src="https://4.bp.blogspot.com/-HOaeJJnrzBM/XI_CBajhbiI/AAAAAAAAHWs/U_uMhB9bhHs3ORv0txg1_Dw5oBqwxoNVQCLcBGAs/s1600/Google_Developer_Day_2019_Thumb_855.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Kacey Fahey, Developer Marketing, Google Play &amp; Android&lt;/em&gt;&lt;/p&gt;

&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/9k-J7BsXeY0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;
We're excited to host the Google Mobile Developer Day at Game Developers Conference 2019. We are taking this opportunity to share best practices and our plans to help your games businesses, which are fuelling incredible growth in the global mobile games market. According to Newzoo, mobile games revenue is projected to account for nearly 60% of global games revenue by 2021. The drivers of this growth come in many forms, including more developers building great games, new game styles blurring the lines of traditional genres, and the explosion of gaming in emerging markets - most notably in India. 
&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-lVlpC67ew0Q/XIwNE934UMI/AAAAAAAAHWU/RUqzZPZfeSQ_xaGI8vvS55r9DtGo1ceLACLcBGAs/s1600/80.jpg" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://4.bp.blogspot.com/-lVlpC67ew0Q/XIwNE934UMI/AAAAAAAAHWU/RUqzZPZfeSQ_xaGI8vvS55r9DtGo1ceLACLcBGAs/s1600/80.jpg" data-original-width="646" data-original-height="376" /&gt;&lt;/a&gt;
&lt;p id="imgCaption"&gt;Image Source: &lt;a href="https://www.gamesindustry.biz/articles/2018-04-30-global-games-market-to-hit-usd137-9-billion-this-year-newzoo"&gt;GamesIndustry.biz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
To support your growth, Google is focused on improving the game development experience on Android. We are investing in tools to give you better insights into what is happening on devices, as well as in people and teams to address your feedback about the development process, graphics, multiplayer experiences, and more. 
&lt;/p&gt;
&lt;p&gt;
We have some great updates and new tools to improve game discovery and monetization on Google Play, which we also shared today during our Mobile Developer Day:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="https://support.google.com/googleplay/android-developer/answer/9098022"&gt;Pre-registration&lt;/a&gt; now in general availability&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Starting today, we are launching pre-registration for general availability. Set up a pre-registration campaign in the Google Play Console and start marketing your games to build awareness before launch. Users who pre-register receive a notification at launch, which helps increase day one installs.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="https://developer.android.com/topic/google-play-instant"&gt;Google Play Instant&lt;/a&gt; gaining adoption&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We have seen strong adoption of Google Play Instant with 3x growth in the number of instant games and 5x growth in the number of instant sessions over the last six months. Instant experiences allow players to tap the 'Try Now' button on your store listing page and go straight to a demo experience in a matter of seconds, without installing. Now, they're even easier to build with Cocos and Unity plug-ins and an expanded implementation partner program. Discover the &lt;a href="https://medium.com/@bfrenkel/gdc-google-play-instant-54a1a2efc"&gt;latest updates&lt;/a&gt; on Google Play Instant.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="https://developer.android.com/platform/technology/app-bundle"&gt;Android App Bundles&lt;/a&gt; momentum and new large download size threshold&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Over 60K apps and games on Google Play are now using the Android App Bundle publishing format, which is supported in Android Studio, Unity, and Cocos Creator. The app bundle uses Google Play's Dynamic Delivery to deliver a smaller, optimized APK containing only the resources needed for a specific device. &lt;br&gt;

&lt;/p&gt;
&lt;p&gt;
To better support high quality game experiences and reflect improved devices, we've also increased the size limit for APKs generated from app bundles to 150MB and raised the threshold for large download user warnings on the Google Play Store to 150MB, from 100MB.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Improved tools in the Google Play Console&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
&lt;strong&gt;&lt;a href="https://developer.android.com/distribute/best-practices/grow/store-listing-experiments"&gt;Store listing experiments&lt;/a&gt;&lt;/strong&gt; let you A/B test changes to your store listing on actual Play Store visitors. We recently rolled out improvements, introducing two new metrics - first time installers and D1 retained users - to more accurately reflect the performance of your store listings. These two new metrics are now reported with hourly intervals and are available via email notifications, letting you see results faster and track performance better. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;a href="https://support.google.com/googleplay/android-developer/answer/9156429#examples"&gt;Country targeted store listings&lt;/a&gt;&lt;/strong&gt; allow you to tailor your app's store listing to appeal to users in different countries. You can customize the app title, icon, descriptions and graphic assets,  allowing you to better appeal to users in specific target markets. For example, you can now tailor your store listing with different versions of the English language for users in India versus the United States.
&lt;/p&gt;
&lt;p&gt;
Rewarded ads&lt;strong&gt; &lt;/strong&gt;give players the choice to watch an advertisement in exchange for in-app items. With &lt;strong&gt;&lt;a href="https://support.google.com/googleplay/android-developer/answer/9155268"&gt;rewarded ads in Google Play&lt;/a&gt;&lt;/strong&gt;, you can now create and manage rewarded ads through the Google Play Console. No additional SDK integrations are required. 
&lt;/p&gt;
&lt;p&gt;
We hope you try some of these new tools and keep sharing ideas so we can make Android and Google Play a better place to grow your business. We are committed to continue improving the platform and building tools that better serve the gaming community. 
&lt;/p&gt;
&lt;p&gt;
Get started today by visiting two new resources, a hub for developers interested in &lt;a href="http://d.android.com/games"&gt;creating games on Android&lt;/a&gt; and &lt;a href="http://games.withgoogle.com"&gt;games.withgoogle.com&lt;/a&gt;, for developers looking to connect and scale their business across Google. Many of these updates and resources come from community suggestions, so sign up for our monthly &lt;a href="https://developer.android.com/newsletter/index.html"&gt;newsletter&lt;/a&gt; to stay informed.
&lt;/p&gt;
&lt;p&gt;Watch the &lt;a href="https://www.youtube.com/playlist?list=PLOU2XLYxmsIKiWaPpfAT60S86NDTa5oAC"&gt;session recordings&lt;/a&gt; and product updates shared during Google Mobile Developer Day.&lt;/p&gt;

&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=GDCrecap-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=GDCrecap-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=GDCrecap-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=GDCrecap-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=GDCrecap-03/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=X3CHRsxGnbE:hku6TPNoWOA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=X3CHRsxGnbE:hku6TPNoWOA:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=X3CHRsxGnbE:hku6TPNoWOA:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/X3CHRsxGnbE" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3202545987432399133" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3202545987432399133" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/X3CHRsxGnbE/google-mobile-developer-day-at-game.html" title="Google Mobile Developer Day at Game Developers Conference 2019" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-HOaeJJnrzBM/XI_CBajhbiI/AAAAAAAAHWs/U_uMhB9bhHs3ORv0txg1_Dw5oBqwxoNVQCLcBGAs/s72-c/Google_Developer_Day_2019_Thumb_855.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/google-mobile-developer-day-at-game.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-4536076420025365781</id><published>2019-03-15T10:05:00.000-07:00</published><updated>2019-03-15T10:25:14.856-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android developers" /><category scheme="http://www.blogger.com/atom/ns#" term="App icons" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Console" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Store" /><category scheme="http://www.blogger.com/atom/ns#" term="store listing experiments" /><title type="text">Introducing a new Google Play app and game icon specification</title><content type="html">&lt;img src="https://1.bp.blogspot.com/-VGNBAJbKTk0/XIrT0ARxwrI/AAAAAAAAHVw/fQJEOq59Crc1YzbfT_OhNfXwipaxQ_yCwCLcBGAs/s1600/image1.png" style="display: none;" /&gt;  &lt;style&gt;
table, th, td {
   border: 1px solid black;
&lt;/style&gt;  &lt;br /&gt;
&lt;em&gt;Posted by Steve Suppe, Product Manager, Google Play&lt;/em&gt;&lt;br /&gt;
As part of our focus and dedication to improving the Google Play Store experience for our users, we are introducing &lt;a href="https://developer.android.com/google-play/resources/icon-design-specifications"&gt;new design specifications&lt;/a&gt; for your app icons.  &lt;br /&gt;
&lt;a href="https://2.bp.blogspot.com/-GPnOpfeWTnc/XIvW4S5CV8I/AAAAAAAAHWI/mcH9FHVx1dMEta-0OiXN128ErhB_onmNgCLcBGAs/s1600/emailasset01.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-GPnOpfeWTnc/XIvW4S5CV8I/AAAAAAAAHWI/mcH9FHVx1dMEta-0OiXN128ErhB_onmNgCLcBGAs/s1600/emailasset01.png" data-original-width="1440" data-original-height="468" /&gt;&lt;/a&gt;  &lt;p id="imgCaption"&gt;Left to right: original icon, new icon (example), original icon in legacy mode&lt;/p&gt;&lt;br /&gt;
As of early April, you will be able to upload new icons to the Google Play Console and confirm you are compliant with the new specification. Original icons are still accepted in the Google Play Store during this time. As of May 1st, developers will no longer be able to upload icons in the Play Console which do not meet the new specifications, although existing original icons in the Google Play Store during this period can remain unchanged. &lt;br /&gt;
By June 24, we require you to: &lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Update your icon to the new &lt;a href="https://developer.android.com/google-play/resources/icon-design-specifications"&gt;specification&lt;/a&gt;.  &lt;/li&gt;
&lt;li&gt;Upload your icon to Play Console.  &lt;/li&gt;
&lt;li&gt;Confirm in Play Console that your icon meets the new specification. &lt;/li&gt;
&lt;/ol&gt;We highly recommend that you update your icons and confirm they meet the new specification as soon as possible to ensure that you provide the highest quality experience for users.   &lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;What exactly is changing?&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Icon assets will remain the same size (512 x 512), but transparent backgrounds will no longer be allowed.  &lt;/li&gt;
&lt;li&gt;Google Play on Android and Chrome OS will dynamically apply rounded corners and drop shadows to icons. The corner radius will be 20% of the icon size, to ensure consistency at different sizes.  &lt;/li&gt;
&lt;li&gt;There will be no changes to Google Play on other form factors (TV, Wear, Auto). &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Note this does not affect your APK launcher icons for Android.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col width="20%"&gt;&lt;/col&gt;   &lt;col width="80%"&gt;&lt;/col&gt;   &lt;/colgroup&gt;&lt;tbody&gt;
&lt;tr&gt;    &lt;td&gt;&lt;strong&gt;Timelines&lt;/strong&gt;    &lt;/td&gt;    &lt;td&gt;&lt;strong&gt;Changes&lt;/strong&gt;    &lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td&gt;Early April    &lt;/td&gt;    &lt;td&gt;You can start uploading your new icons in Play Console and confirm they meet the new specification. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Original icons will continue to display correctly in Google Play.  &lt;/li&gt;
&lt;li&gt;New icons will display correctly in Google Play. &lt;/li&gt;
&lt;/ul&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td&gt;May 1st    &lt;/td&gt;    &lt;td&gt;Any new icons uploaded in Play Console must be confirmed as meeting the new specification. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Original icons will continue to display correctly in Google Play.  &lt;/li&gt;
&lt;li&gt;New icons will display correctly in Google Play. &lt;/li&gt;
&lt;/ul&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;tr&gt;    &lt;td&gt;June 24th     &lt;/td&gt;    &lt;td&gt;Original icons are converted to "legacy mode." You must confirm that any new icons uploaded in Play Console meet the new specification. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Original icons will be automatically converted to "legacy mode" icons.  &lt;/li&gt;
&lt;li&gt;New icons render correctly in the Google Play Store. &lt;/li&gt;
&lt;/ul&gt;&lt;/td&gt;   &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
These updates will help us all provide a more unified and consistent look and feel for Google Play, allowing us to better showcase your apps and games and provide a higher quality user experience. &lt;br /&gt;
We will be keeping you up-to-date with these changes in the coming months - so look out for more updates. In the meantime, check out our new &lt;a href="https://developer.android.com/google-play/resources/icon-design-specifications"&gt;icon design specifications&lt;/a&gt;. &lt;br /&gt;
&lt;center&gt;  How useful did you find this blog post?  &lt;br /&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;amp;entry.2056663615&amp;amp;entry.646747778=iconuniformityinitialphase1-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;amp;entry.2056663615&amp;amp;entry.646747778=iconuniformityinitialphase1-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;amp;entry.2056663615&amp;amp;entry.646747778=iconuniformityinitialphase1-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;amp;entry.2056663615&amp;amp;entry.646747778=iconuniformityinitialphase1-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=2%E2%98%85+%E2%80%93+Not+very&amp;amp;entry.2056663615&amp;amp;entry.646747778=iconuniformityinitialphase1-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;br /&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1"&gt;&lt;img border="0" data-original-height="281" data-original-width="499" id="imgHalf" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" style="width: 40%;" /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;/center&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=MqrxVvP-vTI:I3d7Dzca5sc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=MqrxVvP-vTI:I3d7Dzca5sc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=MqrxVvP-vTI:I3d7Dzca5sc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/MqrxVvP-vTI" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4536076420025365781" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4536076420025365781" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/MqrxVvP-vTI/introducing-new-google-play-app-and.html" title="Introducing a new Google Play app and game icon specification" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-VGNBAJbKTk0/XIrT0ARxwrI/AAAAAAAAHVw/fQJEOq59Crc1YzbfT_OhNfXwipaxQ_yCwCLcBGAs/s72-c/image1.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/introducing-new-google-play-app-and.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-3762813913582732930</id><published>2019-03-14T12:03:00.000-07:00</published><updated>2019-03-14T12:03:52.654-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="androidq" /><category scheme="http://www.blogger.com/atom/ns#" term="Location" /><category scheme="http://www.blogger.com/atom/ns#" term="Privacy" /><title type="text">Giving users more control over their location data </title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-HQYwfh8qOEk/XIqHFt6N98I/AAAAAAAAHVk/96U9Yud4_HECDV_fDgN0JIgsSl8NhPqoQCLcBGAs/s1600/12%2Bcopy%2B10.png"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-HQYwfh8qOEk/XIqHFt6N98I/AAAAAAAAHVk/96U9Yud4_HECDV_fDgN0JIgsSl8NhPqoQCLcBGAs/s1600/12%2Bcopy%2B10.png"&gt;

&lt;p&gt;
&lt;em&gt;Posted by Jen Chai, Product Manager&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Location data can deliver amazing, rich mobile experiences for users on Android such as finding a restaurant nearby, tracking the distance of a run, and getting turn-by-turn directions as you drive. Location is also one of the most sensitive types of personal information for a user. We want to give users simple, easy-to-understand controls for what data they are providing to apps, and yesterday, we &lt;a href="http://developer.android.com/preview"&gt;announced in Android Q&lt;/a&gt; that we are giving users more control over location permissions. We are delighted by the innovative location experiences you provide to users through your apps, and we want to make this transition as straightforward for you as possible. This post dives deeper into the location permission changes in Q, what it may mean for your app, and how to get started with any updates needed.
&lt;/p&gt;
&lt;p&gt;
Previously, a user had a single control to allow or deny an app access to device location, which covered location usage by the app both while it was in use and while it wasn't. Starting in Android Q, users have a new option to give an app access to location only when the app is being used; in other words, when the app is in the foreground. This means users will have a choice of three options for providing location to an app: 
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;"All the time" - this means an app can access location at any time

&lt;li&gt;"While in use" - this means an app can access location only while the app is being used

&lt;li&gt;"Deny" - this means an app cannot access location 
&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="https://2.bp.blogspot.com/-HQYwfh8qOEk/XIqHFt6N98I/AAAAAAAAHVk/96U9Yud4_HECDV_fDgN0JIgsSl8NhPqoQCLcBGAs/s1600/12%2Bcopy%2B10.png" imageanchor="1" &gt;&lt;img id="floatRight" style="width: 35%" border="0" src="https://2.bp.blogspot.com/-HQYwfh8qOEk/XIqHFt6N98I/AAAAAAAAHVk/96U9Yud4_HECDV_fDgN0JIgsSl8NhPqoQCLcBGAs/s1600/12%2Bcopy%2B10.png" data-original-width="800" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;p&gt;
Some apps or features within an app may only need location while the app is being used. For example, if a feature allows a user to search for a restaurant nearby, the app only needs to understand the user's location when the user opens the app to search for a restaurant. 
&lt;/p&gt;
&lt;p&gt;
However, some apps may need location even when the app is not in use. For example, an app that automatically tracks the mileage you drive for tax filing, without requiring you to interact with the app. 
&lt;/p&gt;
&lt;p&gt;
The new location control allows users to decide when device location data is provided to an app and prevents an app from getting location data that it may not need. Users will see this new option in the same permissions dialog that is presented today when an app requests access to location. This permission can also be changed at any time for any app from Settings-&gt; Location-&gt; App permission. 
&lt;/p&gt;
&lt;p&gt;
&lt;h2&gt;Here's how to get started&lt;/h2&gt;
&lt;/p&gt;
&lt;p&gt;
We know these updates may impact your apps. We respect our developer community, and our goal is to approach any change like this very carefully. We want to support you as much as we can by (1) releasing developer-impacting features in the first Q Beta to give you as much time as possible to make any updates needed in your apps and (2) providing detailed information in follow-up posts like this one as well as in the developer guides and &lt;a href="https://developer.android.com/preview/privacy/checklist"&gt;privacy checklist&lt;/a&gt;.  Please &lt;a href="https://developer.android.com/preview/feedback"&gt;let us know&lt;/a&gt; if there are ways we can make the guides more helpful!
&lt;/p&gt;
&lt;p&gt;
If your app has a feature requiring "all the time" permission, you'll need to add the new &lt;code&gt;ACCESS_BACKGROUND_LOCATION&lt;/code&gt; permission to your manifest file when you target Android Q.  If your app targets Android 9 (API level 28) or lower, the &lt;code&gt;ACCESS_BACKGROUND_LOCATION&lt;/code&gt; permission will be automatically added for you by the system if you request either &lt;code&gt;ACCESS_FINE_LOCATION&lt;/code&gt; or &lt;code&gt;ACCESS_COARSE_LOCATION&lt;/code&gt;. A user can decide to provide or remove these location permissions at any time through Settings. To maintain a good user experience, design your app to gracefully handle when your app doesn't have background location permission or when it doesn't have any access to location.  
&lt;/p&gt;

&lt;p&gt;
Users will also be more likely to grant the location permission if they clearly understand why your app needs it. Consider asking for the location permission from users in context, when the user is turning on or interacting with a feature that requires it, such as when they are searching for something nearby. In addition, only ask for the level of access required for that feature. In other words, don't ask for "all the time" permission if the feature only requires "while in use" permission. 
&lt;/p&gt;
&lt;p&gt;
To learn more, read the developer guide on how to handle the &lt;a href="https://developer.android.com/preview/privacy/device-location"&gt;new location controls&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=R-zS5eis_Sc:nvsoDSRtfMU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=R-zS5eis_Sc:nvsoDSRtfMU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=R-zS5eis_Sc:nvsoDSRtfMU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/R-zS5eis_Sc" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3762813913582732930" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3762813913582732930" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/R-zS5eis_Sc/giving-users-more-control-over-their.html" title="Giving users more control over their location data " /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-HQYwfh8qOEk/XIqHFt6N98I/AAAAAAAAHVk/96U9Yud4_HECDV_fDgN0JIgsSl8NhPqoQCLcBGAs/s72-c/12%2Bcopy%2B10.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/giving-users-more-control-over-their.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-6673667816075427371</id><published>2019-03-14T10:00:00.000-07:00</published><updated>2019-03-14T10:17:26.056-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Jetpack" /><category scheme="http://www.blogger.com/atom/ns#" term="Navigation" /><title type="text">Android Jetpack Navigation Stable Release</title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-qa1fLrJF-5U/XIl-jZAJMbI/AAAAAAAAHVM/TKCA47Imle4DD6yRa7WqfIvEJRwpmWvrgCLcBGAs/s1600/Jetpack-nav-icon.png"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-qa1fLrJF-5U/XIl-jZAJMbI/AAAAAAAAHVM/TKCA47Imle4DD6yRa7WqfIvEJRwpmWvrgCLcBGAs/s1600/Jetpack-nav-icon.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Ian Lake, Software Engineering Lead &amp; Jisha Abubaker, Product Manager&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;Cohesive tooling and guidance for implementing predictable in-app navigation&lt;/h2&gt;


&lt;a href="https://2.bp.blogspot.com/-qa1fLrJF-5U/XIl-jZAJMbI/AAAAAAAAHVM/TKCA47Imle4DD6yRa7WqfIvEJRwpmWvrgCLcBGAs/s1600/Jetpack-nav-icon.png" imageanchor="1" &gt;&lt;img id="floatRight" border="0" src="https://2.bp.blogspot.com/-qa1fLrJF-5U/XIl-jZAJMbI/AAAAAAAAHVM/TKCA47Imle4DD6yRa7WqfIvEJRwpmWvrgCLcBGAs/s1600/Jetpack-nav-icon.png" data-original-width="1600" data-original-height="1600" /&gt;&lt;/a&gt;

&lt;p&gt;
Today we're happy to announce the stable release of the Android Jetpack Navigation component.
&lt;/p&gt;
&lt;p&gt;
The Jetpack Navigation component's suite of &lt;strong&gt;libraries&lt;/strong&gt;, &lt;strong&gt;tooling&lt;/strong&gt; and &lt;strong&gt;guidance&lt;/strong&gt; provides a robust, complete navigation framework, freeing you from the challenges of implementing navigation yourself and giving you certainty that all edge cases are handled correctly. 
&lt;/p&gt;
&lt;p&gt;
With the Jetpack Navigation component you can: 
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;Handle basic user actions like &lt;strong&gt;Up&lt;/strong&gt; &amp; &lt;strong&gt;Back&lt;/strong&gt; buttons so that they work consistently across devices and screens.

&lt;li&gt;Allow users to land on any part of your app via &lt;strong&gt;deep links&lt;/strong&gt; and build consistent and predictable navigation within your app.

&lt;li&gt;Improve &lt;strong&gt;type safety&lt;/strong&gt; of arguments passed from one screen to another, decreasing the chances of runtime crashes as users navigate in your app.

&lt;li&gt;Add navigation experiences like &lt;strong&gt;navigation drawers &lt;/strong&gt;and &lt;strong&gt;bottom navigation&lt;/strong&gt; consistent with the Material Design guidelines.

&lt;li&gt;&lt;strong&gt;Visualize&lt;/strong&gt; and manipulate your navigation flows easily with the &lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing"&gt;Navigation Editor&lt;/a&gt; in Android Studio 3.3
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The Jetpack Navigation component adheres to the &lt;a href="https://developer.android.com/guide/navigation/navigation-principles"&gt;Principles of Navigation&lt;/a&gt;, providing consistent and predictable navigation no matter how simple or complex your app may be.
&lt;/p&gt;
&lt;p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Y0Cs2MQxyIs" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/p&gt;
&lt;h2&gt;Simplify navigation code with Jetpack Navigation Libraries&lt;/h2&gt;


&lt;p&gt;
The Jetpack Navigation component provides a framework for in-app navigation that makes it possible to abstract away the implementation details, keeping your app code free of navigation boilerplate.
&lt;/p&gt;
&lt;p&gt;
To get started with the Jetpack Navigation component in your project, add the Navigation artifacts available on &lt;a href="https://developer.android.com/studio/build/dependencies#google-maven"&gt;Google's Maven repository&lt;/a&gt; in Java or Kotlin to your app's  &lt;code&gt;build.gradle&lt;/code&gt; file:
&lt;/p&gt;



&lt;pre class="prettyprint"&gt; dependencies {
    def nav_version = 2.0.0

    // Java
    implementation "androidx.navigation:navigation-fragment:$nav_version"
    implementation "androidx.navigation:navigation-ui:$nav_version"

    // Kotlin KTX 
    implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
  }&lt;/pre&gt;


&lt;p&gt;
&lt;strong&gt;Note&lt;/strong&gt;: If you have not yet migrated to androidx.*, the Jetpack Navigation stable component libraries are also available as &lt;a href="https://developer.android.com/jetpack/androidx/releases/navigation#pre-androidx_dependencies"&gt;android.arch.* artifacts&lt;/a&gt; in version 1.0.0.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;navigation-runtime : &lt;/strong&gt;This core library powers the navigation graph, which provides the structure of your in-app navigation: the screens or destinations that make up your app and the actions that link them. You can control how you navigate to destinations with a simple &lt;code&gt;navigate()&lt;/code&gt; call. These destinations may be fragments, activities or custom destinations.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;navigation-fragment:  &lt;/strong&gt;This library builds upon navigation-runtime and provides out-of-the-box support for fragments as destinations. With this library, fragment transactions are now handled for you automatically.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;navigation-ui: &lt;/strong&gt;This library allows you to &lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-ui"&gt;easily add&lt;/a&gt; navigation drawers, menus and bottom navigation to your app consistent with the Material Design guidelines.
&lt;/p&gt;
&lt;p&gt;
Each of these libraries provide an &lt;a href="https://developer.android.com/kotlin/ktx"&gt;Android KTX&lt;/a&gt; artifact with the &lt;strong&gt;-ktx&lt;/strong&gt; suffix that builds upon the Java API, taking advantage of Kotlin-specific language features.
&lt;/p&gt;
&lt;h2&gt;Tools to help you build predictable navigation workflows&lt;/h2&gt;


&lt;p&gt;
Available in Android Studio 3.3 and above, the &lt;strong&gt;Navigation Editor &lt;/strong&gt;lets you&lt;strong&gt; &lt;/strong&gt;visually &lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing#create-nav-graph"&gt;create your navigation graph&lt;/a&gt; , allowing you to manage user journeys within your app.
&lt;/p&gt;
&lt;p&gt;
With integration into the &lt;a href="https://developer.android.com/studio/build/manifest-merge"&gt;manifest merger&lt;/a&gt; tool, Android Studio can automatically generate the intent filters necessary to enable &lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-deep-link#implicit"&gt;deep linking&lt;/a&gt; to a specific screen in your app. With this feature, you can associate URLs with any screen of your app by simply setting an attribute on the navigation destination.
&lt;/p&gt;
&lt;p&gt;
Navigation often requires passing data from one screen to another. For example, your list screen may pass an item ID to a details screen. Many of the runtime exceptions during navigation have been attributed to a lack of type safety guarantees as you pass arguments. These exceptions are hard to replicate and debug. Learn how you can provide compile time type safety with the&lt;strong&gt; &lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-pass-data"&gt;Safe Args Gradle Plugin&lt;/a&gt;&lt;/strong&gt;.
&lt;/p&gt;
&lt;h2&gt;Guidance to get it right on the first try&lt;/h2&gt;


&lt;p&gt;
Check out our brand new set of developer guides that encompass best practices to help you implement navigation correctly:
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-deep-link"&gt;Create a deep-link for a destination&lt;/a&gt;

&lt;li&gt;&lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-conditional"&gt;Conditional navigation&lt;/a&gt;

&lt;li&gt;&lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-animate-transitions"&gt;Animate transitions between destinations&lt;/a&gt;

&lt;li&gt;&lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-form-factors"&gt;Design for different form factors&lt;/a&gt;

&lt;li&gt;&lt;a href="https://d.android.com/topic/libraries/architecture/navigation/navigation-testing"&gt;Test navigation&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What developers say&lt;/h2&gt;


&lt;p&gt;
Here's what Emery Coxe, Android Lead @ &lt;a href="https://play.google.com/store/apps/details?id=com.vacationrentals.homeaway"&gt;HomeAway&lt;/a&gt;, has to say about the Jetpack Navigation component :
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"The Navigation library is well-designed and fully configurable, allowing us to integrate the library according to our specific needs. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;With the Navigation Library, we refactored our legacy navigation drawer to support a dynamic, runtime-based configuration using custom views. It allowed us to add / remove new screens to the top-level experience of our app without creating any interdependencies between discreetly packaged modules. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;We were also able to get rid of all anti-patterns in our app around top-level navigation, removing explicit casts and hardcoded assumptions to instead rely directly on Navigation. This library is a fundamental component of modern Android development, and we intend to adopt it more broadly across our app moving forward.&lt;/em&gt;
&lt;/p&gt;
&lt;h2&gt;Get started&lt;/h2&gt;


&lt;p&gt;
Check out the &lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-migrate"&gt;migration guide&lt;/a&gt; and the &lt;a href="https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing"&gt;developer guide&lt;/a&gt; to learn how you can get started using the Jetpack Navigation component in your app. We also offer a &lt;a href="https://codelabs.developers.google.com/codelabs/android-navigation"&gt;hands-on codelab&lt;/a&gt; and a &lt;a href=" https://github.com/googlesamples/android-architecture-components/tree/master/NavigationBasicSample"&gt;sample app&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Also check out &lt;a href="https://play.google.com/store/apps/details?id=com.google.android.apps.wellbeing"&gt;Google's Digital Wellbeing&lt;/a&gt; to see another real-world example of in-app navigation using the Android Jetpack Navigation component.
&lt;/p&gt;
&lt;h2&gt;Feedback&lt;/h2&gt;


&lt;p&gt;
Please continue to tell us about your experience with the Navigation component. If you have specific feedback on features or if you run into any issues, please file a bug via one of the following links:
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;For issues related to the Navigation Editor: &lt;a href="https://issuetracker.google.com/issues/new?component=404706"&gt;Issue Tracker&lt;/a&gt;

&lt;li&gt;For all other Navigation-related issues: &lt;a href="https://issuetracker.google.com/issues/new?component=409828"&gt;Issue Tracker&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=BIt31AejCP0:Xma1HQ_2qwA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=BIt31AejCP0:Xma1HQ_2qwA:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=BIt31AejCP0:Xma1HQ_2qwA:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/BIt31AejCP0" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6673667816075427371" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6673667816075427371" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/BIt31AejCP0/android-jetpack-navigation-stable.html" title="Android Jetpack Navigation Stable Release" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-qa1fLrJF-5U/XIl-jZAJMbI/AAAAAAAAHVM/TKCA47Imle4DD6yRa7WqfIvEJRwpmWvrgCLcBGAs/s72-c/Jetpack-nav-icon.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/android-jetpack-navigation-stable.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-2513614577674502188</id><published>2019-03-13T12:34:00.000-07:00</published><updated>2019-03-13T15:44:57.154-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="androidq" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Location" /><category scheme="http://www.blogger.com/atom/ns#" term="Privacy" /><title type="text">Introducing Android Q Beta</title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-Wm3KPSIuHM8/XIlAGvEITXI/AAAAAAAAHT8/rKVGEctVu6gNPy0zyYgpzCSYcem-RK0EwCLcBGAs/s1600/image1.png"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-Wm3KPSIuHM8/XIlAGvEITXI/AAAAAAAAHT8/rKVGEctVu6gNPy0zyYgpzCSYcem-RK0EwCLcBGAs/s1600/image1.png"&gt;
&lt;p&gt;&lt;i&gt;Posted by Dave Burke, VP of Engineering&lt;/i&gt;&lt;/p&gt;

&lt;a href="https://2.bp.blogspot.com/-Wm3KPSIuHM8/XIlAGvEITXI/AAAAAAAAHT8/rKVGEctVu6gNPy0zyYgpzCSYcem-RK0EwCLcBGAs/s1600/image1.png" imageanchor="1" &gt;&lt;img id="floatRight" border="0" src="https://2.bp.blogspot.com/-Wm3KPSIuHM8/XIlAGvEITXI/AAAAAAAAHT8/rKVGEctVu6gNPy0zyYgpzCSYcem-RK0EwCLcBGAs/s1600/image1.png" data-original-width="1197" data-original-height="1217" /&gt;&lt;/a&gt;
&lt;p&gt;
In 2019, mobile innovation is stronger than ever, with new technologies from 5G to edge to edge displays and even foldable screens. &lt;a href="https://www.blog.google/products/android/shaping-future-mobile-android/"&gt;Android is right at the center of this innovation cycle&lt;/a&gt;, and thanks to the broad ecosystem of partners across billions of devices, Android's helping push the boundaries of hardware and software bringing new experiences and capabilities to users. 
&lt;/p&gt;
&lt;p&gt;
As the mobile ecosystem evolves, Android is focused on helping users take advantage of the latest innovations, while making sure users' security and privacy are always a top priority. Building on top of efforts like Google Play Protect and runtime permissions, Android Q brings a number of additional privacy and security features for users, as well as enhancements for foldables, new APIs for connectivity, new media codecs and camera capabilities, NNAPI extensions, Vulkan 1.1 support, faster app startup, and more. 
&lt;/p&gt;
&lt;p&gt;
Today we're releasing Beta 1 of Android Q for early adopters and a preview SDK for developers. You can get started with Beta 1 today by &lt;a href="https://www.google.com/android/beta"&gt;enrolling any Pixel device &lt;/a&gt;(including the original Pixel and Pixel XL, which we've extended support for by popular demand!) Please &lt;a href="https://developer.android.com/preview/feedback"&gt;let us know what you think&lt;/a&gt;! Read on for a taste of what's in Android Q, and we'll see you at &lt;a href="https://events.google.com/io/"&gt;Google I/O in May&lt;/a&gt; when we'll have even more to share.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Building on top of privacy protections in Android&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
Android was designed with security and privacy at the center. As Android has matured, we've added a wide range of features to protect users, like &lt;a href="https://source.android.com/security/encryption/file-based"&gt;file-based encryption&lt;/a&gt;, OS controls requiring apps to &lt;a href="https://developer.android.com/guide/topics/permissions/overview"&gt;request permission before accessing sensitive resources&lt;/a&gt;, locking down &lt;a href="https://www.theverge.com/2018/3/7/17091104/android-p-prevents-apps-using-mic-camera-idle-background"&gt;camera/mic background access&lt;/a&gt;, &lt;a href="https://www.computerworld.com/article/3297039/android-pie-security-setting.html"&gt;lockdown mode&lt;/a&gt;, &lt;a href="https://security.googleblog.com/2018/10/google-and-android-have-your-back-by.html"&gt;encrypted backups&lt;/a&gt;, &lt;a href="https://www.android.com/play-protect/"&gt;Google Play Protect&lt;/a&gt; (which scans over 50 billion apps a day to identify potentially harmful apps and remove them), and much more. In Android Q, we've made even more enhancements to protect our users. Many of these enhancements are part of our work in &lt;a href="https://www.blog.google/technology/safety-security/project-strobe/"&gt;Project Strobe&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;Giving users more control over location&lt;/strong&gt;&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
With Android Q, the OS helps users have more control over when apps can get location. As in prior versions of the OS, apps can only get location once the app has asked you for permission, and you have granted it. 
&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-SjQo1eAXQh4/XIlA_K0qoyI/AAAAAAAAHUI/-TTT_jniG-4zMU_Cs2Uv_8uaj9BYzmj8QCLcBGAs/s1600/Screen%2BShot%2B2019-03-13%2Bat%2B10.42.10%2BAM.png" imageanchor="1" &gt;&lt;img id="floatRight" border="0" src="https://4.bp.blogspot.com/-SjQo1eAXQh4/XIlA_K0qoyI/AAAAAAAAHUI/-TTT_jniG-4zMU_Cs2Uv_8uaj9BYzmj8QCLcBGAs/s1600/Screen%2BShot%2B2019-03-13%2Bat%2B10.42.10%2BAM.png" data-original-width="592" data-original-height="520" /&gt;&lt;/a&gt;
&lt;p&gt;
One thing that's particularly sensitive is apps' access to location while the app is not in use (in the background). Android Q enables users to give apps permission to see their location never, only when the app is in use (running), or all the time (when in the background). 
&lt;/p&gt;
&lt;p&gt;
For example, an app asking for a user's location for food delivery makes sense and the user may want to grant it the ability to do that. But since the app may not need location outside of when it's currently in use, the user may not want to grant that access. Android Q now offers this greater level of control. Read the &lt;a href="https://developer.android.com/preview/privacy/device-location"&gt;developer guide&lt;/a&gt; for details on how to adapt your app for this new control. Look for more user-centric improvements to come in upcoming Betas. At the same time, our goal is to be very sensitive to always give developers as much notice and support as possible with these changes. 
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;More privacy protections in Android Q&lt;/strong&gt;&lt;/h3&gt; 
&lt;/p&gt;
&lt;p&gt;
Beyond changes to location, we're making further updates to ensure transparency, give users control, and secure personal data. 
&lt;/p&gt;
&lt;p&gt;
In Android Q, the OS gives users even more control over apps, controlling access to shared files. Users will be able to control apps' access to the Photos and Videos or the Audio collections via new runtime permissions. For Downloads, apps must use the system file picker, which allows the user to decide which Download files the app can access. For developers, there are changes to how your apps can use shared areas on external storage. Make sure to read the &lt;a href="https://developer.android.com/preview/privacy/scoped-storage"&gt;Scoped Storage changes&lt;/a&gt; for details. 
&lt;/p&gt;
&lt;p&gt;
We've also seen that users (and developers!) get upset when an app unexpectedly jumps into the foreground and takes over focus. To reduce these interruptions, Android Q will prevent apps from launching an Activity while in the background. If your app is in the background and needs to get the user's attention quickly -- such as for incoming calls or alarms -- you can use a high-priority notification and provide a full-screen intent. See the &lt;a href="https://developer.android.com/preview/privacy/background-activity-starts"&gt;documentation&lt;/a&gt; for more information. 
&lt;/p&gt;
&lt;p&gt;
We're limiting access to non-resettable device identifiers, including device IMEI, serial number, and similar identifiers. Read the &lt;a href="https://developer.android.com/training/articles/user-data-ids"&gt;best practices&lt;/a&gt; to help you choose the right identifiers for your use case, and see the details &lt;a href="https://developer.android.com/preview/privacy/data-identifiers"&gt;here&lt;/a&gt;. We're also randomizing the device's MAC address when connected to different Wi-Fi networks by default -- a setting that was optional in Android 9 Pie. 
&lt;/p&gt;
&lt;p&gt;
We are bringing these changes to you early, so you can have as much time as possible to prepare. We've also worked hard to provide developers detailed information up front, we recommend reviewing the &lt;a href="https://developer.android.com/preview/privacy"&gt;detailed docs&lt;/a&gt; on the privacy changes and getting started with testing right away. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;New ways to engage users&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
In Android Q, we're enabling new ways to bring users into your apps and streamlining the experience as they transition from other apps. 
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;Foldables and innovative new screens&lt;/strong&gt;&lt;/h3&gt; 
&lt;/p&gt;
&lt;p&gt;
Foldable devices have opened up some innovative experiences and use-cases. To help your apps to take advantage of these and other large-screen devices, we've made a number of improvements in Android Q, including changes to &lt;a href="https://developer.android.com/reference/android/app/Activity.html#onResume()"&gt;onResume&lt;/a&gt; and &lt;a href="https://developer.android.com/reference/android/app/Activity.html#onPause()"&gt;onPause&lt;/a&gt; to support multi-resume and notify your app when it has focus. We've also changed how the &lt;a href="https://developer.android.com/guide/topics/ui/multi-window#resizeableActivity"&gt;resizeableActivity&lt;/a&gt; manifest attribute works, to help you manage how your app is displayed on foldable and large screens. To you get started building and testing on these new devices, we've been hard at work updating the Android Emulator to support multiple-display type switching -- more details coming soon!
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://3.bp.blogspot.com/-gBNa9iX6SwM/XIlBPdA9zZI/AAAAAAAAHUU/FNo7gGkim80fbcv2AulqGQ23OP0RAXtSgCLcBGAs/s1600/image5.png" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://3.bp.blogspot.com/-gBNa9iX6SwM/XIlBPdA9zZI/AAAAAAAAHUU/FNo7gGkim80fbcv2AulqGQ23OP0RAXtSgCLcBGAs/s1600/image5.png" data-original-width="1139" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Sharing shortcuts&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
When a user wants to share content like a photo with someone in another app, the process should be fast. In Android Q we're making this quicker and easier with Sharing Shortcuts, which let users jump directly into another app to share content. Developers can publish share targets that launch a specific activity in their apps with content attached, and these are shown to users in the share UI. Because they're published in advance, the share UI can load instantly when launched.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://3.bp.blogspot.com/-RkmYMCED0LQ/XIlBXSPClFI/AAAAAAAAHUY/KJeUcHjMHBE9yCEG3a80_PXTMwRC-vK-ACLcBGAs/s1600/image6.png" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://3.bp.blogspot.com/-RkmYMCED0LQ/XIlBXSPClFI/AAAAAAAAHUY/KJeUcHjMHBE9yCEG3a80_PXTMwRC-vK-ACLcBGAs/s1600/image6.png" data-original-width="692" data-original-height="683" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
The Sharing Shortcuts mechanism is similar to how App Shortcuts works, so we've expanded the &lt;a href="https://developer.android.com/reference/android/content/pm/ShortcutInfo"&gt;ShortcutInfo API&lt;/a&gt; to make the integration of both features easier. This new API is also supported in the new ShareTarget AndroidX library. This allows apps to use the new functionality, while allowing pre-Q devices to work using Direct Share. You can find an early sample app with &lt;a href="https://github.com/googlesamples/android-SharingShortcuts"&gt;source code here&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Settings Panels&lt;/strong&gt;&lt;/h3&gt;

&lt;a href="https://2.bp.blogspot.com/-A_ehyv21a0E/XIlBnv8YccI/AAAAAAAAHUc/wF6gdygvUuwj4GEu8d2ThgkGtfXupX_WgCLcBGAs/s1600/image4.png" imageanchor="1" &gt;&lt;img id="floatRight" style="width: 40%" border="0" src="https://2.bp.blogspot.com/-A_ehyv21a0E/XIlBnv8YccI/AAAAAAAAHUc/wF6gdygvUuwj4GEu8d2ThgkGtfXupX_WgCLcBGAs/s1600/image4.png" data-original-width="801" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;p&gt;
You can now also show key system settings directly in the context of your app, through a new &lt;a href="https://developer.android.com/reference/android/provider/Settings.Panel"&gt;Settings Panel API&lt;/a&gt;, which takes advantage of the Slices feature that we introduced in Android 9 Pie. 
&lt;/p&gt;
&lt;p&gt;
A settings panel is a floating UI that you invoke from your app to show system settings that users might need, such as internet connectivity, NFC, and audio volume. For example, a browser could display a panel with connectivity settings like Airplane Mode, Wi-Fi (including nearby networks), and Mobile Data. There's no need to leave the app; users can manage settings as needed from the panel. To display a settings panel, just fire an intent with one of the new &lt;a href="https://developer.android.com/reference/android/provider/Settings.Panel.html#ACTION_INTERNET_CONNECTIVITY"&gt;Settings.Panel actions&lt;/a&gt;. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Connectivity&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;
In Android Q, we've extended what your apps can do with Android's connectivity stack and added new connectivity APIs.  
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Connectivity permissions, privacy, and security &lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
Most of our APIs for scanning networks already require COARSE location permission, but in Android Q, for Bluetooth, Cellular and Wi-Fi, we're increasing the protection around those APIs by requiring the FINE location permission instead. If your app only needs to make peer-to-peer connections or suggest networks, check out the improved Wi-Fi APIs below -- they simplify connections and do not require location permission. 
&lt;/p&gt;
&lt;p&gt;
In addition to the randomized MAC addresses that Android Q provides when connected to different Wi-Fi networks, we're adding new Wi-Fi standard support, WPA3 and Enhanced Open, to improve security for home and work networks as well as open/public networks.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Improved peer-to-peer and internet connectivity&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
In Android Q we refactored the Wi-Fi stack to improve privacy and performance, but also to improve common use-cases like managing IoT devices and suggesting internet connections -- without requiring the location permission. 
&lt;/p&gt;
&lt;p&gt;
The network connection APIs make it easier to manage IoT devices over local Wi-Fi, for peer-to-peer functions like configuring, downloading, or printing. Apps initiate connection requests indirectly by specifying preferred SSIDs &amp; BSSIDs as &lt;a href="https://developer.android.com/reference/android/net/NetworkSpecifier.html"&gt;WiFiNetworkSpecifiers&lt;/a&gt;. The platform handles the Wi-Fi scanning itself and displays matching networks in a Wi-Fi Picker. When the user chooses, the platform sets up the connection automatically. 
&lt;/p&gt;
&lt;p&gt;
The&lt;strong&gt; &lt;/strong&gt;network suggestion APIs let apps surface preferred Wi-Fi networks to the user for internet connectivity. Apps initiate connections indirectly by providing a ranked list of networks and credentials as &lt;a href="https://developer.android.com/reference/android/net/wifi/WifiNetworkSuggestion"&gt;WifiNetworkSuggestions&lt;/a&gt;. The platform will seamlessly connect based on past performance when in range of those networks. 
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Wi-Fi performance mode&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
You can now request adaptive Wi-Fi in Android Q by enabling high performance and low latency modes. These will be of great benefit where low latency is important to the user experience, such as real-time gaming, active voice calls, and similar use-cases. 
&lt;/p&gt;
&lt;p&gt;
To use the new performance modes, call &lt;a href="https://developer.android.com/reference/android/net/wifi/WifiManager.html#createWifiLock(int,%20java.lang.String)"&gt;WifiManager.WifiLock.createWifiLock()&lt;/a&gt; with &lt;code&gt;WIFI_MODE_FULL_LOW_LATENCY&lt;/code&gt; or &lt;code&gt;WIFI_MODE_FULL_HIGH_PERF&lt;/code&gt;. In these modes, the platform works with the device firmware to meet the requirement with lowest power consumption. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Camera, media, graphics&lt;/strong&gt;&lt;/h2&gt;


&lt;h3&gt;&lt;strong&gt;Dynamic depth format for photos&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
Many cameras on mobile devices can simulate narrow depth of field by blurring the foreground or background relative to the subject. They capture depth metadata for various points in the image and apply a static blur to the image, after which they discard the depth metadata. 
&lt;/p&gt;
&lt;p&gt;
Starting in Android Q, apps can request a Dynamic Depth image which consists of a JPEG, XMP metadata related to depth related elements, and a depth and confidence map embedded in the same file on devices that advertise support.
&lt;/p&gt;
&lt;p&gt;
Requesting a JPEG + Dynamic Depth image makes it possible for you to offer specialized blurs and bokeh options in your app. You can even use the data to create 3D images or support AR photography use-cases in the future. We're making Dynamic Depth an open format for the ecosystem, and we're working with our device-maker partners to make it available across devices running Android Q and later. 
&lt;/p&gt;
&lt;div id="flexParent"&gt;
&lt;a href="https://2.bp.blogspot.com/-F53aulHX6gc/XIlBzhqLdrI/AAAAAAAAHUk/zUvJVu6qemcXZujuCzYYIO1Aj-KqeVLrQCLcBGAs/s1600/image2.jpg" imageanchor="1" &gt;&lt;img id="flexImg" border="0" src="https://2.bp.blogspot.com/-F53aulHX6gc/XIlBzhqLdrI/AAAAAAAAHUk/zUvJVu6qemcXZujuCzYYIO1Aj-KqeVLrQCLcBGAs/s1600/image2.jpg" data-original-width="1592" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;a href="https://1.bp.blogspot.com/-oOLUaMTB--g/XIlB3cWeJhI/AAAAAAAAHUs/JVu7XQF6lFIbd7CLKvdsiNrkD3AXf1VsACLcBGAs/s1600/image3.jpg" imageanchor="1" &gt;&lt;img id="flexImg" border="0" src="https://1.bp.blogspot.com/-oOLUaMTB--g/XIlB3cWeJhI/AAAAAAAAHUs/JVu7XQF6lFIbd7CLKvdsiNrkD3AXf1VsACLcBGAs/s1600/image3.jpg" data-original-width="1592" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;a href="https://2.bp.blogspot.com/-kofZwHywF9g/XIlB3f3dXAI/AAAAAAAAHUo/MC34MKMspsgZ-9l39dFc0z4Kl2I3fAzDwCLcBGAs/s1600/image8.jpg" imageanchor="1" &gt;&lt;img id="flexImg" border="0" src="https://2.bp.blogspot.com/-kofZwHywF9g/XIlB3f3dXAI/AAAAAAAAHUo/MC34MKMspsgZ-9l39dFc0z4Kl2I3fAzDwCLcBGAs/s1600/image8.jpg" data-original-width="1593" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;div id="imgCaption"&gt;With Dynamic Depth image you can offer specialized blurs and bokeh options in your app.&lt;/div&gt;
&lt;h3&gt;&lt;strong&gt;New audio and video codecs&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
Android Q introduces support for the open source video codec &lt;a href="https://en.wikipedia.org/wiki/AV1"&gt;AV1&lt;/a&gt;. This allows media providers to stream high quality video content to Android devices &lt;a href="https://en.wikipedia.org/wiki/AV1#Quality_and_efficiency"&gt;using less bandwidth&lt;/a&gt;. In addition, Android Q supports audio encoding using &lt;a href="http://opus-codec.org/"&gt;Opus&lt;/a&gt; - a codec optimized for speech and music streaming, and &lt;a href="https://en.wikipedia.org/wiki/High-dynamic-range_video#HDR10+"&gt;HDR10+&lt;/a&gt; for high dynamic range video on devices that support it.
&lt;/p&gt;
&lt;p&gt;
The &lt;a href="https://developer.android.com/reference/android/media/MediaCodecInfo"&gt;MediaCodecInfo API&lt;/a&gt; introduces an easier way to determine the video rendering capabilities of an Android device. For any given codec, you can obtain a list of supported sizes and frame rates using VideoCodecCapabilities.getSupportedPerformancePoints(). This allows you to pick the best quality video content to render on any given device. 
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Native MIDI API&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
For apps that perform their audio processing in C++, Android Q introduces a &lt;a href="https://developer.android.com/preview/features/midi"&gt;native MIDI API&lt;/a&gt; to communicate with MIDI devices through the NDK. This API allows MIDI data to be retrieved inside an audio callback using a non-blocking read, enabling low latency processing of MIDI messages. Give it a try with the sample app and &lt;a href=" http://github.com/googlesamples/android-ndk/tree/master/native-midi"&gt;source code here&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;ANGLE on Vulkan &lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
To enable more consistency for game and graphics developers, we are working towards a standard, updateable OpenGL driver for all devices built on Vulkan. In Android Q we're adding experimental support for &lt;a href="https://chromium.googlesource.com/angle/angle/+/master/README.md"&gt;ANGLE&lt;/a&gt; on top of Vulkan on Android devices. ANGLE is a graphics abstraction layer designed for high-performance OpenGL compatibility across implementations. Through ANGLE, the many apps and games using OpenGL ES can take advantage of the performance and stability of Vulkan and benefit from a consistent, vendor-independent implementation of ES on Android devices. In Android Q, we're planning to support OpenGL ES 2.0, with ES 3.0 next on our roadmap. 
&lt;/p&gt;
&lt;p&gt;We'll expand the implementation with more OpenGL functionality, bug fixes, and performance optimizations. See &lt;a href="https://developer.android.com/preview/features#angle"&gt;the docs&lt;/a&gt; for details on the current ANGLE support in Android, how to use it, and our plans moving forward. You can start testing with our initial support by opting-in through developer options in Settings. Give it a try today!&lt;/p&gt;


&lt;h3&gt;&lt;strong&gt;Vulkan everywhere&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
We're continuing to expand the impact of &lt;a href="https://www.khronos.org/vulkan/"&gt;Vulkan&lt;/a&gt; on Android, &lt;a href="https://developer.android.com/ndk/guides/graphics/"&gt;our implementation&lt;/a&gt; of the low-overhead, cross-platform API for high-performance 3D graphics. Our goal is to make Vulkan on Android a broadly supported and consistent developer API for graphics. We're working together with our device manufacturer partners to make Vulkan 1.1 a requirement on all 64-bit devices running Android Q and higher, and a recommendation for all 32-bit devices. Going forward, this will help provide a uniform high-performance graphics API for apps and games to use. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Neural Networks API 1.2&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
Since introducing the Neural Networks API (NNAPI) in 2017, we've continued to expand the number of operations supported and improve existing functionality. In Android Q, we've added 60 new ops including ARGMAX, ARGMIN, quantized LSTM, alongside a range of performance optimisations. This lays the foundation for accelerating a much greater range of models -- such as those for object detection and image segmentation. We are working with hardware vendors and popular machine learning frameworks such as &lt;a href="https://www.tensorflow.org/"&gt;TensorFlow&lt;/a&gt; to optimize and roll out support for NNAPI 1.2.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Strengthening Android's Foundations&lt;/strong&gt;&lt;/h2&gt;


&lt;h3&gt;&lt;strong&gt;ART performance&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
Android Q introduces several new improvements to the ART runtime which help apps start faster and consume less memory, without requiring any work from developers.
&lt;/p&gt;
&lt;p&gt;
Since Android Nougat, ART has offered &lt;a href="https://source.android.com/devices/tech/dalvik/jit-compiler"&gt;Profile Guided Optimization&lt;/a&gt; (PGO), which speeds app startup over time by identifying and precompiling frequently executed parts of your code. To help with initial app startup, Google Play is now delivering cloud-based profiles along with APKs. These are anonymized, aggregate ART profiles that let ART pre-compile parts of your app even before it's run, giving a significant jump-start to the overall optimization process. Cloud-based profiles benefit all apps and they're already available to devices running Android P and higher.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://1.bp.blogspot.com/-LFPLMNA_LTM/XIlC8cIe4UI/AAAAAAAAHVA/OsvJGFGLT3ssl1G6pfEK9PngCQiMfPgZwCLcBGAs/s1600/image7.png" imageanchor="1" &gt;&lt;img 
id="imgFull" style="width: 70%" border="0" src="https://1.bp.blogspot.com/-LFPLMNA_LTM/XIlC8cIe4UI/AAAAAAAAHVA/OsvJGFGLT3ssl1G6pfEK9PngCQiMfPgZwCLcBGAs/s1600/image7.png" data-original-width="1276" data-original-height="738" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
We're also continuing to make improvements in ART itself. For example, in Android Q we've optimized the Zygote process by starting your app's process earlier and moving it to a security container, so it's ready to launch immediately. We're storing more information in the app's heap image, such as classes, and using threading to load the image faster. We're also adding Generational Garbage Collection to ART's Concurrent Copying (CC) Garbage Collector. Generational CC is more efficient as it collects young-generation objects separately, incurring much lower cost as compared to full-heap GC, while still reclaiming a good amount of space. This makes garbage collection overall more efficient in terms of time and CPU, reducing jank and helping apps run better on lower-end devices.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Security for apps&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
&lt;a href="https://developer.android.com/reference/android/hardware/biometrics/package-summary"&gt;BiometricPrompt&lt;/a&gt; is our unified authentication framework to support biometrics at a system level. In Android Q we're extending support for passive authentication methods such as face, and adding implicit and explicit authentication flows. In the explicit flow, the user must explicitly confirm the transaction in the TEE during the authentication. The implicit flow is designed for a lighter-weight alternative for transactions with passive authentication. We've also improved the fallback for device credentials when needed. 
&lt;/p&gt;
&lt;p&gt;
Android Q adds support for &lt;a href="https://www.ietf.org/blog/tls13/"&gt;TLS 1.3&lt;/a&gt;, a major revision to the TLS standard that includes performance benefits and enhanced security. Our benchmarks indicate that secure connections can be established as much as 40% faster with TLS 1.3 compared to TLS 1.2. TLS 1.3 is enabled by default for all TLS connections. See the &lt;a href="https://developer.android.com/preview/features#tls-1.3"&gt;docs&lt;/a&gt; for details.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Compatibility through public APIs &lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
Another thing we all care about is ensuring that apps run smoothly as the OS changes and evolves. Apps using non-SDK APIs risk crashes for users and emergency rollouts for developers. In Android Q we're continuing our long-term effort &lt;a href="https://developer.android.com/about/versions/pie/restrictions-non-sdk-interfaces"&gt;begun in Android P&lt;/a&gt; to move apps toward only using public APIs. We know that moving your app away from non-SDK APIs will take time, so we're giving you &lt;a href="https://android-developers.googleblog.com/2018/02/improving-stability-by-reducing-usage.html"&gt;advance&lt;/a&gt; &lt;a href="https://android-developers.googleblog.com/2018/06/an-update-on-non-sdk-restrictions-in.html"&gt;notice&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
In Android Q we're restricting access to &lt;a href="https://developer.android.com/preview/non-sdk-q#greylist-now-restricted"&gt;more non-SDK interfaces&lt;/a&gt; and asking you to use the public equivalents instead. To help you make the transition and prevent your apps from breaking, we're enabling the restrictions only when your app is targeting Android Q. We'll continue adding public alternative APIs based on your requests; in cases where there is no public API that meets your use case, please &lt;a href="https://issuetracker.google.com/issues/new?component=328403&amp;template=1027267"&gt;let us know&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
It's important to &lt;a href="https://developer.android.com/distribute/best-practices/develop/restrictions-non-sdk-interfaces#test-for-non-sdk"&gt;test your apps&lt;/a&gt; for uses of non-SDK interfaces. We recommend using the StrictMode method &lt;a href="https://developer.android.com/reference/android/os/StrictMode.VmPolicy.Builder#detectNonSdkApiUsage()"&gt;detectNonSdkApiUsage()&lt;/a&gt; to warn when your app accesses non-SDK APIs via reflection or JNI. Even if the APIs are exempted (grey-listed) at this time, it's best to plan for the future and eliminate their use to reduce compatibility issues. For more details on the restrictions in Android Q, see the &lt;a href="https://developer.android.com/preview/non-sdk-q"&gt;developer guide&lt;/a&gt;.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Modern Android&lt;/strong&gt;&lt;/h3&gt;


&lt;p&gt;
We're expanding our efforts to have all apps take full advantage of the security and performance features in the latest version of Android. Later this year, Google Play will require you to &lt;a href="https://android-developers.googleblog.com/2019/02/expanding-target-api-level-requirements.html"&gt;set your app's targetSdkVersion to 28&lt;/a&gt; (Android 9 Pie) in new apps and updates. In line with these changes, Android Q will warn users with a dialog when they first run an app that targets a platform earlier than API level 23 (Android Marshmallow). Here's a &lt;a href="https://developer.android.com/distribute/best-practices/develop/target-sdk.html"&gt;checklist of resources&lt;/a&gt; to help you migrate your app.
&lt;/p&gt;
&lt;p&gt;
We're also moving the ecosystem toward readiness for 64-bit devices. Later this year, Google Play will require &lt;a href="https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html"&gt;64-bit support in all apps&lt;/a&gt;. If your app uses native SDKs or libraries, keep in mind that you'll need to provide 64-bit compliant versions of those SDKs or libraries. See the &lt;a href="https://developer.android.com/distribute/best-practices/develop/64-bit"&gt;developer guide&lt;/a&gt; for details on how to get ready.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Get started with Android Q Beta&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
With important privacy features that are likely to affect your apps, we recommend getting started with testing right away. In particular, you'll want to enable and test with Android Q storage changes, new location permission states, restrictions on background app launch, and restrictions on device identifiers. See the &lt;a href="https://developer.android.com/preview/privacy"&gt;privacy documentation&lt;/a&gt; for details. 
&lt;/p&gt;
&lt;p&gt;
To get started, just install your current app from Google Play onto a device or &lt;a href="https://developer.android.com/studio/run/managing-avds.html"&gt;Android Virtual Device&lt;/a&gt; running Android Q Beta and work through the user flows. The app should run and look great, and handle the Android Q &lt;a href="https://developer.android.com/preview/behavior-changes-all"&gt;behavior changes for all apps&lt;/a&gt; properly. If you find issues, we recommend fixing them in the current app, without changing your targeting level. Take a look at the &lt;a href="https://developer.android.com/preview/migration.html"&gt;migration guide&lt;/a&gt; for steps and a recommended timeline.
&lt;/p&gt;
&lt;p&gt;
Next, update your app's targetSdkVersion to 'Q' as soon as possible. This lets you test your app with all of the privacy and security features in Android Q, as well as any other &lt;a href="https://developer.android.com/preview/behavior-changes-29"&gt;behavior changes for apps targeting Q&lt;/a&gt;.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Explore the new features and APIs&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
When you're ready, dive into Android Q and learn about the &lt;a href="https://developer.android.com/preview/features"&gt;new features and APIs&lt;/a&gt; you can use in your apps. Take a look at the &lt;a href="https://developer.android.com/sdk/api_diff/q-beta1/changes.html"&gt;API diff report&lt;/a&gt;, the Android Q Beta &lt;a href="https://developer.android.com/reference/packages.html"&gt;API reference&lt;/a&gt;, and developer guides as a starting point. Also, on the &lt;a href="https://developer.android.com/preview/index.html"&gt;Android Q Beta developer site&lt;/a&gt;, you'll find &lt;a href="https://developer.android.com/preview/release-notes.html"&gt;release notes&lt;/a&gt; and &lt;a href="https://developer.android.com/preview/feedback.html"&gt;support resources&lt;/a&gt; for reporting issues. 
&lt;/p&gt;
&lt;p&gt;
To build with Android Q, download the Android Q Beta SDK and tools into Android Studio 3.3 or higher, and follow &lt;a href="https://developer.android.com/preview/setup-sdk"&gt;these&lt;/a&gt; instructions to configure your environment. If you want the latest fixes for Android Q related changes, we recommend you use &lt;a href="https://developer.android.com/studio/preview/"&gt;Android Studio 3.5&lt;/a&gt; or higher.
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;How do I get Android Q Beta?&lt;/strong&gt;&lt;/h2&gt;


&lt;p&gt;
It's easy - you can &lt;a href="https://www.google.com/android/beta"&gt;enroll here&lt;/a&gt; to get Android Q Beta updates over-the-air, on any Pixel device (and this year we're supporting all three generations of Pixel -- Pixel 3, Pixel 2, and even the original Pixel!). Downloadable system images for those devices are also &lt;a href="https://developer.android.com/preview/download"&gt;available&lt;/a&gt;. If you don't have a Pixel device, you can use the Android Emulator, and download the latest emulator system images via the SDK Manager in Android Studio.
&lt;/p&gt;
&lt;p&gt;
We plan to update the preview system images and SDK regularly throughout the preview. We'll have more features to share as the Beta program moves forward. 
&lt;/p&gt;
&lt;p&gt;
As always, your feedback is critical, so please &lt;a href="https://developer.android.com/preview/feedback.html"&gt;let us know what you think&lt;/a&gt; — the sooner we hear from you, the more of your feedback we can integrate. When you find issues, please &lt;a href="https://developer.android.com/preview/bug"&gt;report them here&lt;/a&gt;. We have separate hotlists for filing &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1226573"&gt;platform issues&lt;/a&gt;, &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1227376"&gt;app compatibility issues&lt;/a&gt;, and &lt;a href="https://issuetracker.google.com/issues/new?component=190602&amp;template=1227583"&gt;third-party SDK issues&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=g981RbHQy8A:gTClU6E82GY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=g981RbHQy8A:gTClU6E82GY:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=g981RbHQy8A:gTClU6E82GY:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/g981RbHQy8A" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2513614577674502188" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/2513614577674502188" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/g981RbHQy8A/introducing-android-q-beta.html" title="Introducing Android Q Beta" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-Wm3KPSIuHM8/XIlAGvEITXI/AAAAAAAAHT8/rKVGEctVu6gNPy0zyYgpzCSYcem-RK0EwCLcBGAs/s72-c/image1.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/introducing-android-q-beta.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-8371668839647898163</id><published>2019-03-12T23:00:00.000-07:00</published><updated>2019-03-12T23:00:11.262-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="android developers" /><category scheme="http://www.blogger.com/atom/ns#" term="business" /><category scheme="http://www.blogger.com/atom/ns#" term="competition" /><category scheme="http://www.blogger.com/atom/ns#" term="developer" /><category scheme="http://www.blogger.com/atom/ns#" term="Europe" /><category scheme="http://www.blogger.com/atom/ns#" term="event" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Games" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="grow" /><category scheme="http://www.blogger.com/atom/ns#" term="indie" /><category scheme="http://www.blogger.com/atom/ns#" term="Indie games showcase" /><category scheme="http://www.blogger.com/atom/ns#" term="Indie showcase" /><category scheme="http://www.blogger.com/atom/ns#" term="indies" /><category scheme="http://www.blogger.com/atom/ns#" term="Japan" /><category scheme="http://www.blogger.com/atom/ns#" term="prizes" /><category scheme="http://www.blogger.com/atom/ns#" term="showcase" /><category scheme="http://www.blogger.com/atom/ns#" term="South Korea" /><category scheme="http://www.blogger.com/atom/ns#" term="win" /><title type="text">Grow your indie game with Google Play</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-b_K12r90sik/XIfzGvdfHLI/AAAAAAAAHTw/McmsdzXOjbU2pexKAOFX6gkwn2FNIgpkwCLcBGAs/s1600/Android%2BDeveloper%2BBlog%2B%25281200x600%2529.png"&gt;
&lt;img style="display:none" src="https://4.bp.blogspot.com/-b_K12r90sik/XIfzGvdfHLI/AAAAAAAAHTw/McmsdzXOjbU2pexKAOFX6gkwn2FNIgpkwCLcBGAs/s1600/Android%2BDeveloper%2BBlog%2B%25281200x600%2529.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Patricia Correa, Director, Platforms &amp; Ecosystems Developer Marketing&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Google Play empowers game developers of all sizes to engage and delight people everywhere, and build successful businesses too. We are inspired by the passion and creativity we see from the indie games community, and, over the past few years, we've invested in and nurtured indie games developers around the world, helping them express their unique voice and bring ideas to life.
&lt;/p&gt;
&lt;p&gt;
This year, we've put together several initiatives to help the indie community.
&lt;/p&gt;
&lt;h2&gt;Indie Games Showcase&lt;/h2&gt;

&lt;p&gt;
For indie developers who are constantly pushing the boundaries of storytelling, visual excellence, and creativity in mobile we are announcing today the &lt;strong&gt;&lt;a href="https://g.co/indiegames  "&gt;Indie Games Showcase&lt;/a&gt;,&lt;/strong&gt; an international competition for games studios from Europe*, South Korea and Japan. Those of you who meet the eligibility criteria (as outlined below) can enter your game for a chance to win several prizes, including: 
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;A paid trip and accommodation to the final event in your region to showcase your game.

&lt;li&gt;Promotion on the Google Play Store.

&lt;li&gt;Promotion on Android and Google Play marketing channels.

&lt;li&gt;Dedicated consultations with the Google Play team.

&lt;li&gt;Google hardware.

&lt;li&gt;And more...
&lt;/li&gt;
&lt;/ul&gt;

&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/srreeKoUz7Q" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;
&lt;em&gt;How to enter the competition&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
If you're over 18 years old, based in one of the eligible countries, have 30 or less full time employees, and have published a new game on Google Play after 1 January 2018, you can enter your game. If you're planning on publishing a new game soon, you can also enter by submitting a private beta. Submissions close on &lt;strong&gt;May 6 2019&lt;/strong&gt;. Check out all the details in the terms and conditions for each region. &lt;strong&gt;&lt;a href="https://g.co/indiegames"&gt;Enter now&lt;/a&gt;&lt;/strong&gt;!
&lt;/p&gt;
&lt;h2&gt;Indie Games Accelerator&lt;/h2&gt;


&lt;p&gt;
Last year we launched our first games accelerator for developers in Southeast Asia, India and Pakistan and saw great results. We are happy to announce that we are expanding the format to accept developers from select countries in the Middle East, Africa, and Latin America, with applications for the 2019 cohort opening soon. The &lt;a href="https://www.youtube.com/watch?v=FErjDx0aAUk&amp;feature=youtu.be"&gt;Indie Games Accelerator&lt;/a&gt; is a 6 month intensive program for top games startups, powered by mentors from the gaming industry as well as Google experts, offering a comprehensive curriculum that covers all aspects of building a great game and company.
&lt;/p&gt;
&lt;h2&gt;Mobile Developer Day at GDC&lt;/h2&gt;


&lt;p&gt;
We will be hosting our annual &lt;a href="https://events.withgoogle.com/google-at-gdc-2019/"&gt;Developer Day&lt;/a&gt; at the Game Developers Conference in San Francisco on&lt;strong&gt; Monday, March 18th&lt;/strong&gt;. Join us for a full day of sessions covering tools and best practices to help build a successful mobile games business. We'll focus on game quality, effective monetization and growth strategies, and how to create, connect, and scale with Google. &lt;a href="https://events.withgoogle.com/google-at-gdc-2019/registrations/new/"&gt;Sign up&lt;/a&gt; to stay up to date or join us via &lt;a href="https://events.withgoogle.com/google-at-gdc-2019/livestream/#content"&gt;livestream&lt;/a&gt;. 
&lt;/p&gt;
&lt;h2&gt;Developer Days &lt;/h2&gt;


&lt;p&gt;
We also want to engage with you in person with a series of events. We will be announcing them shortly, so please make sure to sign up to &lt;a href="http://g.co/play/devnews"&gt;our newsletter&lt;/a&gt; to get notified about events and programs for indie developers. 
&lt;/p&gt;
&lt;h2&gt;Academy for App Success&lt;/h2&gt;


&lt;p&gt;
Looking for tips on how to use various developer tools in the Play Console? Get free training through our e-learning program, the &lt;a href="http://go/playacademy"&gt;Academy for App Success&lt;/a&gt;. We even have a custom &lt;a href="https://playacademy.exceedlms.com/student/path/11196?utm_source=blog&amp;utm_medium=social&amp;utm_campaign=indie_showcase"&gt;Play Console for game developers&lt;/a&gt; course to get a jump start on Google Play.
&lt;/p&gt;
&lt;p&gt;
We look forward to seeing your amazing work and sharing your creativity with other developers, gamers and industry experts around the world. And don't forget to &lt;a href="https://support.google.com/googleplay/contact/indie_corners"&gt;submit your game&lt;/a&gt; for a chance to get featured on &lt;a href="https://play.google.com/store/apps/editorial_collection/promotion_topic_b000054_games_indie_corner_tp?e=-EnableAppDetailsPageRedesign"&gt;Indie Corner&lt;/a&gt; on Google Play.
&lt;/p&gt;
&lt;p style="font-size:11px"&gt;
&lt;em&gt;* The competition is open to developers from the following European countries: Austria, Belgium, Belarus, Czech Republic, Denmark, Finland, France, Germany, Israel, Italy, Netherlands, Norway, Poland, Romania, Russia, Slovakia, Spain, Sweden, Ukraine, and the United Kingdom (including Northern Ireland).&lt;/em&gt;
&lt;/p&gt;
&lt;br/&gt;
&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=indiegamesshowcase-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=indiegamesshowcase-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=indiegamesshowcase-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=indiegamesshowcase-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=indiegamesshowcase-03/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=XihzluoImMU:7ipwuf44IsU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=XihzluoImMU:7ipwuf44IsU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=XihzluoImMU:7ipwuf44IsU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/XihzluoImMU" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8371668839647898163" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/8371668839647898163" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/XihzluoImMU/grow-your-indie-game-with-google-play.html" title="Grow your indie game with Google Play" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-b_K12r90sik/XIfzGvdfHLI/AAAAAAAAHTw/McmsdzXOjbU2pexKAOFX6gkwn2FNIgpkwCLcBGAs/s72-c/Android%2BDeveloper%2BBlog%2B%25281200x600%2529.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/grow-your-indie-game-with-google-play.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-7622848191974412716</id><published>2019-03-06T10:00:00.000-08:00</published><updated>2019-03-06T10:41:16.369-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android developers" /><category scheme="http://www.blogger.com/atom/ns#" term="Featured" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><title type="text"> Supplement your earnings with rewarded products</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-oAdyHBSKn8U/XHnpldYxVXI/AAAAAAAAGx0/6P3J3K30dYclwLqervNIK9xyQZabsvW4ACLcBGAs/s1600/image4.png"&gt;
&lt;img style="display:none" src="https://4.bp.blogspot.com/-oAdyHBSKn8U/XHnpldYxVXI/AAAAAAAAGx0/6P3J3K30dYclwLqervNIK9xyQZabsvW4ACLcBGAs/s1600/image4.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Patrick Davis, Product Manager, Google Play
&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Developers are increasingly using multiple methods to monetize their apps and games. One trend has been to reward users for a monetizable action, like watching a video, with in-game currency or other benefits. This gives users more choice in how they experience the app or game, and has been an effective way to monetize non-paying users. 
&lt;/p&gt;
&lt;p&gt;
To support this monetization method, Google Play is excited to announce rewarded products, a new product type now available in open beta in the Play Console.
&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-oAdyHBSKn8U/XHnpldYxVXI/AAAAAAAAGx0/6P3J3K30dYclwLqervNIK9xyQZabsvW4ACLcBGAs/s1600/image4.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://4.bp.blogspot.com/-oAdyHBSKn8U/XHnpldYxVXI/AAAAAAAAGx0/6P3J3K30dYclwLqervNIK9xyQZabsvW4ACLcBGAs/s1600/image4.png" data-original-width="1600" data-original-height="805" /&gt;&lt;/a&gt;
&lt;p&gt;
Rewarded products make it easy for Google Play developers to increase their monetized user base. Our first rewarded product offering will be in a video format. Users can elect to watch a video advertisement and upon completion be rewarded with virtual goods or in-game currency. In the example below, the user selects "watch ad", views the video, and then is granted 100 coins.
&lt;/p&gt;
&lt;a href="https://1.bp.blogspot.com/-BhKEGG0PDXo/XHnptaRUwvI/AAAAAAAAGx4/cZKBPhj8-dk9-r6WHM9TJZM2r4IqeCslQCLcBGAs/s1600/image7.gif" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://1.bp.blogspot.com/-BhKEGG0PDXo/XHnptaRUwvI/AAAAAAAAGx4/cZKBPhj8-dk9-r6WHM9TJZM2r4IqeCslQCLcBGAs/s1600/image7.gif" data-original-width="372" data-original-height="666" /&gt;&lt;/a&gt;
&lt;p&gt;
Rewarded products can be added to any app using the Google Play Billing Library or AIDL interface with only a few additional API calls. No extra SDK integration is required. This significantly reduces the work required to implement compared to other offerings. Rewarded products are powered by AdMob technology to give access to the broad range of content from advertisers currently working with Google.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://support.google.com/googleplay/android-developer/answer/9155268"&gt;Get started with rewarded products&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
For developers interested in best practices on how to diversify revenue and how rewarded products fit in, please visit us at &lt;a href="https://events.withgoogle.com/google-at-gdc-2019/mobile-developer-day/#content"&gt;Google's Mobile Developer day at GDC&lt;/a&gt; or watch via the &lt;a href="https://events.withgoogle.com/google-at-gdc-2019/livestream/#content"&gt;livestream&lt;/a&gt;.
&lt;/p&gt;

&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=rewardedproducts-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=rewardedproducts-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=rewardedproducts-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=rewardedproducts-03/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&amp;entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&amp;entry.2056663615&amp;entry.646747778=rewardedproducts-03/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=R-Ca3lnisYI:UqUNRkm9NjQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=R-Ca3lnisYI:UqUNRkm9NjQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=R-Ca3lnisYI:UqUNRkm9NjQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/R-Ca3lnisYI" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7622848191974412716" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/7622848191974412716" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/R-Ca3lnisYI/supplement-your-earnings-with-rewarded.html" title=" Supplement your earnings with rewarded products" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-oAdyHBSKn8U/XHnpldYxVXI/AAAAAAAAGx0/6P3J3K30dYclwLqervNIK9xyQZabsvW4ACLcBGAs/s72-c/image4.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/supplement-your-earnings-with-rewarded.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-6277606764785913601</id><published>2019-03-05T10:00:00.000-08:00</published><updated>2019-03-08T12:59:24.242-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Jetpack" /><category scheme="http://www.blogger.com/atom/ns#" term="workmanager" /><title type="text">Android Jetpack WorkManager Stable Release</title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-7-CWfmPz1g8/XH28n3abG7I/AAAAAAAAHSY/PhV66bw8SkgN1lUNRwn9gV84UmrkTDNNACLcBGAs/s1600/image2.png"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-7-CWfmPz1g8/XH28n3abG7I/AAAAAAAAHSY/PhV66bw8SkgN1lUNRwn9gV84UmrkTDNNACLcBGAs/s1600/image2.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Sumir Kataria, Software Engineering Lead &amp; Jisha Abubaker, Product Manager&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;Simplify how you manage background work with WorkManager&lt;/h3&gt;

Today, we're happy to announce the release of &lt;a href="https://developer.android.com/topic/libraries/architecture/workmanager"&gt;Android Jetpack WorkManager&lt;/a&gt; 1.0 Stable. We want to thank so many of you in our dev community who have given us feedback and logged bugs along the way - we've gotten here thanks to your help!
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-7-CWfmPz1g8/XH28n3abG7I/AAAAAAAAHSY/PhV66bw8SkgN1lUNRwn9gV84UmrkTDNNACLcBGAs/s1600/image2.png" imageanchor="1" &gt;&lt;img id="floatRight" border="0" src="https://2.bp.blogspot.com/-7-CWfmPz1g8/XH28n3abG7I/AAAAAAAAHSY/PhV66bw8SkgN1lUNRwn9gV84UmrkTDNNACLcBGAs/s1600/image2.png" data-original-width="1174" data-original-height="1204" /&gt;&lt;/a&gt;
&lt;p&gt;
When we looked at the top problems faced by developers, we saw that doing background processing reliably and in a battery-friendly manner was a huge challenge. This meant that periodically fetching fresh content or uploading your logs was complex.  Different versions of Android provided different tools for the job, each with their own API quirks.  For example, listening for network or storage availability and automatically retrying your tasks involved a lot of work.
&lt;/p&gt;
&lt;p&gt;
Our answer to these challenges was WorkManager. We introduced a preview of the Android Jetpack &lt;a href="https://developer.android.com/topic/libraries/architecture/workmanager"&gt;WorkManager library&lt;/a&gt; at Google &lt;a href="https://www.youtube.com/watch?v=IrKoBFLwTN0"&gt;I/O 2018&lt;/a&gt; and have since iterated on it with additional features and bug fixes thanks to your valuable input.&lt;br&gt;
&lt;br&gt;
The goal of WorkManager is to make background operations easy for you.  WorkManager takes into account constraints like battery-optimization, storage, or network availability, and it only runs its tasks when the appropriate conditions are met.  It also knows when to retry or reschedule your work--even if your device or app restarts.
&lt;/p&gt;
&lt;p&gt;
We believe WorkManager is a friendly, approachable API that can take care of one of the most complex parts of Android for you so you can focus on the code that makes your app unique. &lt;br&gt;

&lt;/p&gt;
&lt;h2&gt;WorkManager Highlights&lt;/h2&gt;


&lt;p&gt;
Here are some key features of WorkManager:
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;Lets you set constraints, such as network status or charge state, on when the task runs

&lt;li&gt;Supports asynchronous one-off and periodic tasks

&lt;li&gt;Supports chained tasks with input &amp; output

&lt;li&gt;Ensures task execution, even if the app or device restarts

&lt;li&gt;Supports Android 4.0+ (API 14+)
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Watch and read below to learn when and how to use WorkManager to simplify managing background work in your apps:
&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/pe_yqM16hPQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;h2&gt;When to use WorkManager&lt;/h2&gt;


&lt;p&gt;
WorkManager is best suited for tasks that can be deferred, but are still expected to run even if the application or device restarts (for example, syncing data periodically with a backend service and uploading logs or analytics data).
&lt;/p&gt;
&lt;p&gt;
For tasks like sending an instant message that are required to run immediately or for tasks that are not required to run after the app exits, take a look at our &lt;a href="https://developer.android.com/guide/background/"&gt;background processing guide&lt;/a&gt; to learn which solution meets your needs.
&lt;/p&gt;
&lt;h2&gt;How to use WorkManager&lt;/h2&gt;


&lt;p&gt;
To get started with the WorkManager API,  add the WorkManager dependency available on &lt;a href="https://developer.android.com/studio/build/dependencies#google-maven"&gt;Google's Maven repository&lt;/a&gt; in Java or Kotlin to your application's  &lt;code&gt;build.gradle&lt;/code&gt; file:
&lt;/p&gt;



&lt;pre class="prettyprint"&gt;dependencies {
    def work_version = 1.0.0

    // Java
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin KTX + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"
  }&lt;/pre&gt;


&lt;p&gt;
Now, simply subclass a &lt;a href="https://developer.android.com/reference/androidx/work/Worker"&gt;Worker&lt;/a&gt; and implement your background work with &lt;strong&gt;doWork()&lt;/strong&gt; and enqueue it with WorkManager.
&lt;/p&gt;



&lt;pre class="prettyprint"&gt;class MyWorker(ctx: Context, params: WorkerParameters)
  : Worker(ctx, params) {
  override fun doWork(): Result {
    //do the work you want done in the background here
    return Result.success()
  }
}

// optionally, add constraints like power, network availability
val constraints: Constraints = Constraints.Builder()
     .setRequiresCharging(true)
                .setRequiredNetworkType(NetworkType.CONNECTED)
                .build()

val myWork = OneTimeWorkRequestBuilder&lt;MyWorker&gt;()
                .setConstraints(constraints).build()
&lt;/pre&gt;


&lt;p&gt;
WorkManager will now take care of running your task when it detects that your device is charging and the network is available. 
&lt;/p&gt;
&lt;h2&gt;Why use WorkManager&lt;/h2&gt;


&lt;h3&gt;Backward compatibility&lt;/h3&gt;


&lt;p&gt;
WorkManager will leverage the right scheduling API under the hood: it uses &lt;a href="https://developer.android.com/reference/android/app/job/JobScheduler"&gt;JobScheduler API&lt;/a&gt; on Android 6.0+ (API 23+) and a combination of &lt;a href="https://developer.android.com/reference/android/app/AlarmManager"&gt;AlarmManager&lt;/a&gt; and &lt;a href="https://developer.android.com/reference/android/content/BroadcastReceiver"&gt;BroadcastReceiver&lt;/a&gt; on previous versions. 
&lt;/p&gt;
&lt;p&gt;
It also seeks to ensure the best possible behavior so that it complies with system optimizations introduced in newer Android API versions to maximize battery and enforce good app behavior. 
&lt;/p&gt;
&lt;p&gt;
For example, WorkManager will schedule background work during the maintenance window for Android 6.0+ (API 23+) devices when the system is in Doze mode.
&lt;/p&gt;
&lt;h3&gt;Reliable scheduling&lt;/h3&gt;


&lt;p&gt;
With WorkManager, you can easily add constraints like network availability or charging status. Your work will run when the constraints are met and automatically retried if they fail while running. For example, if your task requires network to be available, the task will be stopped when network is no longer available and retried later.
&lt;/p&gt;
&lt;p&gt;
You can also monitor work status and retrieve  work result using &lt;a href="https://developer.android.com/topic/libraries/architecture/livedata"&gt;LiveData&lt;/a&gt;. This allows your UI to be notified when your task is completed. 
&lt;/p&gt;
&lt;p&gt;
In the event that your work fails, you can control how your work is retried by configuring how &lt;a href="https://developer.android.com/reference/androidx/work/BackoffPolicy"&gt;backoff&lt;/a&gt; is handled.
&lt;/p&gt;
&lt;p&gt;
WorkManager is also able to reschedule your work, using a record of your work in its local database, if an application or device restart occurs.
&lt;/p&gt;
&lt;h3&gt;Control over how your work is run&lt;/h3&gt;


&lt;p&gt;
We understand that each app has unique needs, and so do your tasks--even within the same app. WorkManager provides a simple yet highly flexible API surface to help configure your work and how it is run.
&lt;/p&gt;
&lt;p&gt;
Take advantage of one-off scheduling with &lt;a href="https://developer.android.com/reference/androidx/work/OneTimeWorkRequest.html"&gt;OneTimeWorkRequest&lt;/a&gt; or recurrent scheduling with &lt;a href="https://developer.android.com/reference/androidx/work/PeriodicWorkRequest"&gt;PeriodicWorkRequest&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
You can also chain your one time work requests to run in order or in parallel. If any work in the chain fails, WorkManager seeks to ensure that the remaining chain of work will not run. Read more about chaining work requests &lt;a href="https://developer.android.com/topic/libraries/architecture/workmanager/how-to/chain-work.md"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
If you require more flexibility over how WorkManager parallelizes and manages work, check out our &lt;a href="https://developer.android.com/topic/libraries/architecture/workmanager/advanced/threading.md"&gt;advanced threading guide&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
 
&lt;/p&gt;
&lt;h2&gt;What developers have to say&lt;/h2&gt;


&lt;p&gt;
&lt;a href="https://play.google.com/store/apps/details?id=in.redbus.android"&gt;redBus&lt;/a&gt;, the largest online bus ticketing platform, shares their experience using WorkManager to simplify how they collect user feedback in their Android app:
&lt;/p&gt;
&lt;blockquote&gt;
&lt;em&gt;"Feedback is critical to redBus as we expand into other countries. It often happens that a user gives critical feedback about a functionality within the redBus app but when the app tries to upload  the feedback to backend servers, there might not be enough network coverage or battery.&lt;/em&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;em&gt;WorkManager has simplified the way redBus app delivers information to it's backend servers. WorkManager library's capability to handle parameters like network connectivity, battery and use appropriate handlers like AlarmManager or JobScheduler has enabled us to concentrate on building business logics and offloading execution complexity to WorkManager."&lt;/em&gt;&lt;/blockquote&gt;
&lt;p&gt;
&lt;em&gt;- Dinesh Shanmugam&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt; Android Lead, redBus.in&lt;/em&gt;
&lt;/p&gt;
&lt;h2&gt;Get started with WorkManager&lt;/h2&gt;


&lt;p&gt;
Check out our &lt;a href="https://developer.android.com/topic/libraries/architecture/workmanager/basics"&gt;getting started guide&lt;/a&gt; and hands-on &lt;a href="https://codelabs.developers.google.com/codelabs/android-workmanager-kt/#0"&gt;codelab&lt;/a&gt; to start using the WorkManager library for your background task needs.
&lt;/p&gt;
&lt;p&gt;
We appreciate your feedback, including features you like and features you would like to see.
&lt;/p&gt;
&lt;p&gt;
If you find a bug or issue, feel free to &lt;a href="https://issuetracker.google.com/issues/new?component=409906&amp;template=1094197"&gt;file an issue&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=WJqUCrQiNPQ:vl0DtHJQ7zk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=WJqUCrQiNPQ:vl0DtHJQ7zk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=WJqUCrQiNPQ:vl0DtHJQ7zk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/WJqUCrQiNPQ" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6277606764785913601" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/6277606764785913601" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/WJqUCrQiNPQ/android-jetpack-workmanager-stable.html" title="Android Jetpack WorkManager Stable Release" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-7-CWfmPz1g8/XH28n3abG7I/AAAAAAAAHSY/PhV66bw8SkgN1lUNRwn9gV84UmrkTDNNACLcBGAs/s72-c/image2.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/03/android-jetpack-workmanager-stable.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-3697420282573670450</id><published>2019-02-28T10:13:00.000-08:00</published><updated>2019-02-28T10:15:58.375-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="android security" /><category scheme="http://www.blogger.com/atom/ns#" term="Application Security Improvement Program" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Store" /><title type="text">Android Security Improvement update: Helping developers harden their apps, one thwarted vulnerability at a time</title><content type="html">&lt;meta name="twitter:image" content="https://2.bp.blogspot.com/-H3SczGz1I2g/XHcXzLrGiSI/AAAAAAAAGxg/QcwO8ViDI_0C122Bz6QBt2KwGx1YuVxmgCLcBGAs/s1600/image1.pn"&gt;
&lt;img style="display:none" src="https://2.bp.blogspot.com/-H3SczGz1I2g/XHcXzLrGiSI/AAAAAAAAGxg/QcwO8ViDI_0C122Bz6QBt2KwGx1YuVxmgCLcBGAs/s1600/image1.pn"&gt;

&lt;p&gt;&lt;em&gt;Posted by Patrick Mutchler and &lt;a href="https://twitter.com/meghankel?lang=en"&gt;Meghan Kelly&lt;/a&gt;, Android Security &amp; Privacy Team&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Helping Android app developers build secure apps, free of known vulnerabilities, means helping the overall ecosystem thrive. This is why we launched the &lt;a href="https://developer.android.com/google/play/asi"&gt;Application Security Improvement Program&lt;/a&gt; five years ago, and why we're still so invested in its success today. 
&lt;/p&gt;
&lt;h2&gt;What the Android Security Improvement Program does&lt;/h2&gt;


&lt;p&gt;
When an app is submitted to the Google Play store, we scan it to determine if a variety of vulnerabilities are present. If we find something concerning, we flag it to the developer and then help them to remedy the situation. 
&lt;/p&gt;
&lt;a href="https://2.bp.blogspot.com/-H3SczGz1I2g/XHcXzLrGiSI/AAAAAAAAGxg/QcwO8ViDI_0C122Bz6QBt2KwGx1YuVxmgCLcBGAs/s1600/image1.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://2.bp.blogspot.com/-H3SczGz1I2g/XHcXzLrGiSI/AAAAAAAAGxg/QcwO8ViDI_0C122Bz6QBt2KwGx1YuVxmgCLcBGAs/s1600/image1.png" data-original-width="852" data-original-height="140" /&gt;&lt;/a&gt;
&lt;p&gt;
Think of it like a routine physical. If there are no problems, the app runs through our normal tests and continues on the process to being published in the Play Store. If there is a problem, however, we provide a diagnosis and next steps to get back to healthy form. 
&lt;/p&gt;
&lt;p&gt;
Over its lifetime, the program has helped more than 300,000 developers to fix more than 1,000,000 apps on Google Play. In 2018 alone, the program helped over 30,000 developers fix over 75,000 apps. The downstream effect means that those 75,000 vulnerable apps are not distributed to users with the same security issues present, which we consider a win. 
&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;What vulnerabilities are covered&lt;/strong&gt; &lt;/h2&gt;


&lt;p&gt;
The App Security Improvement program covers a broad range of security issues in Android apps. These can be as specific as security issues in certain versions of popular libraries (&lt;a href="https://nvd.nist.gov/vuln/detail/CVE-2015-5256"&gt;ex: CVE-2015-5256&lt;/a&gt;) and as broad as &lt;a href="https://developer.android.com/training/articles/security-ssl"&gt;unsafe TLS/SSL certificate validation&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
We are continuously improving this program's capabilities by improving the existing checks and launching checks for more classes of security vulnerability. In 2018, we deployed warnings for six additional security vulnerability classes including:
&lt;/p&gt;&lt;ol&gt;

&lt;li&gt;SQL Injection
&lt;li&gt;File-based Cross-Site Scripting
&lt;li&gt;Cross-App Scripting
&lt;li&gt;Leaked Third-Party Credentials
&lt;li&gt;Scheme Hijacking
&lt;li&gt;JavaScript Interface Injection&lt;/li&gt;&lt;/ol&gt;

&lt;p&gt;
Ensuring that we're continuing to evolve the program as new exploits emerge is a top priority for us. We are continuing to work on this throughout 2019.
&lt;/p&gt;
&lt;p&gt;
Keeping Android users safe is important to Google. We know that app security is often tricky and that developers can make mistakes. We hope to see this program grow in the years to come, helping developers worldwide build apps users can truly trust.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=1RC7jxff7iA:i3heotN2lms:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=1RC7jxff7iA:i3heotN2lms:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=1RC7jxff7iA:i3heotN2lms:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/1RC7jxff7iA" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3697420282573670450" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/3697420282573670450" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/1RC7jxff7iA/android-security-improvement-update.html" title="Android Security Improvement update: Helping developers harden their apps, one thwarted vulnerability at a time" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://2.bp.blogspot.com/-H3SczGz1I2g/XHcXzLrGiSI/AAAAAAAAGxg/QcwO8ViDI_0C122Bz6QBt2KwGx1YuVxmgCLcBGAs/s72-c/image1.pn" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/02/android-security-improvement-update.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-1273524494619090936</id><published>2019-02-26T10:26:00.000-08:00</published><updated>2019-02-26T10:26:43.519-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="android security" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="google play protect" /><title type="text">Google Play Protect in 2018: New updates to keep Android users secure</title><content type="html">&lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-ybk_-uqRniQ/XHWC6_BfCeI/AAAAAAAAGw8/7gmcaZMIzWwaOvikXzzBWYhmz0fhWtjjACLcBGAs/s1600/image3.gif"&gt;
&lt;img style="display:none" src="https://1.bp.blogspot.com/-ybk_-uqRniQ/XHWC6_BfCeI/AAAAAAAAGw8/7gmcaZMIzWwaOvikXzzBWYhmz0fhWtjjACLcBGAs/s1600/image3.gif"&gt;

&lt;p&gt;&lt;em&gt;Posted by 
Rahul Mishra and Tom Watkins, Android Security &amp; Privacy Team
&lt;/em&gt;&lt;/p&gt;

&lt;a href="https://1.bp.blogspot.com/-ybk_-uqRniQ/XHWC6_BfCeI/AAAAAAAAGw8/7gmcaZMIzWwaOvikXzzBWYhmz0fhWtjjACLcBGAs/s1600/image3.gif" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://1.bp.blogspot.com/-ybk_-uqRniQ/XHWC6_BfCeI/AAAAAAAAGw8/7gmcaZMIzWwaOvikXzzBWYhmz0fhWtjjACLcBGAs/s1600/image3.gif" data-original-width="476" data-original-height="504" /&gt;&lt;/a&gt;
&lt;p&gt;
In 2018, Google Play Protect made Android devices running Google Play some of the most secure smartphones available, scanning over 50 billion apps everyday for harmful behaviour.
&lt;/p&gt;
&lt;p&gt;
Android devices can genuinely improve people's lives through our accessibility features, Google Assistant, digital wellbeing, Family Link, and more — but we can only do this if they are safe and secure enough to earn users' long term trust. This is Google Play Protect's charter and we're encouraged by this past year's advancements.
&lt;/p&gt;
&lt;h3&gt;Google Play Protect, a refresher&lt;/h3&gt;


&lt;p&gt;
Google Play Protect is the technology we use to ensure that any device shipping with the Google Play Store is secured against&lt;a href="https://source.android.com/security/reports/Google_Android_Security_PHA_classifications.pdf"&gt; potentially harmful applications&lt;/a&gt; (PHA). It is made up of a giant backend scanning engine to aid our analysts in sourcing and vetting applications made available on the Play Store, and built-in protection that scans apps on users' devices, immobilizing PHA and warning users.
&lt;/p&gt;
&lt;p&gt;
This technology protects over 2 billion devices in the Android ecosystem every day. 
&lt;/p&gt;
&lt;h3&gt;What's new&lt;/h3&gt;


&lt;p&gt;
&lt;strong&gt;On by default&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We strongly believe that security should be a built-in feature of every device, not something a user needs to find and enable. When security features function at their best, most users do not need to be aware of them. To this end, we are pleased to announce that Google Play Protect is now enabled by default to secure all new devices, right out of the box. The user is notified that Google Play Protect is running, and has the option to turn it off whenever desired.
&lt;/p&gt;
&lt;a href="https://1.bp.blogspot.com/-i0FMOfWb0NE/XHWDoIN1ymI/AAAAAAAAGxE/owKsEtPNfb0mRukH2jLx4DsyvZxq6IqNgCLcBGAs/s1600/Screen%2BShot%2B2019-02-26%2Bat%2B10.20.51%2BAM.png" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://1.bp.blogspot.com/-i0FMOfWb0NE/XHWDoIN1ymI/AAAAAAAAGxE/owKsEtPNfb0mRukH2jLx4DsyvZxq6IqNgCLcBGAs/s1600/Screen%2BShot%2B2019-02-26%2Bat%2B10.20.51%2BAM.png" data-original-width="1378" data-original-height="1377" /&gt;&lt;/a&gt;
&lt;p&gt;
&lt;strong&gt;New and rare apps&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Android is deployed in many diverse ways across many different users. We know that the ecosystem would not be as powerful and vibrant as it is today without an equally diverse array of apps to choose from. But installing new apps, especially from unknown sources, can carry risk.
&lt;/p&gt;
&lt;p&gt;
Last year we launched a new feature that notifies users when they are installing new or rare apps that are rarely installed in the ecosystem. In these scenarios, the feature shows a warning, giving users pause to consider whether they want to trust this app, and advising them to take additional care and check the source of installation. Once Google has fully analyzed the app and determined that it is not harmful, the notification will no longer display. In 2018, this warning showed around 100,000 times per day
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Context is everything: warning users on launch&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
It's easy to misunderstand alerts when presented out of context. We're trained to click through notifications without reading them and get back to what we were doing as quickly as possible. We know that providing timely and context-sensitive alerts to users is critical for them to be of value. We recently enabled a security feature first introduced in Android Oreo which warns users when they are about to launch a potentially harmful app on their device. 
&lt;/p&gt;
&lt;a href="https://1.bp.blogspot.com/-4hW9VOXTmk4/XHWDuwxeQAI/AAAAAAAAGxI/FyVZ2H38urEU9ocZtYYPU89j9Q0J7TmOACLcBGAs/s1600/Screen%2BShot%2B2019-02-26%2Bat%2B10.21.01%2BAM.png" imageanchor="1" &gt;&lt;img id="imgHalf" border="0" src="https://1.bp.blogspot.com/-4hW9VOXTmk4/XHWDuwxeQAI/AAAAAAAAGxI/FyVZ2H38urEU9ocZtYYPU89j9Q0J7TmOACLcBGAs/s1600/Screen%2BShot%2B2019-02-26%2Bat%2B10.21.01%2BAM.png" data-original-width="580" data-original-height="414" /&gt;&lt;/a&gt;
&lt;p&gt;
This new warning dialog provides in-context information about which app the user is about to launch, why we think it may be harmful and what might happen if they open the app. We also provide clear guidance on what to do next. These in-context dialogs ensure users are protected even if they accidentally missed an alert.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Auto-disabling apps &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Google Play Protect has long been able to disable the most harmful categories of apps on users devices automatically, providing robust protection where we believe harm will be done.
&lt;/p&gt;
&lt;p&gt;
In 2018, we extended this coverage to apps installed from Play that were later found to have violated Google Play's &lt;a href="https://play.google.com/about/developer-content-policy/"&gt;policies&lt;/a&gt;, e.g. on privacy, deceptive behavior or content. These apps have been suspended and removed from the Google Play Store. 
&lt;/p&gt;
&lt;p&gt;
This does not remove the app from user device, but it does notify the user and prevents them from opening the app accidentally. The notification gives the option to remove the app entirely. 
&lt;/p&gt;
&lt;p&gt;
Keeping the Android ecosystem secure is no easy task, but we firmly believe that Google Play Protect is an important security layer that's used to protect users devices and their data while maintaining the freedom, diversity and openness that makes Android, well, Android.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Acknowledgements: This post leveraged contributions from Meghan Kelly and William Luh.&lt;/em&gt;
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=1hwIRi6H2Hc:TgLBeAdou6E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=1hwIRi6H2Hc:TgLBeAdou6E:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=1hwIRi6H2Hc:TgLBeAdou6E:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/1hwIRi6H2Hc" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1273524494619090936" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1273524494619090936" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/1hwIRi6H2Hc/google-play-protect-in-2018-new-updates.html" title="Google Play Protect in 2018: New updates to keep Android users secure" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-ybk_-uqRniQ/XHWC6_BfCeI/AAAAAAAAGw8/7gmcaZMIzWwaOvikXzzBWYhmz0fhWtjjACLcBGAs/s72-c/image3.gif" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/02/google-play-protect-in-2018-new-updates.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-813286041616564921</id><published>2019-02-21T11:21:00.000-08:00</published><updated>2019-02-21T15:00:34.544-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="android security" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play Store" /><category scheme="http://www.blogger.com/atom/ns#" term="Requirements" /><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><category scheme="http://www.blogger.com/atom/ns#" term="target API" /><title type="text"> Expanding target API level requirements in 2019</title><content type="html">&lt;meta name="twitter:image" content="https://4.bp.blogspot.com/-wVSij9rfStg/XG7iQvHUqpI/AAAAAAAAGwI/Eol6oonV49k6QgizI6nquU373QVBhxGigCLcBGAs/s1600/image1.png"&gt;
&lt;img style="display:none" src="https://4.bp.blogspot.com/-wVSij9rfStg/XG7iQvHUqpI/AAAAAAAAGwI/Eol6oonV49k6QgizI6nquU373QVBhxGigCLcBGAs/s1600/image1.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Edward Cunningham, Android Security &amp; Privacy Team
&lt;/em&gt;&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-wVSij9rfStg/XG7iQvHUqpI/AAAAAAAAGwI/Eol6oonV49k6QgizI6nquU373QVBhxGigCLcBGAs/s1600/image1.png" imageanchor="1" &gt;&lt;img id="imgFull" border="0" src="https://4.bp.blogspot.com/-wVSij9rfStg/XG7iQvHUqpI/AAAAAAAAGwI/Eol6oonV49k6QgizI6nquU373QVBhxGigCLcBGAs/s1600/image1.png" data-original-width="1600" data-original-height="847" /&gt;&lt;/a&gt;
&lt;p&gt;
In a &lt;a href="https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html"&gt;previous blog&lt;/a&gt; we described how API behavior changes advance the security and privacy protections of Android, and include user experience improvements that prevent apps from accidentally overusing resources like battery and memory.
&lt;/p&gt;
&lt;p&gt;
Since November 2018, all app updates on Google Play have been required to target API level 26 (Android 8.0) or higher. Thanks to the efforts of thousands of app developers, Android users now enjoy more apps using modern APIs than ever before, bringing significant security and privacy benefits. For example, during 2018 over 150,000 apps added support for runtime permissions, giving users granular control over the data they share.
&lt;/p&gt;
&lt;p&gt;
Today we're providing more information about the Google Play requirements for 2019, and announcing some changes that affect apps distributed via other stores.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Google Play requirements for 2019&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
In order to provide users with the best Android experience possible, the Google Play Console will continue to require that apps target a recent API level:
&lt;/p&gt;&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;August 2019:&lt;/strong&gt; New apps are required to target API level 28 (Android 9) or higher.
&lt;li&gt;&lt;strong&gt;November 2019:&lt;/strong&gt; Updates to existing apps are required to target API level 28 or higher.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
Existing apps that are not receiving updates are unaffected and can continue to be downloaded from the Play Store. Apps can still use any  &lt;code&gt;&lt;a href="https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#min"&gt;minSdkVersion&lt;/a&gt;&lt;/code&gt;, so there is no change to your ability to build apps for older Android versions.
&lt;/p&gt;
&lt;p&gt;
For a list of changes introduced in Android 9 Pie, check out our page on &lt;a href="https://developer.android.com/about/versions/pie/android-9.0-changes-28"&gt;behavior changes for apps targeting API level 28+&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Apps distributed via other stores&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Targeting a recent API level is valuable regardless of how an app is distributed. In China, major app stores from Huawei, OPPO, Vivo, Xiaomi, Baidu, Alibaba, and Tencent &lt;a href="http://www.taf.net.cn/News_detail.aspx?_NOTICE_ID=231"&gt;will be requiring&lt;/a&gt; that apps target API level 26 (Android 8.0) or higher in 2019. We expect many others to introduce similar requirements – an important step to improve the security of the app ecosystem.
&lt;/p&gt;
&lt;p&gt;
Over 95% of spyware we detect outside of the Play Store intentionally targets API level 22 or lower, avoiding runtime permissions even when installed on recent Android versions. To protect users from malware, and support this ecosystem initiative, &lt;a href="https://www.android.com/play-protect/"&gt;Google Play Protect&lt;/a&gt; will warn users when they attempt to install APKs from any source that do not target a recent API level:
&lt;/p&gt;&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;August 2019:&lt;/strong&gt; New apps will receive warnings during installation if they do not target API level 26 or higher.
&lt;li&gt;&lt;strong&gt;November 2019:&lt;/strong&gt; New versions of existing apps will receive warnings during installation if they do not target API level 26 or higher.
&lt;li&gt;&lt;strong&gt;2020 onwards:&lt;/strong&gt; The target API level requirement will advance annually.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;
These Play Protect warnings will show only if the app's &lt;code&gt;&lt;a href="https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#target"&gt;targetSdkVersion&lt;/a&gt;&lt;/code&gt; is lower than the device API level. For example, a user with a device running Android 6.0 (Marshmallow) will be warned when installing any new APK that targets API level 22 or lower. Users with devices running Android 8.0 (Oreo) or higher will be warned when installing any new APK that targets API level 25 or lower.
&lt;/p&gt;
&lt;p&gt;
Prior to August, Play Protect will start showing these warnings on devices with &lt;a href="https://developer.android.com/studio/debug/dev-options"&gt;Developer options&lt;/a&gt; enabled to give advance notice to developers of apps outside of the Play Store. To ensure compatibility across all Android versions, developers should make sure that new versions of any apps target API level 26+.
&lt;/p&gt;
&lt;p&gt;
Existing apps that have been released (via any distribution channel) and are not receiving updates will be unaffected – users will not be warned when installing them.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Getting started&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
For advice on how to change your app’s target API level, take a look at the &lt;a href="https://developer.android.com/distribute/best-practices/develop/target-sdk"&gt;migration guide&lt;/a&gt; and this talk from  I/O 2018: &lt;a href="https://www.youtube.com/watch?v=YyDnYaFtRS0"&gt;Migrate your existing app to target Android Oreo and above&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
We're extremely grateful to the Android developers worldwide who have already updated their apps to deliver security improvements for their users. We look forward to making great progress together in 2019. 
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=JnEpS8he6iM:gJisEWQXJMQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=JnEpS8he6iM:gJisEWQXJMQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=JnEpS8he6iM:gJisEWQXJMQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/JnEpS8he6iM" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/813286041616564921" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/813286041616564921" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/JnEpS8he6iM/expanding-target-api-level-requirements.html" title=" Expanding target API level requirements in 2019" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://4.bp.blogspot.com/-wVSij9rfStg/XG7iQvHUqpI/AAAAAAAAGwI/Eol6oonV49k6QgizI6nquU373QVBhxGigCLcBGAs/s72-c/image1.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/02/expanding-target-api-level-requirements.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-4153280871628756597</id><published>2019-02-13T10:01:00.000-08:00</published><updated>2019-02-13T13:11:10.251-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android security" /><category scheme="http://www.blogger.com/atom/ns#" term="Apps" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="google play protect" /><category scheme="http://www.blogger.com/atom/ns#" term="Play Store" /><category scheme="http://www.blogger.com/atom/ns#" term="Security" /><title type="text">How we fought bad apps and malicious developers in 2018</title><content type="html">&lt;meta name="twitter:image" content="https://3.bp.blogspot.com/-parwLRqicHo/XGNQNWtIRgI/AAAAAAAAGvI/0upTcSNBhGM3DcOvcO94ChcCsfUUtidxgCLcBGAs/s1600/image3.png"&gt;
&lt;img style="display:none" src="https://3.bp.blogspot.com/-parwLRqicHo/XGNQNWtIRgI/AAAAAAAAGvI/0upTcSNBhGM3DcOvcO94ChcCsfUUtidxgCLcBGAs/s1600/image3.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Andrew Ahn, Product Manager, Google Play&lt;/em&gt;&lt;/p&gt;

&lt;a href="https://3.bp.blogspot.com/-parwLRqicHo/XGNQNWtIRgI/AAAAAAAAGvI/0upTcSNBhGM3DcOvcO94ChcCsfUUtidxgCLcBGAs/s1600/image3.png" imageanchor="1" &gt;&lt;img id='imgFull' border="0" src="https://3.bp.blogspot.com/-parwLRqicHo/XGNQNWtIRgI/AAAAAAAAGvI/0upTcSNBhGM3DcOvcO94ChcCsfUUtidxgCLcBGAs/s1600/image3.png" data-original-width="1600" data-original-height="798" /&gt;&lt;/a&gt;
&lt;p&gt;
Google Play is committed to providing a secure and safe platform for billions of Android users on their journey discovering and experiencing the apps they love and enjoy. To deliver against this commitment, we worked last year to improve our abuse detection technologies and systems, and significantly increased our team of product managers, engineers, policy experts, and operations leaders to fight against bad actors.
&lt;/p&gt;
&lt;p&gt;
In 2018, we introduced a series of new policies to protect users from new abuse trends, detected and removed malicious developers faster, and stopped more malicious apps from entering the Google Play Store than ever before. The number of rejected app submissions increased by more than 55 percent, and we increased app suspensions by more than 66 percent. These increases can be attributed to our continued efforts to tighten policies to reduce the number of harmful apps on the Play Store, as well as our investments in automated protections and human review processes that play critical roles in identifying and enforcing on bad apps.
&lt;/p&gt;
&lt;p&gt;
In addition to identifying and stopping bad apps from entering the Play Store, our &lt;a href="https://www.android.com/play-protect/"&gt;Google Play Protect&lt;/a&gt; system now scans over 50 billion apps on users' devices each day to make sure apps installed on the device aren't behaving in harmful ways. With such protection, apps from Google Play are eight times less likely to harm a user's device than Android apps from other sources.
&lt;/p&gt;
&lt;p&gt;
Here are some areas we've been focusing on in the last year and that will continue to be a priority for us in 2019:
&lt;/p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-6OOTXl-yzoY/XGNQaYIiPcI/AAAAAAAAGvM/jIsFO3jHqignEt64l6G_skZtmEhA5lKOQCLcBGAs/s1600/image4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="608" data-original-width="608" height="200" width="200" src="https://2.bp.blogspot.com/-6OOTXl-yzoY/XGNQaYIiPcI/AAAAAAAAGvM/jIsFO3jHqignEt64l6G_skZtmEhA5lKOQCLcBGAs/s1600/image4.png"/&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Protecting User Privacy&lt;/h2&gt;
&lt;p&gt;
Protecting users' data and privacy is a critical factor in building user trust. We've long required developers to limit their device permission requests to what's necessary to provide the features of an app. Also, to help users understand how their data is being used, we've required developers to provide prominent disclosures about the collection and use of sensitive user data. Last year, we rejected or removed tens of thousands of apps that weren't in compliance with Play's policies related to user data and privacy.
&lt;/p&gt;
&lt;p&gt;
In October 2018, we &lt;a href="https://android-developers.googleblog.com/2018/10/providing-safe-and-secure-experience.html"&gt;announced&lt;/a&gt; a new policy restricting the use of the SMS and Call Log permissions to a limited number of cases, such as where an app has been selected as the user's default app for making calls or sending text messages. We've recently started to remove apps from Google Play that violate this policy. We plan to introduce additional policies for device permissions and user data throughout 2019.
&lt;/p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-9KIuHngbx0c/XGNQiItQBDI/AAAAAAAAGvQ/3cmaZdblXWkoiXmXpfxnpVHEgLco3x64ACLcBGAs/s1600/image1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="608" data-original-width="608" height="200" width="200" src="https://1.bp.blogspot.com/-9KIuHngbx0c/XGNQiItQBDI/AAAAAAAAGvQ/3cmaZdblXWkoiXmXpfxnpVHEgLco3x64ACLcBGAs/s1600/image1.png"/&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Developer integrity&lt;/h2&gt;
&lt;p&gt;
We find that over 80% of severe policy violations are conducted by repeat offenders and abusive developer networks. When malicious developers are banned, they often create new accounts or buy developer accounts on the black market in order to come back to Google Play. We've further enhanced our clustering and account matching technologies, and by combining these technologies with the expertise of our human reviewers, we've made it more difficult for spammy developer networks to gain installs by blocking their apps from being published in the first place.
&lt;/p&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://3.bp.blogspot.com/-VJ8CkR2c5y4/XGNQndK1GqI/AAAAAAAAGvU/xnRjl-15k_wjKenX-YMgI7Jvm2zewFxbgCLcBGAs/s1600/image2.png"  imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="608" data-original-width="608" height="200" width="200" src="https://3.bp.blogspot.com/-VJ8CkR2c5y4/XGNQndK1GqI/AAAAAAAAGvU/xnRjl-15k_wjKenX-YMgI7Jvm2zewFxbgCLcBGAs/s1600/image2.png"/&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;h2&gt;Harmful app contents and behaviors&lt;/h2&gt;
&lt;p&gt;
As mentioned in last year's &lt;a href="https://android-developers.googleblog.com/2018/01/how-we-fought-bad-apps-and-malicious.html"&gt;blog post&lt;/a&gt;, we fought against hundreds of thousands of impersonators, apps with inappropriate content, and &lt;a href="https://source.android.com/security/reports/Google_Android_Security_PHA_classifications.pdf"&gt;Potentially Harmful Applications&lt;/a&gt; (PHAs). In a continued fight against these types of apps, not only do we apply advanced machine learning models to spot suspicious apps, we also conduct static and dynamic analyses, intelligently use user engagement and feedback data, and leverage skilled human reviews, which have helped in finding more bad apps with higher accuracy and efficiency.
&lt;/p&gt;
&lt;p&gt;
Despite our enhanced and added layers of defense against bad apps, we know bad actors will continue to try to evade our systems by changing their tactics and cloaking bad behaviors. We will continue to enhance our capabilities to counter such adversarial behavior, and work relentlessly to provide our users with a secure and safe app store.
&lt;/p&gt;

&lt;center&gt; 
&lt;p&gt;
How useful did you find this blog post? 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=harmfulappsabuse02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=harmfulappsabuse02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=harmfulappsabuse02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=harmfulappsabuse02/19" style="color: gold;"&gt;★&lt;/a&gt; &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&amp;entry.2056663615&amp;entry.646747778=harmfulappsabuse02/19" style="color: gold;"&gt;★&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;/center&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=EC65UTP7YYE:gzQzvjzq11k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=EC65UTP7YYE:gzQzvjzq11k:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=EC65UTP7YYE:gzQzvjzq11k:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/EC65UTP7YYE" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4153280871628756597" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/4153280871628756597" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/EC65UTP7YYE/how-we-fought-bad-apps-and-malicious.html" title="How we fought bad apps and malicious developers in 2018" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-parwLRqicHo/XGNQNWtIRgI/AAAAAAAAGvI/0upTcSNBhGM3DcOvcO94ChcCsfUUtidxgCLcBGAs/s72-c/image3.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/02/how-we-fought-bad-apps-and-malicious.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-1132738982458068601</id><published>2019-02-12T11:00:00.000-08:00</published><updated>2019-02-12T11:00:07.360-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="Android Things" /><category scheme="http://www.blogger.com/atom/ns#" term="Notification" /><title type="text">An Update on Android Things</title><content type="html">&lt;p&gt;
&lt;em&gt;Posted by &lt;a href="https://google.com/+DaveSmithDev"&gt;Dave Smith&lt;/a&gt;, Developer Advocate for IoT&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Over the past year, Google has worked closely with partners to create consumer products powered by Android Things with the Google Assistant built-in. Given the successes we have seen with our partners in smart speakers and smart displays, we are refocusing Android Things as a platform for OEM partners to build devices in those categories moving forward. Therefore, support for production System on Modules (SoMs) based on NXP, Qualcomm, and MediaTek hardware will not be made available through the public developer platform at this time.
&lt;/p&gt;
&lt;p&gt;
Android Things continues to be a platform for experimenting with and building smart, connected devices using the &lt;a href="https://developer.android.com/things/reference"&gt;Android Things SDK&lt;/a&gt; on top of popular hardware like the NXP i.MX7D and Raspberry Pi 3B. System images for these boards will remain available through the &lt;a href="https://partner.android.com/things/console"&gt;Android Things console&lt;/a&gt; where developers can create new builds and push app updates for up to 100 devices for non-commercial use.
&lt;/p&gt;
&lt;p&gt;
We remain dedicated to providing a managed platform for IoT devices, including turnkey hardware solutions. For developers looking to commercialize IoT products in 2019, check out &lt;a href="https://cloud.google.com/iot-core/"&gt;Cloud IoT Core&lt;/a&gt; for secure device connectivity at scale and the upcoming &lt;a href="https://cloud.google.com/iot-edge/"&gt;Cloud IoT Edge&lt;/a&gt; runtime for a suite of managed edge computing services. For on-device machine learning applications, stay tuned for more details about our &lt;a href="https://aiyprojects.withgoogle.com/edge-tpu"&gt;Edge TPU development boards&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=5RifRqkFZEo:j6_Ej0LzCng:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=5RifRqkFZEo:j6_Ej0LzCng:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=5RifRqkFZEo:j6_Ej0LzCng:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/5RifRqkFZEo" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1132738982458068601" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/1132738982458068601" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/5RifRqkFZEo/an-update-on-android-things.html" title="An Update on Android Things" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><feedburner:origLink>http://android-developers.googleblog.com/2019/02/an-update-on-android-things.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6755709643044947179.post-5506440413718304256</id><published>2019-01-29T10:00:00.000-08:00</published><updated>2019-01-29T10:00:01.409-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="App Bundle" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Play" /><category scheme="http://www.blogger.com/atom/ns#" term="Santa Tracker" /><title type="text"> Google releases source code of Santa Tracker for Android 2018</title><content type="html">&lt;meta name="twitter:image" content="https://3.bp.blogspot.com/-qa97_ZHSZU4/XE953G66naI/AAAAAAAAGt8/xoR66r0NHegLdU9SGeHxm_e8dQW9uij3wCLcBGAs/s1600/image3.png"&gt;
&lt;img style="display:none" src="https://3.bp.blogspot.com/-qa97_ZHSZU4/XE953G66naI/AAAAAAAAGt8/xoR66r0NHegLdU9SGeHxm_e8dQW9uij3wCLcBGAs/s1600/image3.png"&gt;

&lt;p&gt;&lt;em&gt;Posted by Chris Banes, Chief Elf of Android Engineering&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
Today, we pushed the source code for Google's Santa Tracker 2018 Android app at  &lt;a href="https://github.com/google/santa-tracker-android"&gt;google/santa-tracker-android&lt;/a&gt;, including its 17 mini-games, Santa tracking feature, Wear app and more!
&lt;/p&gt;
&lt;a href="https://3.bp.blogspot.com/-qa97_ZHSZU4/XE953G66naI/AAAAAAAAGt8/xoR66r0NHegLdU9SGeHxm_e8dQW9uij3wCLcBGAs/s1600/image3.png" imageanchor="1" alt="Header image with Santa"&gt;&lt;img id='imgFull' border="0" src="https://3.bp.blogspot.com/-qa97_ZHSZU4/XE953G66naI/AAAAAAAAGt8/xoR66r0NHegLdU9SGeHxm_e8dQW9uij3wCLcBGAs/s1600/image3.png" data-original-width="1033" data-original-height="517" /&gt;&lt;/a&gt;
&lt;p&gt;
Visually the app looks much the same this year, but underneath the hood the app has gone on a massive size reduction exercise to make the download from Google Play as small as possible. When a user downloads the app the initial download is now just &lt;strong&gt;9.2MB&lt;/strong&gt;, compared to last year's app which was 60MB. That's a &lt;strong&gt;85%&lt;/strong&gt; reduction! &#x1f5dc;️
&lt;/p&gt;
&lt;h2&gt;Android App Bundle&lt;/h2&gt;
&lt;p&gt;
We achieved that reduction by migrating the app over to using an &lt;a href="https://developer.android.com/guide/app-bundle/"&gt;Android App Bundle&lt;/a&gt;. The main benefit is that Google Play can now serve &lt;a href="https://support.google.com/googleplay/android-developer/answer/9006925"&gt;dynamically optimized APKs&lt;/a&gt; to users' devices. Moreover, we were also able to separate out all of the games into their own dynamic feature modules, downloaded on demand. This is why you might have seen a progress bar when you first opened a game, we are actually downloading the game from Google Play before starting the game:
&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-ZoS1A64-ay4/XE95-oJXZJI/AAAAAAAAGuA/MLA1zfx6HkAMGCd76bo1suaMpp2Qi9NagCLcBGAs/s1600/image4.gif" imageanchor="1" alt="Image showing the user interface while downloading a game" &gt;&lt;img id='imgHalf' border="0" src="https://4.bp.blogspot.com/-ZoS1A64-ay4/XE95-oJXZJI/AAAAAAAAGuA/MLA1zfx6HkAMGCd76bo1suaMpp2Qi9NagCLcBGAs/s1600/image4.gif" data-original-width="500" data-original-height="625" /&gt;&lt;/a&gt;
&lt;p id='imgCaption'&gt;
&lt;strong&gt;The progress bar shown while a game is fetched from Google Play&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
You can read more about our journey migrating over to App Bundle in a small blog series, starting with our '&lt;a href="https://medium.com/androiddevelopers/google-santa-tracker-moving-to-an-android-app-bundle-dde180716096"&gt;Moving to Android App Bundle&lt;/a&gt;' post.
&lt;/p&gt;
&lt;h2&gt;Gboard stickers&lt;/h2&gt;
&lt;/p&gt;
&lt;p&gt;
One of the new features we added this year was a Gboard sticker pack, allowing users to share stickers to their friends. You might even notice some of the characters from the games in the stickers!
&lt;/p&gt;
&lt;a href="https://1.bp.blogspot.com/-4O7_XywY-dM/XE96K2JoztI/AAAAAAAAGuI/HsfY6qafm2AL2KeFoUNKdnfQK6XoMT3EACLcBGAs/s1600/image2.png" imageanchor="1" alt="‘Santa Dunk’ is one of the stickers you could use" &gt;&lt;img id='imgHalf' border="0" src="https://1.bp.blogspot.com/-4O7_XywY-dM/XE96K2JoztI/AAAAAAAAGuI/HsfY6qafm2AL2KeFoUNKdnfQK6XoMT3EACLcBGAs/s1600/image2.png" data-original-width="1024" data-original-height="1024" /&gt;&lt;/a&gt;
&lt;p id='imgCaption'&gt;
&lt;strong&gt;'Santa Dunk' is one of the 20 available stickers&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We use &lt;a href="https://firebase.google.com/docs/app-indexing/"&gt;Firebase App Indexing&lt;/a&gt; to publish our stickers to the local index on the device, where the Gboard keyboard app picks them up, allowing the user to share them in apps. You can see the source code &lt;a href="https://github.com/google/santa-tracker-android/tree/master/santa-tracker/src/main/java/com/google/android/apps/santatracker/stickers/SantaTrackerStickers.kt"&gt;here&lt;/a&gt;.
&lt;/p&gt;
&lt;a href="https://4.bp.blogspot.com/-NXuyyS0i0LA/XE96RgxiUyI/AAAAAAAAGuQ/3YIZJ6lZi3I3-JP9mA2DoRXslUIBRXr0gCLcBGAs/s1600/image1.png" imageanchor="1" alt="A messaging app using the new sticker pack in Gboard"&gt;&lt;img id='imgHalf' border="0" src="https://4.bp.blogspot.com/-NXuyyS0i0LA/XE96RgxiUyI/AAAAAAAAGuQ/3YIZJ6lZi3I3-JP9mA2DoRXslUIBRXr0gCLcBGAs/s1600/image1.png" data-original-width="900" data-original-height="1600" /&gt;&lt;/a&gt;
&lt;p id='imgCaption'&gt;
&lt;strong&gt;The sticker pack being used in a &lt;em&gt;very&lt;/em&gt; important conversation&lt;/strong&gt;
&lt;/p&gt;
&lt;h2&gt;Lots of code improvements&lt;/h2&gt;
&lt;p&gt;
Aside from the things mentioned above, we've also completed a number of code health improvements. We have increased the minimum SDK version to Lollipop (21), migrated from the Support Library to &lt;a href="https://developer.android.com/jetpack/androidx/"&gt;AndroidX&lt;/a&gt;, reduced the file size of our game assets by switching to modern formats, and lots of other small improvements! Phew &#x1f605;.
&lt;/p&gt;
&lt;h2&gt;Go explore the code&lt;/h2&gt;
&lt;p&gt;
If you're interested go checkout the code and let us know what you think. If you have any questions or issues, please let us know via the &lt;a href="https://github.com/google/santa-tracker-android/issues"&gt;issue tracker&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=wiNs4iA6qyA:W8t3KMwbIUw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=wiNs4iA6qyA:W8t3KMwbIUw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=wiNs4iA6qyA:W8t3KMwbIUw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/wiNs4iA6qyA" height="1" width="1" alt=""/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/5506440413718304256" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6755709643044947179/posts/default/5506440413718304256" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/hsDu/~3/wiNs4iA6qyA/google-releases-source-code-of-santa.html" title=" Google releases source code of Santa Tracker for Android 2018" /><author><name>Android Developers</name><uri>http://www.blogger.com/profile/08588467489110681140</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://3.bp.blogspot.com/-qa97_ZHSZU4/XE953G66naI/AAAAAAAAGt8/xoR66r0NHegLdU9SGeHxm_e8dQW9uij3wCLcBGAs/s72-c/image3.png" height="72" width="72" /><feedburner:origLink>http://android-developers.googleblog.com/2019/01/google-releases-source-code-of-santa.html</feedburner:origLink></entry></feed>
