tag:blogger.com,1999:blog-67557096430449471792025-07-02T22:15:05.561-07:00Android Developers BlogThe official Android Developers blog covering the latest news on app development tools, platform updates, training, and documentation for developers across every Android device.Birnahttp://www.blogger.com/profile/04044883525253664551noreply@blogger.comBlogger1841125tag:blogger.com,1999:blog-6755709643044947179.post-23306883725281281102025-07-01T07:00:00.000-07:002025-07-01T07:00:00.115-07:00Level up your game: Google Play's Indie Games Fund in Latin America returns for its 4th year<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTpOM4puPIjsryzghGhKofJXcfVQVrIGAffB0E5gTR1q8QD3stIbxs7wItvjI0tAIsB28m13rumYroFZwCdf-Cjg94K3_Y7OdBjLNXPIfvdSA7omQWrp6f7nX2hdHsD8hw2ZZ5Bj3GqW8ulzXYJm9kZwuzxMFrSKzL8MH-B26hsWIuVoWFmFrDZJpqph4/s1600/Indie-Games-Fund.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTpOM4puPIjsryzghGhKofJXcfVQVrIGAffB0E5gTR1q8QD3stIbxs7wItvjI0tAIsB28m13rumYroFZwCdf-Cjg94K3_Y7OdBjLNXPIfvdSA7omQWrp6f7nX2hdHsD8hw2ZZ5Bj3GqW8ulzXYJm9kZwuzxMFrSKzL8MH-B26hsWIuVoWFmFrDZJpqph4/s1600/Indie-Games-Fund.gif" style="display: none;" />
<em>Posted by Daniel Trócoli – Google Play Partnerships</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6FuJUulmraTqTod7BE9mRjXUrJAn2QQzDQStGyFejA7x7Zrj9-aORw4hevRAchIVgjMRU6-OF6p8fzqbRqRIwyjdIVtLNZlfpwdupG9iit94SmIiKycG_TUoE7hfWv4a3AFN7G8MUhf9jr6w3FMHuSLju0i6A6ioc_SXKEA9o1LQFvYiF2f0Iu3zxgXY/s1600/image3%20%282%29.jpg"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6FuJUulmraTqTod7BE9mRjXUrJAn2QQzDQStGyFejA7x7Zrj9-aORw4hevRAchIVgjMRU6-OF6p8fzqbRqRIwyjdIVtLNZlfpwdupG9iit94SmIiKycG_TUoE7hfWv4a3AFN7G8MUhf9jr6w3FMHuSLju0i6A6ioc_SXKEA9o1LQFvYiF2f0Iu3zxgXY/s1600/image3%20%282%29.jpg" /></a>
<p>We're thrilled to announce the return of <b><a href="https://rsvp.withgoogle.com/events/indies-fund-2025" target="_blank">Google Play's Indie Games Fund</a> (IGF) in Latin America</b> for its fourth consecutive year! This year, we're once again committing <b>$2 million</b> to empower another <b>10 indie game studios</b> across the region. With this latest round of funding, our total investment in Latin American indie games will reach an impressive <b>$8 million USD</b>.</p>
<p>Since its inception, the IGF has been a cornerstone of our commitment to fostering growth for developers of all sizes on Google Play. We've seen firsthand the transformative impact this support has had, enabling studios to expand their teams, refine their creations, and reach new audiences globally.</p>
<h2><span style="font-size: x-large ;">What's in store for the Indie Games Fund in 2025?</span></h2>
<p>Just like in previous years, selected small game studios based in Latin America will receive a share of the $2 million fund, along with support from the Google Play team.</p>
<p>As <a href="https://vishgamestudio.com/" target="_blank">Vish Game Studio</a>, a previously selected studio, shared: <b>"The IGF was a pivotal moment for our studio, boosting us to the next level and helping us form lasting connections."</b> We believe in fostering these kinds of pivotal moments for all our selected studios.</p>
<p>The program is open to indie game developers who have already launched a game, whether it's on Google Play, another mobile platform, PC, or console. Each selected recipient will receive between <b>$150,000 and $200,000</b> to help them elevate their game and realize their full potential.</p>
<p><b>Check out all eligibility criteria and <a href="https://rsvp.withgoogle.com/events/indies-fund-2025" target="_blank">apply now</a>!</b> Applications will close at <b>12:00 PM BRT on July 31, 2025</b>. To give your application the best chance, remember that <b>priority will be given to applications received by 12:00 PM BRT on July 15, 2025</b>.</p><br/>
<div><br /><br /></div>
<image><div style="text-align: center;"><img alt="Google Play logo" border="0" height="41" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/w200-h41/lockup_ic_Google_Play_H_260x53px_clr.png" width="200" /></div></image>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-26358426333975640692025-06-30T09:00:00.000-07:002025-06-30T10:18:18.635-07:00Top announcements to know from Google Play at I/O ‘25<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyVIhOTz7TNOMhGsDK11ybJfdsl719E-NWK6WVwW7AGkyAgRVcRyuwXm_8AGF8qNWNzF1WLQcDdhm4E3ypWqwvaMPdvWDGGib9kXkHrxKWzGvGwSKeOli6xjY1ng2CMRpGxefLGgaJH-zRfgGe5jyvnLy8c490CWESvJlsjwd-94_vsHLYpasu4fe0rQ8/s1600/Play-Spotlight-Android.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyVIhOTz7TNOMhGsDK11ybJfdsl719E-NWK6WVwW7AGkyAgRVcRyuwXm_8AGF8qNWNzF1WLQcDdhm4E3ypWqwvaMPdvWDGGib9kXkHrxKWzGvGwSKeOli6xjY1ng2CMRpGxefLGgaJH-zRfgGe5jyvnLy8c490CWESvJlsjwd-94_vsHLYpasu4fe0rQ8/s1600/Play-Spotlight-Android.gif" style="display: none;" />
<em>Posted by Raghavendra Hareesh Pottamsetty – Google Play Developer and Monetization Lead</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaKBH1dqiYT29n3MSy20WeNK2-0fZOSQnY7EvAmpY6YggVJ7g0XcPgX0DBDJVKiK0DZgKI8LQKBk4XbRyk8MKUXE9pGHaYmZBcdaeZKJ7fAZesMpW6kO-P0FQNEyHTqZ9qU33nMjTWMc6CvLqiuW3tk3kkkTKPUufZYvGRUHsLZ_fcigxtFR4_uX6MWZM/s1600/buiilding-excellent-adaptive-apps-google-io.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaKBH1dqiYT29n3MSy20WeNK2-0fZOSQnY7EvAmpY6YggVJ7g0XcPgX0DBDJVKiK0DZgKI8LQKBk4XbRyk8MKUXE9pGHaYmZBcdaeZKJ7fAZesMpW6kO-P0FQNEyHTqZ9qU33nMjTWMc6CvLqiuW3tk3kkkTKPUufZYvGRUHsLZ_fcigxtFR4_uX6MWZM/s1600/buiilding-excellent-adaptive-apps-google-io.png" /></a>
<p>At Google Play, we're dedicated to helping people discover experiences they'll love, while empowering developers like you to bring your ideas to life and build successful businesses. This year, Google I/O was packed with exciting announcements designed to do just that. For a comprehensive overview of everything we shared, be sure to check out our blog post recapping <a href="https://android-developers.googleblog.com/2025/05/io-2025-whats-new-in-google-play.html" target="_blank">What's new in Google Play</a>.</p>
<p>Today, we'll dive specifically into the latest updates designed to help you streamline your subscriptions offerings and maximize your revenue on Play. Get a quick overview of these updates in our video below, or read on for more details.</p>
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/Cny82VuONU4" width="100%" youtube-src-id="Cny82VuONU4"></iframe>
<h2><span style="font-size: x-large;">#1: Subscriptions with add-ons: Streamlining subscriptions for you and your users</span></h2>
<p>We're excited to announce multi-product checkout for subscriptions, a new feature designed to streamline your purchase flow and offer a more unified experience for both you and your users. This enhancement allows you to <b>sell subscription add-ons right alongside your base subscriptions</b>, all while maintaining a <b>single, aligned payment schedule</b>.</p>
<p>The result? A simplified user experience with just one price and one transaction, giving you more control over how your subscribers upgrade, downgrade, or manage their add-ons. Learn more about <a href="https://developer.android.com/google/play/billing/subscription-with-addons" target="_blank">how to create add-ons</a>.</p>
<image><div style="text-align: center;"><img alt="base subscriptions and add-ons together in a single, streamlined transaction on Google Play" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEircyC1hvHQQ9bdAhNdCl9SA_V71TqI25P_HgsiD1uc90wEzQuk_ZjstZOqTMZVLVJAcVJqRrO6hZ2FeogebO8uUgerhlH6TRKE4DPFv0IwK42xvpk5OKCyKkOT99nqRuZWZ-VWQ4vDCfJd4EmlC2NGzjm89HTXnnLZ0-mg1zuLmglffjFSlXFErdNKfLM/s16000/multi-product-checkout-google-play.png" width="50%" /></div><imgcaption><center><em>You can now sell base subscriptions and add-ons together in a single, streamlined transaction</em></center></imgcaption></image>
<h2><span style="font-size: x-large;">#2: Showcasing benefits in more places across Play: Increasing visibility and value</span></h2>
<p>We're also making it easier for you to <b>retain more of your subscribers</b> by showcasing subscription benefits in more key areas across Play. This includes the <b>Subscriptions Center, within reminder emails, and even during the purchase and cancellation processes</b>. This increased visibility has already proved effective, <b>reducing voluntary churn by 2%</b>. To take advantage of this powerful new capability, be sure to enter your subscription benefits details in Play Console.</p>
<image><div style="text-align: center;"><img alt="value notifications across subscriptions center, email reminders, and during purchase transactions, shown across form factors on Google Play" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMzVggvydb-1ROXWO-lQzYeH5nNzH_eR4AFE6f6q_hrTHIbSPUP3zbk93byZ7g9l8WFw6btBKlihJHrxdHjc9UIihQxzOo-3fnPE4FM8CZ7iemDNiM5AR-n2DF9_W4nYPC8xnJ9yVUxiL1IMdlUD1zpGAZUU-kb5aQ4ur48Foh1Fnxoe3C69sTSxongj8/s16000/increased-visibility-value-reminders-google-play.png" /></div><imgcaption><center><em>To help reduce voluntary churn, we’re showcasing your subscriptions benefits across Play</em></center></imgcaption></image>
<h2><span style="font-size: x-large;">#3: New grace period and account hold duration: Decreasing involuntary churn</span></h2>
<p>Another way we’re helping you maximize your revenue is by extending grace periods and account hold durations to tackle unintended subscription losses, which often occur when payment methods unexpectedly decline.</p>
<p>Now, you can customize both the grace period (when users retain access while renewal is attempted) and the account hold period (when access is suspended). You can set a grace period of up to 30 days and an account hold period of up to 60 days. However, the total combined recovery period (grace period + account hold) cannot exceed 60 days.</p>
<p>This means instead of an immediate cancellation, your users have a longer window to update their payment information. Developers who've already extended their decline recovery period—from 30 to 60 days—have seen impressive results, with an <b>average 10% reduction in involuntary churn for renewals</b>. Ready to see these results for yourself? Adjust your grace period and account hold durations in Play Console today.</p>
<image><div style="text-align: center;"><img alt="a ten percent reduction in involuntary churn on Google Play according to internal Google data" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsfVXTuFZyEqFPciO0qGqtNS_2WwVuk32WzOmSxbyG_ObP1EBTN30A5jcsvWqhB4n_hPkwe17QyYzLLQCd5RyC0ejBDlMsKVg4-Q6d6GvtIkcxFzBH73Mgcn2AlJ_OeLLuexVThktmeYa7hBW_IjF265ZTkj7VBNzF8ZWq0RjIuF5CrxMqUUQIBaCFXwU/s16000/reduction-involuntary-churn-google-play.png" /></div><imgcaption><center><em> Developers who extend their decline recovery period see an average 10% reduction in involuntary churn</em></center></imgcaption></image><br />
<p>But that’s not all. We’re constantly investing in ways to help you optimize conversion throughout the entire buyer lifecycle. This includes boosting purchase-readiness by prompting users to <b>set up payment methods and verification</b> right from device setup, and we've integrated these prompts into highly visible areas like the Play and Google account menus. Beyond that, we're continuously <b>enabling payments in more markets</b> and <b>expanding payment options</b>. Our AI models are even working to <b>optimize in-app transactions</b> by suggesting the right payment method at the right time, and we're bringing buyers back with <b>effective cart abandonment reminders</b>.</p>
<p>That’s it for our top announcements from Google I/O 2025, but there’s so many more updates to discover from this year’s event. Check out <a href="https://android-developers.googleblog.com/2025/05/io-2025-whats-new-in-google-play.html" target="_blank">What's new in Google Play</a> to learn more, and to dive deeper into the session details, view the <a href="https://goo.gle/io25-google-play" target="_blank">Google Play I/O playlist</a> for all the announcements.</p>
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/T41OD37tI54" width="100%" youtube-src-id="T41OD37tI54"></iframe>
<div><br /><br /></div>
<image><div style="text-align: center;"><img alt="Google Play logo" border="0" height="41" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/w200-h41/lockup_ic_Google_Play_H_260x53px_clr.png" width="200" /></div></image>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-55107899377891947272025-06-30T08:45:00.000-07:002025-06-30T14:15:02.827-07:00Get ready for the next generation of gameplay powered by Play Games Services<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2GINIZzbGAQt_q19MzC-wsUxH2wUXfNwZEWxkcAhAven9qlNiYrvhKkY44SmYoBt0He_tMQNyABj2pbvtTzmNoMyo19pnlimkz8Rp8y4wPA27Y1k_1ryV4APhYjjeYgQ9j16U3l9ChnNENE9186ebEtzfdRa92uAq3Lcu3lyS41bttAWwDg5KDk57fyI/s16000/PlayPoints_HayDay_1210x720_v03.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2GINIZzbGAQt_q19MzC-wsUxH2wUXfNwZEWxkcAhAven9qlNiYrvhKkY44SmYoBt0He_tMQNyABj2pbvtTzmNoMyo19pnlimkz8Rp8y4wPA27Y1k_1ryV4APhYjjeYgQ9j16U3l9ChnNENE9186ebEtzfdRa92uAq3Lcu3lyS41bttAWwDg5KDk57fyI/s16000/PlayPoints_HayDay_1210x720_v03.gif" style="display: none;" />
<em>Posted by Chris Wilk – Group Product Manager, Games on Google Play</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOf41DyZuJH2hbXcQ8kA_JzNjzJAEGa7YCAS9PVjVs19Wm07sDhxNUfG44IZthkio_BN2tpeq5wa_SZrZpwlJRutQupBTu7QwsQur_FohmwDUKyTr0AaBd9DepBRjsqg8rypBOeReoF1N6CCJ9TOlpy-U8v1BPN6uFbD5FuZsyDd6V2MkH1e4Rjc7wBAk/s1600/get-ready-next-generation-gameplay-play-games-services.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOf41DyZuJH2hbXcQ8kA_JzNjzJAEGa7YCAS9PVjVs19Wm07sDhxNUfG44IZthkio_BN2tpeq5wa_SZrZpwlJRutQupBTu7QwsQur_FohmwDUKyTr0AaBd9DepBRjsqg8rypBOeReoF1N6CCJ9TOlpy-U8v1BPN6uFbD5FuZsyDd6V2MkH1e4Rjc7wBAk/s1600/get-ready-next-generation-gameplay-play-games-services.png" /></a>
<p>To captivate players and grow your game, you need tools that enhance discovery and retention. <a href="https://developer.android.com/games/pgs/overview" target="_blank">Play Games Services (PGS)</a> is your key to unlocking a suite of services that connect you with over 2 billion monthly active players. PGS empowers you to drive engagement through features like <b>achievements</b> and increase retention with <b>promotions tailored to each gameplay progress</b>. These tools are designed to help you deliver relevant and compelling content that keeps players coming back.</p>
<p>We are continuously evolving gaming on Play, and this year, we're introducing more PGS-powered experiences to give you deeper player insights and greater visibility in the Play Store. To access these latest advancements and ensure continued functionality, you must migrate from PGS v1 to PGS v2 by May 2026. Let’s take a closer look at what’s new:</p>
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/v-6b_wWF96U" width="100%" youtube-src-id="v-6b_wWF96U"></iframe>
<h2><span style="font-size: x-large;">Drive discovery and engagement by rewarding gameplay progress</span></h2>
<p>We’re fundamentally transforming how <a href="https://developer.android.com/games/pgs/achievements" target="_blank">achievements</a> work in the Play Store, making them a key driver for a great gaming experience. Now deeply embedded across the store, achievements are easily discoverable via search filters and game detail pages, and further drive engagement when offered with Play Points.</p>
<p>At a minimum, you should have at least 15 achievements spread across the lifetime of the game, in the format of <a href="https://developer.android.com/games/pgs/achievements#incremental-achievements" target="_blank">incremental achievements</a> to show progress. Games that enable players to earn at least 5 achievements in the first 2 hours of gameplay are most successful in driving deeper engagement<sup>*</sup>.</p>
<p>The most engaging titles offer 40 or more achievements with diverse types of goals including leveling up characters, game progression, hidden surprises, or even failed attempts. To help you get the most out of achievements, we’ve made it easier to create achievements with <b><a href="https://developer.android.com/games/pgs/achievements#import-achievements" target="_blank">bulk configuration</a> in Play Console</b>.</p>
<p>For eligible titles<sup>*</sup>, Play activates quests to reward players for completing achievements - for example with Play Points. Supercell activated quests for <a href="https://play.google.com/store/apps/details?id=com.supercell.hayday" target="_blank">Hay Day</a>, leading to an average 177% uplift in installs<sup>*</sup>. You can tailor your quests to achieve specific campaign objectives, whether it's attracting high-value players or driving spend through repeated engagement, all while making it easy to jump back into your game.</p>
<image><div style="text-align: center;"><img alt="Achievement-based quests allowing users to grow their farm and earn Play Points in the mobile game Hay Day on Google Play" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2GINIZzbGAQt_q19MzC-wsUxH2wUXfNwZEWxkcAhAven9qlNiYrvhKkY44SmYoBt0He_tMQNyABj2pbvtTzmNoMyo19pnlimkz8Rp8y4wPA27Y1k_1ryV4APhYjjeYgQ9j16U3l9ChnNENE9186ebEtzfdRa92uAq3Lcu3lyS41bttAWwDg5KDk57fyI/s16000/PlayPoints_HayDay_1210x720_v03.gif" /></div><imgcaption><center><em>Hay Day boosted new installs with achievement-based quests</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Increase retention with tailored promotions</span></h2>
<p><a href="https://play.google.com/console/about/programs/promotionalcontent/" target="_blank">Promotional content</a> is a vital tool for you to highlight new events, major content updates, and exciting offers within your game. It turns Play into a direct marketing channel to re-engage with your players. We've enhanced audience targeting capabilities so you can tailor your content to reach and convert the most relevant players.</p>
<p>By integrating PGS, you can use the <a href="https://support.google.com/googleplay/android-developer/answer/14840298" target="_blank"><b>Play Grouping API</b></a> to create custom segments based on gameplay context<sup>*</sup>. Using this feature, Kabam launched promotional content to custom audiences for <a href="https://play.google.com/store/apps/details?id=com.kabam.marvelbattle" target="_blank">Marvel Contest of Champions</a>, resulting in a 4x increase in lapsed user engagement<sup>*</sup>.</p>
<image><div style="text-align: center;"><img alt="Marvel Contest of Champions increased retention with targeted promotional content on Google Play" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8a_QX0P9QmSJb5pAjjhQmy11cBaTohh6k959mPlL-xlmNMkbMWLLyYVDykluIpMKubq7wP3vKYpK15uhil53ZX7NEfQfkKmk7FU2KuVAzO2HAX5yv0k1_OFPErgtTxj8Y72hduesqYD7Xcb2Xz_RA3EPfAnnqMpFR5sRGCOY7MaWTEQ-lBg27giey3jQ/s16000/marvel-conest-champions-promo-content-google-play.jpg" /></div><imgcaption><center><em>Marvel Contest of Champions increased retention with targeted promotional content</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Start implementing PGS features today</span></h2>
<p>PGS is designed to make the sign-in experience more seamless for players, automatically syncing their progress and identity across Android devices. With a single tap, they can pick up where they left off or start a new game from any screen. Whether you use your own <a href="https://developer.android.com/games/pgs/signin#multiple-sign-in-methods" target="_blank">sign-in solution</a>, services from third parties, or a combination of both, we've made it easier to integrate Play Games Services with the <a href="https://developer.android.com/games/pgs/recall" target="_blank">Recall API</a>.</p>
<p>To ensure a consistent sign-in experience for all players, we’re phasing out PGS v1.</p>
<blockquote>All games currently using PGS v1 must migrate to PGS v2 by <b>May 2026</b>. After this date, you will no longer be able to publish or update games that use the v1 SDK.</blockquote>
<p>Below you'll find the timeline to plan your migration:</p><br />
<div align="left">
<table class="fr-table-selection-hover" style="border-collapse: collapse; border: none; width: 100%;">
<tbody>
<tr>
<td colspan="2" style="border: 1pt solid rgb(0, 0, 0);">
<h3><span style="font-size: large;">Migration guide</span></h3>
</td>
</tr>
<tr>
<td colspan="2" style="border: 1pt solid rgb(0, 0, 0);"><ul><li><a href="https://developer.android.com/games/pgs/migration_overview"><b>Migration Overview</b></a></li><li><a href="https://developer.android.com/games/pgs/android/migrate-to-v2"><b>Migrate to Play Games Services v2 (Java or Kotlin)</b></a></li><li><a href="https://developer.android.com/games/pgs/unity/migrate-to-v2"><b>Migrate to Play Games Services v2 (Unity)</b></a></li></ul></td>
</tr>
<tr>
<td style="border: 1pt solid rgb(0, 0, 0); width: 20%;">
<b>May 2025</b>
</td>
<td style="border: 1pt solid rgb(0, 0, 0); width: 80%;">
As announced at I/O, new apps using PGS v1 can no longer be published. While existing apps can release updates with v1 and the APIs are still functional, you’ll need to migrate by May 2026, and APIs will be fully shut down in 2028.
</td>
</tr>
<tr>
<td style="border: 1pt solid rgb(0, 0, 0); width: 20%;"><b>May 2026
</b></td>
<td style="border: 1pt solid rgb(0, 0, 0); width: 80%;">
APIs are still functional for users, but are no longer included in the SDK. New app versions compiled with the most recent SDK would fail in the build process if your code still uses the removed APIs. If your app still relies on any of these APIs, you should migrate to PGS v2 as soon as possible.
</td>
</tr>
<tr>
<td style="border: 1pt solid rgb(0, 0, 0); width: 20%;">
<b>Q3 2028</b>
</td>
<td style="border: 1pt solid rgb(0, 0, 0); width: 80%;">
APIs are no longer functional and will fail when a request is sent by an app.
</td>
</tr>
</tbody>
</table>
</div>
<h2><span style="font-size: x-large;">Looking ahead, more opportunities powered by PGS</span></h2>
<p>Coming soon, players will be able to generate unique, AI-powered avatars within their profiles – creating fun, diverse representations of their gaming selves. With PGS integration, <a href="https://developers.google.com/android/reference/com/google/android/gms/games/Player#public-abstract-uri-geticonimageuri" target="_blank">developers can allow players</a> to carry over their avatar within the game. This enables players to showcase their gaming identity across the entire gameplay experience, creating an even stronger motivation to re-engage with your game.</p>
<image><div style="text-align: center;"><img alt="Gen AI avatar profiles create player-centric experiences on Google Play" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdH9GYIze8k6qk_hwSuunoc3q-WAn9iMDswwXG1RhHJIpPHtsf-6i8HGegad3u23JaqBBORWzQSMnzrD1BMXOne_epgQldM0sz1IGy-TiVrFOu5F-TP4EC1R49M1Gj5RUinTVwAlj4NFFLcuMl3xkoBoEGnNHK9niy2nSk4HFbPzrXEPN71nyL6QiO3y0/s16000/gen-ai-avatar-profiles-google-play.png" /></div><imgcaption><center><em>Gen AI avatar profiles create more player-centric experiences</em></center></imgcaption></image><br />
<p>PGS is the foundational tool for maximizing your business growth on Play, enabling you to tailor your content for each player and access the latest gameplay innovations on the platform. Stay tuned for more PGS features coming this year to provide an even richer player experience.</p><br />
<div><small><i><sup>*</sup> To be eligible, the title must participate in Play Points, integrate Play Games Services v2, and have achievements configured in Play Console.</i></small></div>
<div><small><i><sup>*</sup> Data source from partner. Average incremental installs over a 14-day period.</i></small></div>
<div><small><i><sup>*</sup> Data source from partner.</i></small></div>
<div><small><i><sup>*</sup> The Play Grouping API provides strong measures to protect privacy for end users, including user-visible notification when the API is first used, and opt-out options through <a href="https://myactivity.google.com/myactivity" target="_blank">My Activity</a>.</i></small></div>
<div><br /><br /></div>
<image><div style="text-align: center;"><img alt="Google Play logo" border="0" height="41" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/w200-h41/lockup_ic_Google_Play_H_260x53px_clr.png" width="200" /></div></image>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-40357296664050378822025-06-25T10:00:00.000-07:002025-06-25T10:19:15.635-07:00How Mecha BREAK is driving PC-only growth on Google Play Games<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhSUth8Cfei07GK2l51NX2C3YZtpNSL5boOVFQLAwGomJ_ofC2hBgZWLrRHBeAYpVSK18XagoymwSCydKpT3vGNsZD-D1Gv4NxQUSw_C1d6L6V57lplspNoDyEjT8PcMZynJjTWZ7MYIaoQlibQZxHMoXAlpNV7fbYZAQ0H2W2Y9KAPNj3G_SDjvExxA/s1600/MechaBreak_Game_Footage_1200%E2%80%8A%C3%97%E2%80%8A675_25FPS%20low.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhSUth8Cfei07GK2l51NX2C3YZtpNSL5boOVFQLAwGomJ_ofC2hBgZWLrRHBeAYpVSK18XagoymwSCydKpT3vGNsZD-D1Gv4NxQUSw_C1d6L6V57lplspNoDyEjT8PcMZynJjTWZ7MYIaoQlibQZxHMoXAlpNV7fbYZAQ0H2W2Y9KAPNj3G_SDjvExxA/s1600/MechaBreak_Game_Footage_1200%E2%80%8A%C3%97%E2%80%8A675_25FPS%20low.gif" style="display: none;" />
<em>Posted by Kosuke Suzuki – Director, Games on Google Play</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL08W-jxKKecewII5TdqX34k7pNAtle6IRXK9cGLQcR5hUVEP7FjuojsTg_h9HaCemFud6Tnqhx1b7USsjbpxHKOwvnEpi49gDaNMJFXkuUeTwJ4-WcIlLne6QA1DTl_fuGIJ5Mrr_Ar-pC3E4gmdTHK44nhgSJ2jgSCN2guw-LE8atMhuvqI49qEi1lo/s1600/Mecha-Break-Case-Study-banner.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL08W-jxKKecewII5TdqX34k7pNAtle6IRXK9cGLQcR5hUVEP7FjuojsTg_h9HaCemFud6Tnqhx1b7USsjbpxHKOwvnEpi49gDaNMJFXkuUeTwJ4-WcIlLne6QA1DTl_fuGIJ5Mrr_Ar-pC3E4gmdTHK44nhgSJ2jgSCN2guw-LE8atMhuvqI49qEi1lo/s1600/Mecha-Break-Case-Study-banner.png" /></a>
<p>On July 1, Amazing Seasun Games is set to unveil its highly anticipated action shooting game - <i><a href="https://play.google.com/pc-store/games/details?id=com.xishanju.mechabreak" target="_blank">Mecha BREAK</a></i>, with a multiplatform launch across PC and Console. A key to their PC growth strategy is <a href="https://play.google.com/googleplaygames" target="_blank">Google Play Games on PC</a>, enabling the team to build excitement with a pre-registration campaign, maximize revenue with PC earnback, and ensure a secure, top-tier experience on PC.</p>
<h2><span style="font-size: x-large;">Building momentum with pre-registration</span></h2>
<p>With a legacy of creating high-quality games since 1995, Amazing Seasun Games has already seen Mecha BREAK attract over 3.5 million players during the last beta test. To build on this momentum, the studio is bringing their game to Google Play Games on PC to open pre-registration and connect with its massive player audience.</p>
<blockquote><i>"We were excited to launch on Google Play Games on PC. We want to make sure all players can enjoy the Mecha BREAK experience worldwide."</i>
<div><b>- Kris Kwok, Executive Producer of Mecha BREAK and CEO of Amazing Seasun Games</b></div></blockquote>
<image><div style="text-align: center;"><img alt="screenshot of Mecha BREAK's pre-registration on Google Play Games on PC homepage" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGxb_EeR9rPuh51QH-bwuWo4nMeyAmO7wCQjO_SmumdZC3GfFwzPYOWnLgPG79WPSCTn0rrbX3NpsFlybatvY9-OAWco1AD4NxDaiR8mnGeUWPVbBfc3MRHEJmO4KhvEclT3-Z9y1X4H-k23dFE9HvIfDWJol2qNhEWQf0SzPhzuE4Nde8Jj7GstBEcbA/s1600/Mecha-Break-Case-Study-meta.png" width="100%" /></div><imgcaption><center><em>Mecha BREAK pre-registration on Google Play Games on PC homepage</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Accelerating growth with the Native PC program</span></h2>
<p><i>Mecha BREAK</i>'s launch strategy includes leveraging the <a href="https://play.google.com/console/about/programs/gpgonpc/#bring-your-native-pc-games-to-the-google-play-ecosystem" target="_blank">native PC earnback</a>, a program that gives native PC developers the opportunity to unlock up to 15% in additional earnback.</p>
<p>Beyond earnback, the program offers comprehensive support for PC game development, distribution, and growth. Developers can manage PC builds in Play Console, simplifying the process of packaging PC versions, configuring releases, and managing store listings. Now, you can also view PC-specific sales reports, providing a more precise analysis of your game's financial performance.</p>
<h2><span style="font-size: x-large;">Delivering a secure and high quality PC experience</span></h2>
<p>Mecha BREAK is designed to deliver an intense and high-fidelity experience on PC. Built on a cutting-edge, proprietary 3D engine, the game offers players three unique modes of fast-paced combat on land and in the air.</p>
<ul><ul>
<li><b>Diverse combat styles:</b> Engage in six-on-six hero battles, three-on-three matches, or the unique PvPvE extraction mode "Mashmak".</li></ul><ul>
<li><b>Free customization options:</b> Create personalized characters with a vast array of colors, patterns and gameplay styles, from close-quarters brawlers to long-range tactical units.</li>
</ul></ul>
<image><div style="text-align: center;"><img alt="moving image of Mecha BREAK's gameplay on Google Play Games on PC" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXhSUth8Cfei07GK2l51NX2C3YZtpNSL5boOVFQLAwGomJ_ofC2hBgZWLrRHBeAYpVSK18XagoymwSCydKpT3vGNsZD-D1Gv4NxQUSw_C1d6L6V57lplspNoDyEjT8PcMZynJjTWZ7MYIaoQlibQZxHMoXAlpNV7fbYZAQ0H2W2Y9KAPNj3G_SDjvExxA/s1600/MechaBreak_Game_Footage_1200%E2%80%8A%C3%97%E2%80%8A675_25FPS%20low.gif" width="100%" /></div><imgcaption><center><em>Mecha BREAK offers a high-fidelity experience on PC</em></center></imgcaption></image><br />
<p>The decision to integrate with Google Play Games on PC was driven by the platform's robust security infrastructure, including tools such as <a href="https://developer.android.com/google/play/integrity/overview" target="_blank">Play Integrity API</a>, supporting large-scale global games like <i>Mecha BREAK</i>.</p>
<blockquote><i>"Mecha BREAK’s multiplayer setting made Google Play Games a strong choice, as we expect exceptional operational stability and performance. The platform also offers advanced malware protection and anti-cheat capabilities."</i>
<div><b> - Kris Kwok, Executive Producer of Mecha BREAK and CEO of Amazing Seasun Games</b></div></blockquote>
<h2><span style="font-size: x-large;">Bring your game to Google Play Games on PC</span></h2>
<p>This year, the <a href="https://play.google.com/console/about/programs/gpgonpc/" target="_blank">native PC program</a> is open to all PC games, including PC-only titles. If you're ready to expand your game's reach and accelerate its growth, learn more about the eligibility requirements and how to join the program today.</p><br />
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/s260/lockup_ic_Google_Play_H_260x53px_clr.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="53" data-original-width="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/s200/lockup_ic_Google_Play_H_260x53px_clr.png" width="200" /></a></div>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-29977536994597465602025-06-23T10:01:00.000-07:002025-06-30T11:39:43.010-07:00Top 3 updates for Android developer productivity at Google I/O ‘25<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn1LmZMek4uOoAaQ_DeKUdl4rpvQcucsN7FfiN0VHWEtEnKMwAvmi9N5V71fj-nswyEqOKNI6ohM-taUgODmJh3WZLfO1W7imcMthWhkPDo8u4w0y22lipfPkMZzHRqW5Rt4A5tRfqQEa9L3SojYyC2EeFtWAfOwnWADRWX0WjEhwP1sP7Qn_LWt6p5FU/s1600/developer-productivity-meta.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn1LmZMek4uOoAaQ_DeKUdl4rpvQcucsN7FfiN0VHWEtEnKMwAvmi9N5V71fj-nswyEqOKNI6ohM-taUgODmJh3WZLfO1W7imcMthWhkPDo8u4w0y22lipfPkMZzHRqW5Rt4A5tRfqQEa9L3SojYyC2EeFtWAfOwnWADRWX0WjEhwP1sP7Qn_LWt6p5FU/s1600/developer-productivity-meta.png">
<em>Posted by Meghan Mehta – Android Developer Relations Engineer</em>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="-GikklXjkgM" width="100%" height="413" src="https://www.youtube.com/embed/-GikklXjkgM"></iframe>
<h2><span style="font-size: x-large">#1 Agentic AI is available for Gemini in Android Studio</span></h2>
<p><a href="https://developer.android.com/gemini-in-android" target="_blank">Gemini in Android Studio</a> is the AI-powered coding companion that makes you more productive at every stage of the dev lifecycle. At Google I/O 2025 we previewed new agentic AI experiences: <a href="https://www.youtube.com/watch?v=mP1tlIKK0R4" target="_blank">Journeys</a> for Android Studio and <a href="https://www.youtube.com/watch?v=ubyPjBesW-8" target="_blank">Version Upgrade Agent</a>. These innovations make it easier for you to build and test code. We also announced <a href="https://android-developers.googleblog.com/2025/06/agentic-ai-takes-gemini-in-android-studio-to-next-level.html" target="_blank">Agent Mode</a>, which was designed to handle complex, multi-stage development tasks that go beyond typical AI assistant capabilities, invoking multiple tools to accomplish tasks on your behalf. We’re excited to see how you leverage these <a href="https://android-developers.googleblog.com/2025/06/agentic-ai-takes-gemini-in-android-studio-to-next-level.html" target="_blank">agentic AI experiences which are now available</a> in the latest <a href="https://developer.android.com/studio/preview" target="_blank">preview version of Android Studio</a> on the canary release channel.</p>
<p>You can also use Gemini to automatically generate Jetpack Compose previews, as well as transform UI code using natural language, saving you time and effort. Give Gemini more context by attaching images and project files to your prompts, so you can get more relevant responses. And if you’re looking for enterprise-grade privacy and security features backed by Google Cloud, <a href="https://developer.android.com/gemini-for-businesses" target="_blank">Gemini in Android Studio for businesses</a> is now available. Developers and admins can unlock these features and benefits by subscribing to <a href="https://codeassist.google/products/business" target="_blank">Gemini Code Assist</a> Standard or Enterprise editions.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="KXKP2tDPW4Y" width="100%" height="413" src="https://www.youtube.com/embed/KXKP2tDPW4Y"></iframe>
<h2><span style="font-size: x-large">#2 Build better apps faster with the latest stable release of Jetpack Compose</span></h2>
<p><a href="https://developer.android.com/compose" target="_blank">Compose</a> is our recommended UI toolkit for Android development, used by over <a href="https://developer.android.com/compose#apps-built-with-compose" target="_blank">60% of the top 1K apps on Google Play</a>. We released a <a href="https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html" target="_blank">new version of our Jetpack Navigation library: Navigation 3</a>, which has been rebuilt from the ground up to give you more flexibility and control over your implementation. We unveiled the new <a href="https://m3.material.io/blog/building-with-m3-expressive?utm_source=blog&utm_medium=motion&utm_campaign=IO25" target="_blank">Material 3 Expressive</a> update which provides tools to enhance your product's appeal by harnessing emotional UX, making it more engaging, intuitive, and desirable for your users. The <a href="https://android-developers.googleblog.com/2025/04/whats-new-in-jetpack-compose-april-25.html" target="_blank">latest stable Bill of Materials (BOM) release</a> for Compose adds new features such as autofill support, auto-sizing text, visibility tracking, animate bounds modifier, accessibility checks in tests, and more! This release also includes significant rewrites and improvements to multiple sub-systems including semantics, focus and text optimizations.</p>
<p>These optimizations are available to you with no code changes other than upgrading your Compose dependency. If you’re looking to try out new Compose functionality, the <a href="https://developer.android.com/develop/ui/compose/bom#what_if_i_want_to_try_out_alpha_or_beta_releases_of_compose_libraries" target="_blank">alpha BOM</a> offers new features that we're working on including pausable composition, updates to LazyLayout prefetch, context menus, and others. Finally, we've added Compose support to <a href="https://github.com/android/platform-samples/tree/main/samples/camera/camerax/src/main/java/com/example/platform/camerax/basic/CameraXBasic.kt" target="_blank">CameraX</a> and <a href="https://developer.android.com/media/media3/ui/compose" target="_blank">Media3</a>, making it easier to integrate camera capture and video playback into your UI with Compose idiomatic components.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="89UusPuz8q4" width="100%" height="413" src="https://www.youtube.com/embed/89UusPuz8q4"></iframe>
<h2><span style="font-size: x-large">#3 The new Kotlin Multiplatform (KMP) shared module template helps you share business logic</span></h2>
<p>KMP enables teams to deliver quality Android and iOS apps with less development time. The KMP ecosystem continues to grow: last year alone, over 900 new KMP libraries were published. At Google I/O we released a new Android Studio <a href="https://developer.android.com/kotlin/multiplatform/migrate" target="_blank">KMP shared module template</a> to help you craft and manage business logic, updated <a href="https://developer.android.com/kotlin/multiplatform" target="_blank">Jetpack libraries</a> and new codelabs (<a href="https://developer.android.com/codelabs/kmp-get-started" target="_blank">Getting started with Kotlin Multiplatform</a> and <a href="https://developer.android.com/codelabs/kmp-migrate-room" target="_blank">Migrating your Room database to KMP</a>) to help you get started with KMP. We also shared <a href="https://android-developers.googleblog.com/2025/05/android-kotlin-multiplatform-google-io-kotlinconf-2025.html" target="_blank">additional announcements</a> at KotlinConf.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="gP5Y-ct6QXI" width="100%" height="413" src="https://www.youtube.com/embed/gP5Y-ct6QXI"></iframe><br/>
<p>Learn more about <a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc8I-QieOH8BHBdXBu_m6qB6" target="_blank">what we announced at Google I/O 2025</a> to help you build better apps, faster.</p>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-73574101988804628522025-06-23T10:00:00.000-07:002025-06-23T10:00:00.109-07:00Agentic AI takes Gemini in Android Studio to the next level<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ3Vmdz70OU49TvruUdrMujKEp5PyTvsWP70-nQ071f5KypREpfA18DzW4dwp_WHeZSTW-uFaIL05ZnKNDCzdPr6og0GzN7rAiMOlO3xtxKpOWNQfca4oggymaio8cSpAkEX_pd70ltlPTpwvWx_MckKTdgYtgHG5G-mb-d5T-bIgBccX47QebsDzdxTQ/s1600/AgenticAI_SocialLoop_1280x720_01.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ3Vmdz70OU49TvruUdrMujKEp5PyTvsWP70-nQ071f5KypREpfA18DzW4dwp_WHeZSTW-uFaIL05ZnKNDCzdPr6og0GzN7rAiMOlO3xtxKpOWNQfca4oggymaio8cSpAkEX_pd70ltlPTpwvWx_MckKTdgYtgHG5G-mb-d5T-bIgBccX47QebsDzdxTQ/s1600/AgenticAI_SocialLoop_1280x720_01.gif" style="display: none;" />
<em>Posted by <a href="https://x.com/sandhyam1312" target="_blank">Sandhya Mohan</a> – Product Manager, and <a href="https://bsky.app/profile/josealcerreca.bsky.social" target="_blank">Jose Alcérreca</a> – Developer Relations Engineer </em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAN3pixiL5jrI5QCjO0VlwcuXbmdV8VNvHkVDqRmGnup7p98ECZfvS0F1wg1JoHFuyIlYLwJdty5Mcs2y9e0JGbP3sbEd5rXIPo5oKtn9bPOsNzUde_ZaKd3adWMPLernVzOTJsfitBsj3JSYlzKs9EoUPDW6vFmvw_0-tln1c37X3XhC_4NjXl_tiCqI/s1600/agentic-ai-gemini-android-studio-banner.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAN3pixiL5jrI5QCjO0VlwcuXbmdV8VNvHkVDqRmGnup7p98ECZfvS0F1wg1JoHFuyIlYLwJdty5Mcs2y9e0JGbP3sbEd5rXIPo5oKtn9bPOsNzUde_ZaKd3adWMPLernVzOTJsfitBsj3JSYlzKs9EoUPDW6vFmvw_0-tln1c37X3XhC_4NjXl_tiCqI/s1600/agentic-ai-gemini-android-studio-banner.png" /></a>
<p>Software development is undergoing a significant evolution, moving beyond reactive assistants to <b>intelligent agents</b>. These agents don't just offer suggestions; they can <b>create execution plans</b>, utilize external tools, and make complex, multi-file changes. This results in a more capable AI that can <b>iteratively solve challenging problems</b>, fundamentally changing how developers work.</p>
<p>At Google I/O 2025, we <a href="https://youtu.be/KXKP2tDPW4Y?si=y1xMu4MTESO420VD&t=895" target="_blank">offered a glimpse into our work</a> on agentic AI in Android Studio, the integrated development environment (IDE) focused on Android development. We showcased that by combining agentic AI with the built-in portfolio of tools inside of Android Studio, the IDE is able to assist you in developing Android apps in ways that were never possible before. We are now incredibly excited to announce the next frontier in Android development with <b>the availability of 'Agent Mode' for Gemini in Android Studio</b>.</p>
<p>These features are available in the latest <a href="https://developer.android.com/studio/preview" target="_blank">Android Studio Narwhal Feature Drop Canary</a> release, and will be rolled out to <a href="https://developer.android.com/gemini-for-businesses" target="_blank">business tier subscribers</a> in the coming days. As with all new Android Studio features, we invite developers to <a href="https://developer.android.com/studio/report-bugs" target="_blank">provide feedback</a> to direct our development efforts and ensure we are creating the tools you need to build better apps, faster.</p>
<h2><span style="font-size: x-large;">Agent Mode</span></h2>
<p>Gemini in Android Studio's <a href="http://d.android.com/studio/preview/gemini/agent-mode" target="_blank">Agent Mode</a> is a new experimental capability designed to handle complex development tasks that go beyond what you can experience by just chatting with Gemini.</p>
<p>With Agent Mode, you can describe a complex goal in natural language — from generating unit tests to complex refactors — and the agent formulates an execution plan that can span multiple files in your project and executes under your direction. Agent Mode uses a range of IDE tools for reading and modifying code, building the project, searching the codebase and more to help Gemini complete complex tasks from start to finish with minimal oversight from you.</p>
<p>To use Agent Mode, click Gemini in the sidebar, then select the Agent tab, and describe a task you'd like the agent to perform. Some examples of tasks you can try in Agent Mode include:</p>
<ul><ul>
<li>Build my project and fix any errors</li>
<li>Extract any hardcoded strings used across my project and migrate to strings.xml</li>
<li>Add support for dark mode to my application</li>
<li>Given an attached screenshot, implement a new screen in my application using Material 3</li>
</ul></ul>
<p>The agent then suggests edits and iteratively fixes bugs to complete tasks. You can review, accept, or reject the proposed changes along the way, and ask the agent to iterate on your feedback.</p>
<image><div style="text-align: center;"><img alt="moving image showing Gemini breaking tasks down into a plan with simple steps, and the list of IDE tools it needs to complete each step" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_iWsYepnNDH7Gj19bjf08zQvaLX81l-vqUm7Oaw-rAb8Dzw23Fx_hpexPG-RjUs8jGdhnODTL6JpLY6A5n5KuyKct4Ah9rcRfBvWDV4eWNWKeAMdBPP-CPNB9q0jFZC1OTcZg1vH_WI-ivSr508alXcWavPHA5V7d_SDSTQZ4_numO5qVCrFlqMO7RtQ/s1600/gemini-in-android-studio.gif" /></div><imgcaption><center><em>Gemini breaks tasks down into a plan with simple steps. It also shows the list of IDE tools it needs to complete each step.</em></center></imgcaption></image><br />
<p>While powerful, you are firmly in control, with the ability to review, refine and guide the agent’s output at every step. When the agent proposes code changes, you can choose to accept or reject them.</p>
<image><div style="text-align: center;"><img alt="screenshot of Gemini in Android Studio showing the Agent prompting the user to accept or reject a change" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_MOdlWuZ1kh64G_VA_8U2-MRWHU7zOs3RS9ir8DLfnAJTf3OiCGTqwuKtq8pNeawRtHUUQasiHRpRKX7uu5xfh0jXL276SpjL-gmPZQu_1Nr-lD5IESidnO_EfuI-XPW2b-D2anB5ENSVXUCUVwuKWGYKLrNSxtfjKDIoo2IsaGivL-DvFbhjKbq9QNk/s1600/agent-in-gemini-android-studio.png" /></div><imgcaption><center><em>The Agent waits for the developer to approve or reject a change.</em></center></imgcaption></image><br />
<p>Additionally, you can enable “Auto-approve” if you are feeling lucky 😎 — especially useful when you want to iterate on ideas as rapidly as possible.</p>
<p>You can delegate routine, time-consuming work to the agent, freeing up your time for more creative, high-value work. Try out Agent Mode in the latest preview version of Android Studio – we look forward to seeing what you build! We are investing in building more agentic experiences for Gemini in Android Studio to make your development even more intuitive, so you can expect to see more agentic functionality over the next several releases.</p>
<image><div style="text-align: center;"><img alt="moving image showing that Gemini understanding the context of an app" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0tWxq6yTKECYHyh0z-oza6S-6Girc2qmH1Lozyh8_5D6WowwdnZz66OuhjwVGU0axSOv3-Dkct7vjpkn1Kerj5_EeVjoE6HmN8ByEFSApNL-IZDuFxE7xZVBLZQp4v4RPyUygmk7kTT-9udBnbJPGmji7z2DAIJBjEcecxDv9FJ8vOSmUlBzGUS61iAI/s1600/context-understanding-gemini-in-android-studio.gif" /></div><imgcaption><center><em>Gemini is capable of understanding the context of your app</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Supercharge Agent Mode with your Gemini API key</span></h2>
<image><div style="text-align: center;"><img alt="screenshot of Gemini API key prompt in Android Studio" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmkpKWA7uSvl-mJ-fE6F9Ln4E12yydtyRhFCRz4nABeImVR7gEqlonSFsIhyBtOaHtIA_R6fcXZK3bqDOoQiEKaWrBkzaeTrw-UFFJ-pk0d5MEANzVyRA6BdYzact_Da_5kTNElEo7iKJ8QUDw1JYzA-139Nbo6vOfptCBcb-2M4Qv-RSW34H-KmlQ1O4/s16000/add-or-generate-gemini-api-key.png" /></div></image><br />
<p>The default Gemini model has a generous no-cost daily quota with a limited context window. However, you can now add your own Gemini API key to expand Agent Mode's context window to a massive <b>1 million tokens</b> with Gemini 2.5 Pro.</p>
<p>A larger context window lets you send more instructions, code and attachments to Gemini, leading to even higher quality responses. This is especially useful when working with agents, as the larger context provides Gemini 2.5 Pro with the ability to reason about complex or long-running tasks.</p>
<image><div style="text-align: center;"><img alt="screenshot of how to add your API Key in the Gemini settings" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCXx1ivZCdx9Shko9-63hKCT0BwWyYK4Ryaxgo0dzCkggmGBQ2MXgEdQfizoBRNWO6KbFrd4xjLoXTdiR3iAfEuTgxzW7C0-bzApRitP58NLGxaTiqrulhcnmfffO-T57Prqw6AwstjKoyJmtLkC3fa4p227X25EFPz_mGhXpIykTcoEN0LNXgmnrT4EU/s16000/add-your-gemini-api-key-settings.png" /></div><imgcaption><center><em>Add your API key in the Gemini settings</em></center></imgcaption></image><br />
<p>To enable this feature, get a Gemini API key by navigating to <a href="https://aistudio.google.com/" target="_blank">Google AI Studio</a>. Sign in and get a key by clicking on the “Get API key” button. Then, back in Android Studio, navigate to the settings by going to <b>File</b> (<b>Android Studio</b> on macOS) <b>> Settings > Tools > Gemini</b> to enter your Gemini API key. Relaunch Gemini in Android Studio and get even better responses from Agent Mode.</p>
<p>Be sure to safeguard your Gemini API key, as <a href="https://ai.google.dev/gemini-api/docs/pricing" target="_blank">additional charges</a> apply for Gemini API usage associated with a personal API key. You can monitor your Gemini API key usage by navigating to <a href="https://aistudio.google.com/" target="_blank">AI Studio</a> and selecting <b>Get API key > Usage & Billing</b>.</p>
<p>Note that <a href="https://developer.android.com/gemini-for-businesses" target="_blank">business tier subscribers</a> already get access to Gemini 2.5 Pro and the expanded context window automatically with their Gemini Code Assist license, so these developers will not see an API key option.</p>
<h2><span style="font-size: x-large;">Model Context Protocol (MCP)</span></h2>
<p>Gemini in Android Studio's Agent Mode can now interact with external tools via the Model Context Protocol (MCP). This feature provides a standardized way for Agent Mode to use tools and extend knowledge and capabilities with the external environment.</p>
<p>There are many tools you can connect to the MCP Host in Android Studio. For example you could integrate with the Github MCP Server to create pull requests directly from Android Studio. Here are some additional <a href="https://modelcontextprotocol.io/examples" target="_blank">use cases</a> to consider.</p>
<p>In this initial release of MCP support in the IDE you will configure your MCP servers through a mcp.json file placed in the <a href="https://developer.android.com/studio/troubleshoot#directories" target="_blank">configuration directory</a> of Studio, using the following format:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">{
<span style="color: #ba2121;">"mcpServers"</span>: {
<span style="color: #ba2121;">"memory"</span>: {
<span style="color: #ba2121;">"command"</span>: <span style="color: #ba2121;">"npx"</span>,
<span style="color: #ba2121;">"args"</span>: [
<span style="color: #ba2121;">"-y"</span>,
<span style="color: #ba2121;">"@modelcontextprotocol/server-memory"</span>
]
},
<span style="color: #ba2121;">"sequential-thinking"</span>: {
<span style="color: #ba2121;">"command"</span>: <span style="color: #ba2121;">"npx"</span>,
<span style="color: #ba2121;">"args"</span>: [
<span style="color: #ba2121;">"-y"</span>,
<span style="color: #ba2121;">"@modelcontextprotocol/server-sequential-thinking"</span>
]
},
<span style="color: #ba2121;">"github"</span>: {
<span style="color: #ba2121;">"command"</span>: <span style="color: #ba2121;">"docker"</span>,
<span style="color: #ba2121;">"args"</span>: [
<span style="color: #ba2121;">"run"</span>,
<span style="color: #ba2121;">"-i"</span>,
<span style="color: #ba2121;">"--rm"</span>,
<span style="color: #ba2121;">"-e"</span>,
<span style="color: #ba2121;">"GITHUB_PERSONAL_ACCESS_TOKEN"</span>,
<span style="color: #ba2121;">"ghcr.io/github/github-mcp-server"</span>
],
<span style="color: #ba2121;">"env"</span>: {
<span style="color: #ba2121;">"GITHUB_PERSONAL_ACCESS_TOKEN"</span>: <span style="color: #ba2121;">"<YOUR_TOKEN>"</span>
}
}
}
}
</pre></div>
<div><center><em>Example configuration with two MCP servers</em></center><br />
<p>For this initial release, we support interacting with external tools via the <i>stdio</i> transport as defined in the <a href="https://modelcontextprotocol.io/specification/" target="_blank">MCP specification</a>. We plan to support the full suite of MCP features in upcoming Android Studio releases, including the Streamable HTTP transport, external context resources, and prompt templates.</p>
<p>For more information on how to use MCP in Studio, including the <span style="color: #0d904f; font-family: courier;">mcp.json</span> configuration file format, please refer to the <a href="http://developer.android.com/studio/preview/gemini/agent-mode#add-mcp" target="_blank">Android Studio MCP Host documentation</a>.</p>
<p>By delegating routine tasks to Gemini through Agent Mode, you’ll be able to focus on more innovative and enjoyable aspects of app development. Download the latest preview version of Android Studio on the canary release channel today to try it out, and let us know how much faster app development is for you!</p>
<p>As always, your feedback is important to us – <a href="https://developer.android.com/studio/known-issues" target="_blank">check known issues</a>, <a href="https://developer.android.com/studio/report-bugs" target="_blank">report bugs</a>, <a href="https://developer.android.com/studio/report-bugs" target="_blank">suggest improvements</a>, and be part of our vibrant community on <a href="https://www.linkedin.com/showcase/androiddev/posts/?feedView=all" target="_blank">LinkedIn</a>, <a href="https://medium.com/androiddevelopers" target="_blank">Medium</a>, <a href="https://www.youtube.com/c/AndroidDevelopers/videos" target="_blank">YouTube</a>, or <a href="https://twitter.com/androidstudio" target="_blank">X</a>. Let's build the future of Android apps together!</p>
</div>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-85013063341026358412025-06-16T10:01:00.000-07:002025-06-23T09:59:48.489-07:00Top 3 things to know for AI on Android at Google I/O ‘25<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGrbvjPNwEv5vrSrbuXf6hzYltmdc-6vYGCwiILsy8AB8SZQBiLimrvJaGham-g7COGhcJLle_PkZY6cvIOU4lTqSqZbNRiGNv56eQwTHcR9g5QZUUYuogdCAEk5-5aXlMDaRSH2irUF76DehM0CQ0mJ0zkUfpzNePmViElp4SivlJGqi03CrIYbXTUAU/s1600/AI-on-Android.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGrbvjPNwEv5vrSrbuXf6hzYltmdc-6vYGCwiILsy8AB8SZQBiLimrvJaGham-g7COGhcJLle_PkZY6cvIOU4lTqSqZbNRiGNv56eQwTHcR9g5QZUUYuogdCAEk5-5aXlMDaRSH2irUF76DehM0CQ0mJ0zkUfpzNePmViElp4SivlJGqi03CrIYbXTUAU/s1600/AI-on-Android.gif" style="display: none;" />
<em>Posted by Kateryna Semenova – Sr. Developer Relations Engineer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOX2BHr_Vzaux-H3QG3ocu_7B6V6uT2JsGWJv7B_2V2I-1DBa6V6vTD5DwsI-2p0gI3d8oo7CvisFNSWtqSj6InVlxsGiPAP9eJyaveQGKgoWgGyzTWbdALv0sWXL2qzqN6RDkpG4BcIISye0Iu0aemgtJp8YhxYZ4HtG0TFOLYKrbS1A6L0qtLkcylxQ/s1600/android-spotlight-ai-on-android-banner.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOX2BHr_Vzaux-H3QG3ocu_7B6V6uT2JsGWJv7B_2V2I-1DBa6V6vTD5DwsI-2p0gI3d8oo7CvisFNSWtqSj6InVlxsGiPAP9eJyaveQGKgoWgGyzTWbdALv0sWXL2qzqN6RDkpG4BcIISye0Iu0aemgtJp8YhxYZ4HtG0TFOLYKrbS1A6L0qtLkcylxQ/s1600/android-spotlight-ai-on-android-banner.png" /></a>
<p>AI is reshaping how users interact with their favorite apps, opening new avenues for developers to create intelligent experiences. At Google I/O, we showcased how Android is making it easier than ever for you to build smart, personalized and creative apps. And we’re committed to providing you with the tools needed to innovate across the full development stack in this evolving landscape.</p>
<p>This year, we focused on making AI accessible across the spectrum, from on-device processing to cloud-powered capabilities. Here are the top 3 announcements you need to know for building with AI on Android from Google I/O ‘25:</p>
<h2><span style="font-size: x-large;">#1 Leverage the efficiency of Gemini Nano for on-device AI experiences</span></h2>
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/mP9QESmEDls" width="100%" youtube-src-id="mP9QESmEDls"></iframe>
<p>For on-device AI, we <a href="https://android-developers.googleblog.com/2025/05/on-device-gen-ai-apis-ml-kit-gemini-nano.html" target="_blank">announced a new set of ML Kit GenAI APIs</a> powered by Gemini Nano, our most efficient and compact model designed and optimized for running directly on mobile devices. These APIs provide high-level, easy integration for common tasks including text summarization, proofreading, rewriting content in different styles, and generating image description. Building on-device offers significant benefits such as local data processing and offline availability at no additional cost for inference. To start integrating these solutions explore the <a href="http://goo.gle/mlkit-genai" target="_blank">ML Kit GenAI documentation</a>, the <a href="https://github.com/android/ai-samples/tree/main/ai-catalog" target="_blank">sample on GitHub</a> and watch the "<a href="https://youtu.be/mP9QESmEDls?feature=shared" target="_blank">Gemini Nano on Android: Building with on-device GenAI</a>" talk.</p>
<h2><span style="font-size: x-large;">#2 Seamlessly integrate on-device ML/AI with your own custom models</span></h2>
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/xLmJJk1gbuE" width="100%" youtube-src-id="xLmJJk1gbuE"></iframe>
<p><a href="https://ai.google.dev/edge" target="_blank">The Google AI Edge</a> platform enables building and deploying a wide range of pretrained and custom models on edge devices and supports various frameworks like TensorFlow, PyTorch, Keras, and Jax, allowing for more customization in apps. The platform now also offers <a href="https://developers.googleblog.com/en/litert-maximum-performance-simplified" target="_blank">improved support</a> of on-device hardware accelerators and a new <a href="https://cloud.google.com/blog/products/ai-machine-learning/ai-edge-portal-brings-on-device-ml-testing-at-scale" target="_blank">AI Edge Portal</a> service for broad coverage of on-device benchmarking and evals. If you are looking for GenAI language models on devices where Gemini Nano is not available, you can use other open models via the <a href="https://ai.google.dev/edge/mediapipe/solutions/genai/llm_inference/android" target="_blank">MediaPipe LLM Inference API</a>.</p>
<p>Serving your own custom models on-device can pose challenges related to handling large model downloads and updates, impacting the user experience. To improve this, we’ve launched <a href="https://developer.android.com/google/play/on-device-ai" target="_blank">Play for On-Device AI</a> in beta. This service is designed to help developers manage custom model downloads efficiently, ensuring the right model size and speed are delivered to each Android device precisely when needed.</p>
<p>For more information watch “<a href="https://www.youtube.com/watch?v=xLmJJk1gbuE" target="_blank">Small language models with Google AI Edge</a>” talk.</p>
<h2><span style="font-size: x-large;">#3 Power your Android apps with Gemini Flash, Pro and Imagen using Firebase AI Logic </span></h2>
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/U8Nb68XsVY4" width="100%" youtube-src-id="U8Nb68XsVY4"></iframe>
<p>For more advanced generative AI use cases, such as complex reasoning tasks, analyzing large amounts of data, processing audio or video, or generating images, you can use larger models from the Gemini Flash and Gemini Pro families, and Imagen running in the cloud. These models are well suited for scenarios requiring advanced capabilities or multimodal inputs and outputs. And since the AI inference runs in the cloud any Android device with an internet connection is supported. They are easy to integrate into your Android app by using <a href="http://developer.android.com/ai/gemini" target="_blank">Firebase AI Logic</a>, which provides a simplified, secure way to access these capabilities without managing your own backend. Its SDK also includes support for conversational AI experiences using the <a href="https://firebase.google.com/docs/vertex-ai/live-api" target="_blank">Gemini Live API</a> or generating custom contextual visual assets with <a href="http://d.android.com/ai/imagen" target="_blank">Imagen</a>. To learn more, check out our <a href="https://github.com/android/ai-samples/tree/main/ai-catalog" target="_blank">sample on GitHub</a> and watch "<a href="https://www.youtube.com/watch?v=U8Nb68XsVY4" target="_blank">Enhance your Android app with Gemini Pro and Flash, and Imagen</a>" session.</p>
<p>These powerful AI capabilities can also be brought to life in immersive Android XR experiences. You can find corresponding <a href="http://d.android.com/develop/xr" target="_blank">documentation</a>, <a href="http://goo.gle/android-xr-samples" target="_blank">samples</a> and the technical session: "<a href="https://www.youtube.com/watch?v=YYMt7Ddzz6Y&list=PLWz5rJ2EKKc_HBZR5747Ux5mp8M27xgb0" target="_blank">The future is now, with Compose and AI on Android XR</a>".</p>
<image><div style="text-align: center;"><img alt="Flow cahrt demonstrating Firebase AI Logic integration architecture" border="0" height="399" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlxyIIF3CslZqqFJmWV3bRwrvarojbJBLpu3dZJhgwVHbVtkZP0RwhaasWoakGVkVkzTNU522cbjuOopVVP7WiWa2GdGNoV9gBNiZ0dPpClFULesarMqpyqFgqAU8CM7tsPNdCIg5SJLuytl2_RPlM8LZafBz5oFKK5GZCSUjtBQQKQMLkXRIuQ-r-TiI/w640-h399/Firebase-AI-Logic-integration-architecture.jpg" width="640" /></div><imgcaption><center><em><b>Figure 1:</b> Firebase AI Logic integration architecture</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Get inspired and start building with AI on Android today</span></h2>
<p>We released a new <a href="https://android-developers.googleblog.com/2025/05/androidify-building-ai-driven-experiences-jetpack-compose-gemini-camerax.html" target="_blank">open source app, Androidify</a>, to help developers build AI-driven Android experiences using Gemini APIs, ML Kit, Jetpack Compose, CameraX, Navigation 3, and adaptive design. Users can create personalized Android bot with Gemini and Imagen via the Firebase AI Logic SDK. Additionally, it incorporates ML Kit pose detection to detect a person in the camera viewfinder. The full code sample is <a href="http://github.com/android/androidify" target="_blank">available on GitHub</a> for exploration and inspiration. Discover additional AI examples in our <a href="https://github.com/android/ai-samples/tree/main/ai-catalog" target="_blank">Android AI Sample Catalog</a>.</p>
<image><div style="text-align: center;"><img alt="moving image of the Androidify app on a mobile device, showing a fair-skinned woman with blond hair wearing a red jacket with black shirt and pants and a pair of sunglasses converting into a 3D image of a droid with matching skin tone and blond hair wearing a red jacket with black shirt and pants and a pair of sunglasses" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZXikUZH5SUQtydBcaXw3nraWM-YyMl-X6wRFbfwmFuMeIyttXSzVEU4Gzyvx5jtXp1AYcnFu_sr6OzGYmhUDpnVTIdPW8ZBzYM-alwIeGu0BILeZ4_VV0oirOGqSS7C0rng1qzSSK1MLnsdBqOlhj4eUiSnYz3qn3YWFn5BKx5xiHbVYlr43zDsh_0p4/w288-h640/Androidify-photo-to-droid-bot-demo.gif" width="288" /></div><imgcaption><center><em>The original image and <i>Androidifi-ed</i> image</em></center></imgcaption></image><br />
<p>Choosing the right Gemini model depends on understanding your specific needs and the model's capabilities, including modality, complexity, context window, offline capability, cost, and device reach. To explore these considerations further and see all our announcements in action, check out the <a href="https://goo.gle/io25-build-with-ai" target="_blank">AI on Android at I/O ‘25 playlist on YouTube</a> and check out our <a href="https://developer.android.com/ai" target="_blank">documentation</a>.</p>
<p>We are excited to see what you will build with the power of Gemini!</p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-87171442398535646482025-06-12T09:00:00.000-07:002025-06-12T09:02:50.670-07:00Upcoming changes to Wear OS watch faces<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYyiwPGp02SGvm4WjywDWiySbeim1V6r9jFrPlUQ18HrpBejp_Nj34UDnNfpzY-n27IGI2fK1GhL3-cIST8Op-yT14lbsdMMEIZbfZsuOUlS84eOCCm1BQv1PQZREIcZ-VvYqZ_ZC6ZqsT4BUidx0kMFhWKYlqUZn4T_J0vMSBJKcHbHviLRZvGmM4id0/s1600/updates-to-wear-os-meta.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYyiwPGp02SGvm4WjywDWiySbeim1V6r9jFrPlUQ18HrpBejp_Nj34UDnNfpzY-n27IGI2fK1GhL3-cIST8Op-yT14lbsdMMEIZbfZsuOUlS84eOCCm1BQv1PQZREIcZ-VvYqZ_ZC6ZqsT4BUidx0kMFhWKYlqUZn4T_J0vMSBJKcHbHviLRZvGmM4id0/s1600/updates-to-wear-os-meta.png" style="display: none;" />
<em>Posted by François Deschênes Product Manager - Wear OS</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKhZ23uV8GAQCHllAf-U5JjREthMTvhkvWhyphenhyphenoYH2uRZgPhjlEKcEw7bPbssTMKuNIzyzRYjt1wGhVCu_wNQh-hw68TNL09paKmu8ynTtL_n6EpEn2ttof_zMOUcnfzSNuDdLIPBDAexBQEc213QCSlbmhWePTrF14-EaY9CVej3z9tPdP5-cSS7onTpUs/s1600/Blogger_AndroidDFWMigration.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKhZ23uV8GAQCHllAf-U5JjREthMTvhkvWhyphenhyphenoYH2uRZgPhjlEKcEw7bPbssTMKuNIzyzRYjt1wGhVCu_wNQh-hw68TNL09paKmu8ynTtL_n6EpEn2ttof_zMOUcnfzSNuDdLIPBDAexBQEc213QCSlbmhWePTrF14-EaY9CVej3z9tPdP5-cSS7onTpUs/s1600/Blogger_AndroidDFWMigration.png" /></a>
<p>Today, we are announcing important changes to Wear OS watch face development that will affect how developers publish and update watch faces on Google Play. As part of our ongoing effort to enhance Wear OS app quality, we are moving towards supporting only the <a href="https://developer.android.com/training/wearables/wff" target="_blank">Watch Face Format</a> and removing support for AndroidX / Wearable Support Library (WSL) watch faces.</p>
<p>We introduced <a href="https://android-developers.googleblog.com/2023/05/introducing-watch-face-format-for-wear-os.html" target="_blank">Watch Face Format</a> at Google I/O in 2023 to make it easier to create watch faces that are customizable and power-efficient. The Watch Face Format is a declarative XML format, so there is no executable code involved in creating a watch face, and there is no code embedded in the watch face APK.</p>
<h2><span style ="font-size: x-large ;">What's changing?</span></h2>
<p>Developers will need to migrate published watch faces to the Watch Face Format by January 14, 2026. Developers using Watch Face Studio to build watch faces will need to resubmit their watch faces to the Play Store using <a href="https://developer.samsung.com/watch-face-studio/download.html" target="_blank">Watch Face Studio version 1.8.7 or above</a> - see below for more details.</p>
<h2><span style ="font-size: x-large ;">When are these changes coming?</span></h2>
<h4><span style ="font-size: medium ;">Starting <b>January 27, 2025</b> (already in effect):</span></h4>
<ul><ul>
<li>No new <a href="https://developer.android.com/reference/kotlin/androidx/wear/watchface/package-summary" target="_blank">AndroidX</a> or <a href="https://developer.android.com/reference/android/support/wearable/watchface/package-summary" target="_blank">Wearable Support Library (WSL)</a> watch faces (legacy watch faces) can be published on the Play Store. Developers can still publish updates to existing watch faces.</li></ul></ul>
<h4><span style ="font-size: medium ;">Starting <b>January 14, 2026</b>:</span></h4>
<ul><ul>
<li><b>Availability:</b> Users will not be able to install legacy watch faces on any Wear OS devices from the Play Store. Legacy watch faces already installed on a Wear OS device will continue to work.</li></ul><ul>
<li><b>Updates:</b> Developers will not be able to publish updates for legacy watch faces to the Play Store.</li></ul><ul>
<li><b>Monetization:</b> The following won’t be possible for legacy watch faces: one-off watch face purchases, in-app purchases, and subscriptions. Existing purchases and subscriptions will continue to work, but they will not renew, including auto-renewals.</li>
</ul></ul>
<h2><span style ="font-size: x-large ;">What should developers do next?</span></h2>
<p>To prepare for these changes and to continue publishing watch faces to the Play Store, developers using AndroidX or WSL to build watch faces must migrate their watch faces to the Watch Face Format and resubmit to the Play Store by <b>January 14, 2026</b>.</p>
<p>Developers using Watch Face Studio to build watch faces will need to resubmit their watch faces to the Play Store using <a href="https://developer.samsung.com/watch-face-studio/download.html" target="_blank">Watch Face Studio version 1.8.7 or above</a>:</p>
<ul><ul>
<li>Be sure to republish for all Play tracks, including all testing tracks as well as production.</li>
<li>Remove any bundles from these tracks that were created using Watch Face Studio versions prior to 1.8.7.</li>
</ul></ul>
<h2><span style ="font-size: x-large ;">Benefits of the Watch Face Format</span></h2>
<p>Watch Face Format was developed to support developers in creating watch faces. This format provides numerous advantages to both developers and end users:</p>
<ul><ul>
<li><b>Simplified development:</b> Streamlined workflows and visual design tools make building watch faces easier.</li></ul><ul>
<li><b>Enhanced performance:</b> Optimized for battery efficiency and smooth interactions.</li></ul><ul>
<li><b>Increased security:</b> Robust security features protect user data and privacy.</li></ul><ul>
<li><b>Forward-compatible:</b> Access to the latest features and capabilities of Wear OS.</li>
</ul></ul>
<h2><span style ="font-size: x-large ;">Resources to help with migration</span></h2>
<p>To get started migrating your watch faces to the Watch Face Format, check out the following developer guidance:</p>
<ul><ul>
<li><a href="https://developer.android.com/training/wearables/wff" target="_blank">Watch Face Format getting started guide</a></li>
<li><a href="https://developer.android.com/training/wearables/wff/watch-face" target="_blank">Watch Face Format reference</a></li>
<li><a href="https://github.com/android/wear-os-samples/tree/main/WatchFaceFormat" target="_blank">Quick-start samples</a></li>
<li><a href="https://github.com/google/watchface" target="_blank">Validation tools</a></li>
</ul></ul>
<p>We encourage developers to begin the migration process as soon as possible to ensure a seamless transition and continued availability of your watch faces on Google Play.</p>
<p>We understand that this change requires effort. If you have further questions, please refer to the <a href="https://support.google.com/wearos/thread/284572445" target="_blank">Wear OS community announcement</a>. Please report any issues using the <a href="https://issuetracker.google.com/issues/new?component=1112371&template=1623658" target="_blank">issue tracker</a>.</p>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-29986146341560413502025-06-11T09:00:00.000-07:002025-06-11T09:05:38.222-07:00Smoother app reviews with Play Policy Insights beta in Android Studio<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS-iSoIfDrTYTjLPIIS3RFNLyf5ar62Ds5cpm5kRgVmog68dcxS0rZk1xkEpXAt9E9C2pi1mbelNbnYJ_WZwLeoVXfLWdXta7H58nyMmFrj4CzD9abCVDUxDVF3-FIqLbMDbBkZo-fbQ7x5yAIm_rqLG-rVcsoW6hmq37cnNA0te9uwlM-k04O4Ue-y-8/s1600/Google-Play-Policy-Insights-Android-Studio-meta.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS-iSoIfDrTYTjLPIIS3RFNLyf5ar62Ds5cpm5kRgVmog68dcxS0rZk1xkEpXAt9E9C2pi1mbelNbnYJ_WZwLeoVXfLWdXta7H58nyMmFrj4CzD9abCVDUxDVF3-FIqLbMDbBkZo-fbQ7x5yAIm_rqLG-rVcsoW6hmq37cnNA0te9uwlM-k04O4Ue-y-8/s1600/Google-Play-Policy-Insights-Android-Studio-meta.png" style="display: none;" />
<em>Posted by Naheed Vora – Senior Product Manager, Android App Safety</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgksCnMsrZnszxW5XIM5WHcKKOv-7XWOmis8YePO-4HHQoSYnkI4FCJvhdDmzAPOG73K4xa0QoXJxJ-4hcFhKWbVYPJzABocltNv0Zwrdc7Fw3t2RGZvBJsiSm1-jHxJUy2FG0mD7pQPZza1BrCUjkKpIs8a7GGneqL_K50FUWXYM9IEWFtabrsV9V5YY8/s1600/r2HERO_MULTIPLE_AVATARS.jpg"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgksCnMsrZnszxW5XIM5WHcKKOv-7XWOmis8YePO-4HHQoSYnkI4FCJvhdDmzAPOG73K4xa0QoXJxJ-4hcFhKWbVYPJzABocltNv0Zwrdc7Fw3t2RGZvBJsiSm1-jHxJUy2FG0mD7pQPZza1BrCUjkKpIs8a7GGneqL_K50FUWXYM9IEWFtabrsV9V5YY8/s1600/r2HERO_MULTIPLE_AVATARS.jpg" /></a>
<h1><span style="font-size: x-large;"><b>Making it easier for you to build safer apps from the start</b></span></h1>
<p>We understand you want clear Play policy guidance early in your development, so you can focus on building amazing experiences and prevent unexpected delays from disrupting launch plans. That’s why we’re <a href="https://android-developers.googleblog.com/2025/03/keeping-google-play-safe.html" target="_blank">making it easier</a> to have smoother app publishing experiences, from the moment you <a href="https://android-developers.googleblog.com/2025/05/google-io-2025-whats-new-in-android-development-tools.html#play-policy-insights-beta" target="_blank">start coding</a>.</p>
<p>With Play Policy Insights beta in Android Studio, you’ll get richer, in-context guidance on policies that may impact your app through lint warnings. You’ll see policy summaries, dos and don'ts to avoid common pitfalls, and direct links to details.</p>
<p>We hope you caught an <a href="https://www.youtube.com/watch?v=KXKP2tDPW4Y&t=1830s" target="_blank">early demo at I/O</a>. And now, you can check out Play Policy Insights beta in the Android Studio Narwhal Feature Drop <a href="https://developer.android.com/studio/preview" target="_blank">Canary release</a>.</p>
<image><div style="text-align: center;"><img alt="a screenshot of Play Policy Insights in Android Studio" border="0" height="427" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeG8SvqWqzaD-n7v9JiHTjRjRRzdnzuRk6b-hJOl8K3kGPIrkC4yDfBHhfwk5tL2DIGi6HOnTgUsAG5u_fmVFhBywAhT2rr1XOCFHdBGcoBdxx7dHWqYX1lNByvq1X2PujU54DKRVqRUU_SWU31Xy0pA7WQum5colO9klV1n9RUPwIntaDG1o16jOTfHs/w640-h427/play-policy-insights-android-studio.png" width="640" /></div><imgcaption><center><em>Play Policy Insights beta in Android Studio shows rich, in-context guidance</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">How to use Play Policy Insights beta in Android Studio</span></h3>
<p>Lint warnings will pop up as you code, like when you add a permission. For example, if you add an Android API that uses Photos and requires <span style="color: #0d904f; font-family: courier;">READ_MEDIA_IMAGES</span> permission, then the Photos & Video Insights lint warning will appear under the respective API call line item in Android Studio.</p>
<p>You can also get these insights by going to <b>Code > Inspect for Play Policy Insights</b> and selecting the project scope to analyze. The scope can be set to the whole project, the current module or file, or a <a href="https://developer.android.com/studio/write/lint#cs" target="_blank">custom scope</a>.</p>
<image><div style="text-align: center;"><img alt="a screenshot of Specify Inspection Scope menu in Play Policy Insights in Android Studio" border="0" height="441" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivLmLuFTB1rhG7v0vEyNI8Ane1P5jLySjt8GjKK5E2qZ6LB8KniyeW9u0tMsmhdi0g694fLoLvDeFbWMp6JVGO50CJ_XEO4pYh2UNEM354nmBazR261sD017FDpZ2wD3YDTw9oPCRBMOsR_-5oUmSndFV1HQrwQUWAqOlklYlZVXNrzf-ndTcXXTQZidE/w640-h441/specify-inspection-scope-play-policy-insights-beta-android-studio.png" width="640" /></div><imgcaption><center><em>Get Play Policy Insights beta for the whole project, the current module or file, or a custom scope and see the results along with details for each insights in the Problems tool window.</em></center></imgcaption></image><br />
<p>In addition to seeing these insights in Android Studio, you can also generate them as part of your Continuous Integration process by <a href="https://developer.android.com/build/dependencies#dependency_configurations" target="_blank">adding the following dependency</a> to your project.</p>
<p><b>Kotlin</b></p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">lintChecks(<span style="color: #ba2121;">"com.google.play.policy.insights:insights-lint:<version>"</span>)
</pre></div>
<p><b>Groovy</b></p>
<!--Groovy--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">lintChecks <span style="color: #ba2121;">'com.google.play.policy.insights:insights-lint:<version>'</span>
</pre></div><br />
<h2><span style="font-size: x-large;">Share your feedback on Play Policy Insights beta</span></h2>
<p>We’re actively working on this feature and want your feedback to refine it before releasing it in the Stable channel of Android Studio later this year. Try it out, <a href="https://developer.android.com/studio/report-bugs#report-bug" target="_blank">report issues</a>, and stop by the Google Play Developer Help Community to <a href="https://goo.gle/3FwqQ0I" target="_blank">share your questions and thoughts</a> directly with our team.</p>
<p><b>Join us on June 16</b> when we answer your questions. We’d love to hear about:</p>
<ul><ul>
<li>How will this change your current Android app development and Google Play Store submission workflow?</li></ul><ul>
<li>Which was more helpful in addressing issues: lint warnings in the IDE or lint warnings from CI build?</li></ul><ul>
<li>What was most helpful in the policy guidance, and what could be improved?</li>
</ul></ul>
<p>Developers have told us they like:</p>
<ul><ul>
<li>Catching potential Google Play policy issues early, right in their code, so they can build more efficiently.</li></ul><ul>
<li>Seeing potential Google Play policy issues and guidance all in one-place, reducing the need to dig through policy announcements and issue emails.</li></ul><ul>
<li>Easily discussing potential issues with their team, now that everyone has shared information.</li></ul><ul>
<li>Continuously checking for potential policy issues as they add new features, gaining confidence in a smoother launch.</li>
</ul></ul>
<p>For more, see our Google Play <a href="https://support.google.com/googleplay/android-developer/answer/16297427" target="_blank">Help Center article</a> or <a href="https://developer.android.com/studio/preview/features#play-policy-insights" target="_blank">Android Studio preview release notes</a>.</p>
<p>We hope features like this will help give you a better policy experience and more streamlined development.</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/s260/lockup_ic_Google_Play_H_260x53px_clr.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="53" data-original-width="260" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxnvf5XzyebGljqgi8J7by9XsvaL5WWLNamSyTg4w_c0kPHjY1B1no1FQsdSfUHUwNw0UuYfXuo6i7K6VpdyV2-K8ms4VFmZA438ujm6qwtZMt5rJfMGymhQ_iCX2Z8h0MuJo7gXUQ4Hb-hjKYK1isibMZZxCyX_vo3kGoP5tieK2PI2ZhYdGh4gsqhwA/s200/lockup_ic_Google_Play_H_260x53px_clr.png" width="200" /></a></div>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-33932921188670760482025-06-10T11:02:00.000-07:002025-06-10T11:04:14.745-07:00Developer preview: Enhanced Android desktop experiences with connected displays<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimB8MDRFmGNHY8m_QL2hIOCk6wjcPHZPqHlNDl-eBb_y5yyZoja_ZkQMQ3FKavZEpL8Ocf8KqMEEaCLuMd0RLFTmeTkWYew6bCmrbTUQeFOwW-aDeT4f_DRzyS4GS4aNsKdQq2RmeAlAgRz7O0bQccmceR9No-219ZF2I_s1lp0X1PUDsLxMAQYT6WSHs/s1600/external-display-connected-to-desktop-session-material-design.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimB8MDRFmGNHY8m_QL2hIOCk6wjcPHZPqHlNDl-eBb_y5yyZoja_ZkQMQ3FKavZEpL8Ocf8KqMEEaCLuMd0RLFTmeTkWYew6bCmrbTUQeFOwW-aDeT4f_DRzyS4GS4aNsKdQq2RmeAlAgRz7O0bQccmceR9No-219ZF2I_s1lp0X1PUDsLxMAQYT6WSHs/s1600/external-display-connected-to-desktop-session-material-design.gif" style="display: none;" />
<em>Posted by Francesco Romano – Developer Relations Engineer on Android, and Fahd Imtiaz – Product Manager, Android Developer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia9UtASLD_yT4hpqUf5QbmYnge04zTIavjei2X_MsbBdPvtXjlxvW01v1OnQx-LOcAJKMZYP4Xwk0GelMGdLriIlWU6hHm4FDNeyoIFsf8dxbmnR9wuWwFUSp0F-L7YbfmQSM1QJ6CiwmJPYTZNbhkl7OI7GCcq6IZ-5koFIkEt5f6LXrW1-4EiBjtOgo/s1600/developer-preview-embedded-android-desktop-connected-displays-buiilding-excellent-adaptive-apps-google-io-spotlight.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia9UtASLD_yT4hpqUf5QbmYnge04zTIavjei2X_MsbBdPvtXjlxvW01v1OnQx-LOcAJKMZYP4Xwk0GelMGdLriIlWU6hHm4FDNeyoIFsf8dxbmnR9wuWwFUSp0F-L7YbfmQSM1QJ6CiwmJPYTZNbhkl7OI7GCcq6IZ-5koFIkEt5f6LXrW1-4EiBjtOgo/s1600/developer-preview-embedded-android-desktop-connected-displays-buiilding-excellent-adaptive-apps-google-io-spotlight.png" /></a>
<blockquote><small><i>Today, Android is launching a few updates across the platform! This includes the start of Android 16's rollout, with details for both <a href="https://android-developers.googleblog.com/2025/06/android-16-is-here.html" target="_blank">developers</a> and <a href="https://blog.google/products/android/android-16" target="_blank">users</a>, a <a href="https://android-developers.googleblog.com/2025/06/developer-preview-enhanced-android-desktop-experiences-connected-displays.html" target="_blank">Developer Preview for enhanced Android desktop experiences with connected displays</a>, and <a href="https://blog.google/products/android/new-android-features-june-2025/" target="_blank">updates for Android users across Google apps and more</a>, plus the <a href="https://blog.google/products/pixel/pixel-drop-june-2025/" target="_blank">June Pixel Drop</a>. We're also <a href="https://android-developers.googleblog.com/2025/06/top-3-updates-for-building-excellent-adaptive-apps-google-io-25.html" target="_blank">recapping all the Google I/O updates for Android developers focused on building excellent, adaptive Android apps</a>.</i></small></blockquote>
<p>Android has continued to evolve to enable users to be more productive on large screens.</p>
<p>Today, we’re excited to share that connected displays support on compatible Android devices is now in developer preview with the Android 16 QPR1 Beta 2 release. As shown at <a href="https://www.youtube.com/watch?v=MmeJSLAnB-M" target="_blank">Google I/O 2025</a>, connected displays enable users to attach an external display to their Android device and transform a small screen device into a powerful tool with a large screen. This evolution gives users the ability to move apps beyond a single screen to unlock Android’s full productivity potential on external displays.</p>
<p>The connected display update builds on our desktop windowing experience, a capability we <a href="https://android-developers.googleblog.com/2024/09/developer-preview-desktop-windowing-on-android-tablets.html" target="_blank">previewed</a> last year. Desktop windowing is set to launch later this year for users on compatible tablets running <a href="https://blog.google/products/android/android-16" target="_blank">Android 16</a>. Desktop windowing enables users to run multiple apps simultaneously and resize windows for optimal multitasking. This new windowing capability works seamlessly with split screen and other multitasking features users already love on Android and doesn't require switching to a special mode.</p>
<p>Google and Samsung have collaborated to bring a more seamless and powerful desktop windowing experience to large screen devices and phones with connected displays in Android 16 across the Android ecosystem. These advancements will enhance Samsung DeX, and also extend to other Android devices.</p>
<p>For developers, connected displays and desktop windowing present new opportunities for building more engaging and more productive app experiences that seamlessly adapt across form factors. You can try out these features today on your connected display with the Android 16 QPR1 Beta 2 on select Pixel devices.</p>
<h2><span style="font-size: x-large;">What’s new in connected displays support?</span></h2>
<p>When a supported Android phone or foldable is connected to an external display through a DisplayPort connection, a new desktop session starts on the connected display. The phone and the external display operate independently, and apps are specific to the display on which they’re running.</p>
<p>The experience on the connected display is similar to the experience on a desktop, including a task bar that shows running apps and lets users pin apps for quick access. Users are able to run multiple apps side by side simultaneously in freely resizable windows on the connected display.</p>
<image><div style="text-align: center;"><img alt="moving image of a phone connected to an external display, with a desktop session on the display while the phone maintains its own state." border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhILZ2VTibNrcO6qWOiNNwKlXhNxyJutozJrN2f8wfTPot6gVMVAJuo5VSbqX6TgDEgtnl0823Z-IZHm3jgn2F-A99aOg8h5qMlNhXmlvUFLo6UY_J0hXIkZoQjnKfRUliLsRFMhy-YAM73sXeEbxND67h9bddLPF423gEFmrboqGmxmeFLbqlqecyVkvo/s1600/external-display-connected-to-desktop-session-material-design.gif" /></div><imgcaption><center><em>Phone connected to an external display, with a desktop session on the display while the phone maintains its own state.</em></center></imgcaption></image><br />
<p>When a desktop windowing enabled device (like a tablet) is connected to an external display, the desktop session is extended across both displays, unlocking an even more expansive workspace. The two displays then function as one continuous system, allowing app windows, content, and the cursor to move freely between the displays.</p>
<image><div style="text-align: center;"><img alt="moving image of a tablet connected to an external display, extending the desktop session across both displays." border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimB8MDRFmGNHY8m_QL2hIOCk6wjcPHZPqHlNDl-eBb_y5yyZoja_ZkQMQ3FKavZEpL8Ocf8KqMEEaCLuMd0RLFTmeTkWYew6bCmrbTUQeFOwW-aDeT4f_DRzyS4GS4aNsKdQq2RmeAlAgRz7O0bQccmceR9No-219ZF2I_s1lp0X1PUDsLxMAQYT6WSHs/s16000/external-display-connected-to-desktop-session-material-design.gif" /></div><imgcaption><center><em>Tablet connected to an external display, extending the desktop session across both displays.</em></center></imgcaption></image><br />
<p>A cornerstone of this effort is the evolution of desktop windowing, which is stable in Android 16 and is packed with improvements and new capabilities.
<h2><span style="font-size: x-large;">Desktop windowing stable release</span></h2>
<p>We've made substantial improvements in the stability and performance of desktop windowing in Android 16. This means users will encounter a smoother, more reliable experience when managing app windows on connected displays. Beyond general stability improvements, we're introducing several new features:</p>
<ul><ul>
<li><b>Flexible window tiling:</b> Multitasking gets a boost with more intuitive window tiling options. Users can more easily arrange multiple app windows side by side or in various configurations, making it simpler to work across different applications simultaneously on a large screen.</li></ul><ul>
<li><b>Multiple desktops:</b> Users can set up multiple desktop sessions to match their distinct productivity requirements and switch between the desktops using keyboard shortcuts, trackpad gestures, and Overview.</li></ul><ul>
<li><b>Enhanced app compatibility treatments:</b> <a href="https://developer.android.com/guide/practices/device-compatibility-mode#desktop_windowing" target="_blank">New compatibility treatments</a> ensure that even legacy apps behave more predictably and look better on external displays by default. This reduces the burden on developers while providing a better out-of-the-box experience for users.</li></ul><ul>
<li><b>Multi-instance management:</b> Users can manage multiple instances of supporting applications (for example, Chrome or, Keep) through the app header button or taskbar context menu.
This allows for quick switching between different instances of the same app.</li></ul><ul>
<li><b>Desktop persistence:</b> Android can now better maintain window sizes, positions, and states across different desktops. This means users can set up their preferred workspace and have it restored across sessions, offering a more consistent and efficient workflow.</li>
</ul></ul>
<h2> <span style="font-size: x-large;">Best practices for optimal app experiences on connected displays</span></h2>
<p>With the introduction of connected display support in Android, it's important to ensure your apps take full advantage of the new display capabilities. To help you build apps that shine in this enhanced environment, here are some key development practices to follow:</p>
<h4><span style="font-size: medium;">Build apps optimized for desktop</span></h4>
<ul><ul>
<li><b><a href="https://developer.android.com/design/ui/large-screens" target="_blank">Design for any window size:</a></b> With phones now connecting to external displays, your mobile app can run in a window of almost any size and aspect ratio. This means the app window can be as big as the screen of the connected display but also flex to fit a smaller window. In desktop windowing, the minimum window size is 386 x 352 dp, which is smaller than most phones. This fundamentally changes how you need to think about UI. With orientation and resizability changes in Android 16, it becomes even more critical for you to update your apps to support resizability and portrait and landscape orientations for an optimal experience with desktop windowing and connected displays. Make sure your app supports any window size by following the <a href="https://android-developers.googleblog.com/2025/05/adaptiveapps-io25.html" target="_blank">best practices on adaptive development</a>.</li></ul><ul>
<li><b><a href="https://developer.android.com/large-screens/gallery/productivity" target="_blank">Implement features for top productivity:</a></b> You now have all the tools necessary to build mobile apps that match desktop, so start adding <a href="https://www.youtube.com/watch?v=MmeJSLAnB-M" target="_blank">features to boost users productivity</a>! Allow users to open <a href="https://developer.android.com/guide/topics/large-screens/multitasking-and-multi-instance" target="_blank">multiple instances</a> of the same app, which is invaluable for tasks like comparing documents, managing different conversations, or viewing multiple files simultaneously. Support data sharing with <a href="https://developer.android.com/guide/topics/large-screens/drag-and-drop" target="_blank">drag and drop</a>, and maintain user flow across configuration changes by implementing a robust <a href="https://developer.android.com/guide/topics/large-screens/configuration-and-continuity" target="_blank">state management system</a>.</li>
</ul></ul>
<h4><span style="font-size: medium;">Handle dynamic display changes</span></h4>
<ul><ul>
<li><b>Don't assume a constant <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/Display" target="_blank">Display</a></span> object:</b> The <span style="color: #0D904F ; font-family: courier;">Display</span> object associated with your app's context can change when an app window is moved to an external display or if the display configuration changes. Your app should gracefully handle configuration change events and query display metrics dynamically rather than caching them.</li></ul><ul>
<li><b>Account for <a href="https://developer.android.com/guide/topics/manifest/activity-element#config" target="_blank">density configuration changes</a>:</b> External displays can have vastly different pixel densities than the primary device screen. Ensure your layouts and resources adapt correctly to these changes to maintain UI clarity and usability. Use density-independent pixels (dp) for layouts, provide density-specific resources, and ensure your UI scales appropriately.</li>
</ul></ul>
<h4><span style="font-size: medium;">Go beyond just the screen</span></h4>
<ul><ul>
<li><b><a href="https://developer.android.com/develop/ui/compose/touch-input/input-compatibility-on-large-screens" target="_blank">Correctly support external peripherals</a>:</b> When users connect to an external monitor, they often create a more desktop-like environment. This frequently involves using external keyboards, mice, trackpads, webcams, microphones, and speakers. If your app uses camera or microphone input, the app should be able to detect and utilize peripherals connected through the external display or a docking station.</li></ul><ul>
<li><b><a href="https://developer.android.com/develop/ui/compose/touch-input/keyboard-input/commands" target="_blank">Handle keyboard actions</a>:</b> Desktop users rely heavily on keyboard shortcuts for efficiency. Implement standard shortcuts (for example, Ctrl+C, Ctrl+V, Ctrl+Z) and consider app-specific shortcuts that make sense in a windowed environment. Make sure your app supports <a href="https://developer.android.com/develop/ui/compose/touch-input/input-compatibility-on-large-screens#navigation" target="_blank">keyboard navigation</a>.</li></ul><ul>
<li><b><a href="https://developer.android.com/develop/ui/compose/touch-input/input-compatibility-on-large-screens#mouse_and_touchpad" target="_blank">Support mouse interactions</a>:</b> Beyond simple clicks, ensure your app responds correctly to mouse hover events (for example, for tooltips or visual feedback), right-clicks (for contextual menus), and precise scrolling. Consider implementing <a href="https://developer.android.com/guide/topics/large-screens/custom-cursors" target="_blank">custom pointers</a> to indicate different actions.</li>
</ul></ul>
<h3><span style="font-size: x-large;">Getting started</span></h3>
<p>Explore the connected displays and enhanced desktop windowing features in the latest Android Beta. Get <a href="https://developer.android.com/about/versions/16/get#on_pixel" target="_blank">Android 16 QPR1 Beta 2</a> on a supported Pixel device (Pixel 8 and Pixel 9 series) to start testing your app today. Then enable <b>desktop experience features</b> in the developer settings.</p>
<p>Support for connected displays in the <a href="https://developer.android.com/about/versions/16/get#on_emulator" target="_blank"><b>Android Emulator</b></a> is coming soon, so stay tuned for updates!</p>
<p>Dive into the updated documentation on <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/support-connected-displays" target="_blank">multi-display support</a> and <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/support-desktop-windowing" target="_blank">window management</a> to learn more about implementing these best practices.</p>
<h3><span style="font-size: x-large;">Feedback</span></h3>
<p>Your feedback is crucial as we continue to refine these experiences. Please share your thoughts and report any issues through our <a href="https://developer.android.com/about/versions/16/feedback" target="_blank">official feedback channels</a>.
<p>We're committed to making Android a versatile platform that adapts to the many ways users want to interact with their apps and devices. The improvements to connected display support are another step in that direction, and we can't wait to see the amazing experiences you'll build!</p>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-48864694138846309372025-06-10T11:01:00.001-07:002025-06-10T14:00:37.493-07:00Top 3 updates for building excellent, adaptive apps at Google I/O ‘25<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTpgEXcxT6kHQwkt-jOCTJXACiJ63FHs8LKffzFGURF5IaSFIsU88V5YPsiFlLYhhuqCjzGDfrBb-wjx_jcQZmdagftLbiVX3A3LsdncrUCpGbo4IspqjiPninE2OYj_uLzL2BGQUDAlvoREfKhBvYmRMHVDM1nl4Fxj5A5xk4NM7_Bw2SMNoY7i4t98w/s1600/building-excellent-adaptive-apps-product-ui-google-io.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTpgEXcxT6kHQwkt-jOCTJXACiJ63FHs8LKffzFGURF5IaSFIsU88V5YPsiFlLYhhuqCjzGDfrBb-wjx_jcQZmdagftLbiVX3A3LsdncrUCpGbo4IspqjiPninE2OYj_uLzL2BGQUDAlvoREfKhBvYmRMHVDM1nl4Fxj5A5xk4NM7_Bw2SMNoY7i4t98w/s1600/building-excellent-adaptive-apps-product-ui-google-io.png" style="display: none;" />
<em>Posted by Mozart Louis – Developer Relations Engineer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGsSlspQxZdRNSKqnvhfVyu1FoLbkjE5wFh2M1HjAIbvRHdCbcviV4nF-ppyn-5Lo6uq7Zs_d6ECfwqKUhLk1y1jkat-WzKbzXY1MKo1EfCb9VUAOtMgqRlVmperLqQ4fhNxYuuMi_r16UO8WbhBF8Jt1ZwkF4S3u8NUSFJPQWj9wzo9cBklhISdhyphenhyphenhqs/s1600/buiilding-excellent-adaptive-apps-google-io.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGsSlspQxZdRNSKqnvhfVyu1FoLbkjE5wFh2M1HjAIbvRHdCbcviV4nF-ppyn-5Lo6uq7Zs_d6ECfwqKUhLk1y1jkat-WzKbzXY1MKo1EfCb9VUAOtMgqRlVmperLqQ4fhNxYuuMi_r16UO8WbhBF8Jt1ZwkF4S3u8NUSFJPQWj9wzo9cBklhISdhyphenhyphenhqs/s1600/buiilding-excellent-adaptive-apps-google-io.png" /></a>
<blockquote><small><i>Today, Android is launching a few updates across the platform! This includes the start of Android 16's rollout, with details for both <a href="https://android-developers.googleblog.com/2025/06/android-16-is-here.html" target="_blank">developers</a> and <a href="https://blog.google/products/android/android-16" target="_blank">users</a>, a <a href="https://android-developers.googleblog.com/2025/06/developer-preview-enhanced-android-desktop-experiences-connected-displays.html" target="_blank">Developer Preview for enhanced Android desktop experiences with connected displays</a>, and <a href="https://blog.google/products/android/new-android-features-june-2025/" target="_blank">updates for Android users across Google apps and more</a>, plus the <a href="https://blog.google/products/pixel/pixel-drop-june-2025/" target="_blank">June Pixel Drop</a>. We're also <a href="https://android-developers.googleblog.com/2025/06/top-3-updates-for-building-excellent-adaptive-apps-google-io-25.html" target="_blank">recapping all the Google I/O updates for Android developers focused on building excellent, adaptive Android apps</a>.</i></small></blockquote>
<p>Google I/O 2025 brought exciting advancements to Android, equipping you with essential knowledge and powerful tools you need to build outstanding, user-friendly applications that stand out.</p>
<p>If you missed any of the key #GoogleIO25 updates and just saw the release of <a href="https://android-developers.googleblog.com/2025/06/android-16-is-here.html" target="_blank">Android 16</a> or you're ready to dive into building excellent adaptive apps, our playlist is for you. Learn how to craft engaging experiences with <a href="https://youtu.be/ihR8hL_Hmec?si=ymMSTuuhhUKAMNPk" target="_blank">Live Updates</a> in Android 16, capture video effortlessly with <a href="https://youtu.be/3zXVPU2vKXs?si=Ho1a3_wmCR-VRNZU" target="_blank">CameraX, process it efficiently using Media3's</a> editing tools, and engage users across diverse platforms like <a href="https://youtu.be/KbTJNK1ALYc?si=NRGn9MhEB1IKCOQx" target="_blank">XR</a>, <a href="https://www.youtube.com/watch?v=ud09zuXHst4" target="_blank">Android for Cars</a>, <a href="https://youtu.be/OosLbRBM9dA?si=ka9NorG5vWOfttHD" target="_blank">Android TV</a>, and <a href="https://youtu.be/MmeJSLAnB-M?si=HLnJ0ic_x1x33SL2" target="_blank">Desktop</a>.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="KiYHuY3hiZc" width="100%" height="413" src="https://www.youtube.com/embed/KiYHuY3hiZc"></iframe>
<p>Check out the <a href="https://goo.gle/io25-build-apps" target="_blank">Google I/O playlist</a> for all the session details.
<p>Here are three key announcements directly influencing how you can craft deeply engaging experiences and truly connect with your users:</p>
<h2><span style="font-size : x-large">#1: Build adaptively to unlock 500 million devices</span></h2>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="15oPNK1W0Tw" width="100%" height="413" src="https://www.youtube.com/embed/15oPNK1W0Tw"></iframe>
<p>In today's diverse device ecosystem, users expect their favorite applications to function seamlessly across various form factors, including phones, tablets, Chromebooks, automobiles, and emerging XR glasses and headsets. Our recommended approach for developing applications that excel on each of these surfaces is to create <a href="https://android-developers.googleblog.com/2025/05/adaptiveapps-io25.html" target="_blank">a single, adaptive application</a>. This strategy avoids the need to rebuild the application for every screen size, shape, or input method, ensuring a consistent and high-quality user experience across all devices.</p>
<p>The talk emphasizes that you don't need to rebuild apps for each form factor. Instead, small, iterative changes can unlock an app's potential.</p>
<p>Here are some resources we encourage you to use in your apps:</p>
<h4><span style="font-size : medium">New feature support in Jetpack Compose Adaptive Libraries</span></h4>
<ul><ul>
<li>We’re continuing to make it as easy as possible to build adaptively with <a href="https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive" target="_blank">Jetpack Compose Adaptive Libraries</a>. with new features in 1.1 like pane expansion and predictive back. By utilizing canonical layout patterns such as <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/list-detail" target="_blank">List Detail</a> or <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/build-a-supporting-pane-layout" target="_blank">Supporting Pane layouts</a> and integrating your app code, your application will automatically adjust and reflow when resized.</li>
</ul></ul>
<h4><span style="font-size : medium">Navigation 3</span></h4>
<ul><ul>
<li>The alpha release of the <a href="https://developer.android.com/jetpack/androidx/releases/navigation3" target="_blank">Navigation 3 library</a> now supports displaying multiple panes. This eliminates the need to alter your navigation destination setup for separate list and detail views. Instead, you can adjust the setup to concurrently render multiple destinations when sufficient screen space is available.</li>
</ul></ul>
<h4><span style="font-size : medium">Updates to Window Manager Library</span></h4>
<ul><ul>
<li><a href="https://developer.android.com/jetpack/androidx/releases/window#1.5.0-alpha02" target="_blank">AndroidX.window 1.5</a> introduces two new window size classes for expanded widths, facilitating better layout adaptation for large tablets and desktops. A width of 1600dp or more is now categorized as "extra large," while widths between 1200dp and 1600dp are classified as "large." These subdivisions offer more granularity for developers to optimize their applications for a wider range of window sizes.</li>
</ul></ul>
<h4><span style="font-size : medium">Support all orientations and be resizable</span></h4>
<ul><ul>
<li>In Android 16 important changes are coming, affecting <a href="https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation" target="_blank">orientation, aspect ratio, and resizability</a>. Apps targeting SDK 36 will need to support all orientations and be resizable.</li>
</ul></ul>
<h4><span style="font-size : medium">Extend to Android XR</span></h4>
<ul><ul>
<li>We are making it easier for you to build for XR with the <a href="https://android-developers.googleblog.com/2025/05/updates-to-android-xr-sdk-developer-preview.html" target="_blank">Android XR SDK in developer preview 2</a>, which features new <a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/material-design" target="_blank">Material XR components</a>, a fully integrated Emulator withinAndroid Studio and spatial videos support for your Play Store listings.</li>
</ul></ul>
<h4><span style="font-size : medium">Upgrade your Wear OS apps to Material 3 Design</span></h4>
<ul><ul>
<li><a href="https://android-developers.googleblog.com/2025/05/whats-new-in-wear-os-6.html" target="_blank">Wear OS 6 features Material 3 Expressive</a>, a new UI design with personalized visuals and motion for user creativity, coming to Wear, Android, and Google apps later this year. You can upgrade your app and Tiles to Material 3 Expressive by utilizing new Jetpack libraries: <a href="https://developer.android.com/jetpack/androidx/releases/wear-compose#1.5.0-beta02" target="_blank">Wear Compose Material 3</a>, which provides components for apps and <a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-beta02" target="_blank">Wear ProtoLayout Material 3</a> which provides components and layouts for tiles.</li>
</ul></ul>
<p>You should build a single, adaptive mobile app that brings the best experiences to all Android surfaces. By building adaptive apps, you meet users where they are today and in the future, enhancing user engagement and app discoverability. This approach represents <a href="https://android-developers.googleblog.com/2025/06/a-product-manager-guide-to-scaling-android-apps-across-from-factors.html" target="_blank">a strategic business decision that optimizes an app’s long-term success</a>.</p>
<h2><span style="font-size : x-large">#2: Enhance your app’s performance optimization</span></h2>
<iframe width="100%" height="413" src="https://www.youtube.com/embed/IaNpcrCSDiI?si=lIKThCswA5IU1AXr&start=1731" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<p>Get ready to take your app's performance to the next level! Google I/O 2025, brought an inside look at cutting-edge tools and techniques to boost user satisfaction, enhance technical performance metrics, and drive those all-important key performance indicators. Imagine an end-to-end workflow that streamlines performance optimization.</p>
<h4><span style="font-size : medium">Redesigned UiAutomator API</span></h4>
<ul><ul>
<li>To make benchmarking reliable and reproducible, there's the brand new <b><a href="https://developer.android.com/training/testing/other-components/ui-automator" target="_blank">UiAutomator API</a></b>. Write robust test code and run it on your local devices or in Firebase Test Lab, ensuring consistent results every time.</li>
</ul></ul>
<h4><span style="font-size : medium">Macrobenchmarks</span></h4>
<ul><ul>
<li>Once your tests are in place, it's time to measure and understand. <a href="https://developer.android.com/topic/performance/benchmarking/macrobenchmark-overview" target="_blank">Macrobenchmarks</a> give you the hard data, while App Startup Insights provide actionable recommendations for improvement. Plus, you can get a quick snapshot of your app's health with the App Performance Score via DAC. These tools combined give you a comprehensive view of your app's performance and where to focus your efforts.</li>
</ul></ul>
<h4><span style="font-size : medium">R8, More than code shrinking and obfuscation</span></h4>
<ul><ul>
<li>You might know <a href="https://developer.android.com/build/shrink-code" target="_blank">R8</a> as a code shrinking tool, but it's capable of so much more! The talk dives into R8's capabilities using the "Androidify" sample app. You'll see how to apply R8, troubleshoot any issues (like crashes!), and configure it for optimal performance. It'll also be shown how library developers can include "consumer Keep rules" so that their important code is not touched when used in an application.</li>
</ul></ul>
<h2><span style="font-size : x-large">#3: Build Richer Image and Video Experiences</span></h2>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="3zXVPU2vKXs" width="100%" height="413" src="https://www.youtube.com/embed/3zXVPU2vKXs"></iframe>
<p>In today's digital landscape, users increasingly expect seamless content creation capabilities within their apps. To meet this demand, developers require robust tools for building excellent camera and media experiences.</p>
<h4><span style="font-size : medium">Media3Effects in CameraX Preview</span></h4>
<ul><ul>
<li>At Google I/O, developers delve into practical strategies for capturing high-quality video using CameraX, while simultaneously leveraging the <a href="https://developer.android.com/reference/androidx/media3/effect/package-summary" target="_blank">Media3Effects</a> on the preview.</li>
</ul></ul>
<h4><span style="font-size : medium">Google Low-Light Boost</span></h4>
<ul><ul>
<li>Google Low Light Boost in Google Play services enables real-time dynamic camera brightness adjustment in low light, even without device support for Low Light Boost AE Mode.</li>
</ul></ul>
<h4><span style="font-size : medium">New Camera & Media Samples!</span></h4>
<ul><ul>
<li>For Google I/O 2025, The Camera & Media team <a href="https://android-developers.googleblog.com/2025/05/building-delightful-android-camera-media-experiences.html" target="_blank">created new samples and demos for building excellent media and camera experiences on Android</a>. It emphasizes future-proofing apps using Jetpack libraries like <a href="https://developer.android.com/media/media3/transformer" target="_blank">Media3 Transformer</a> for advanced video editing and Compose for adaptive UIs, including XR. Get more information about <a href="https://android-developers.googleblog.com/2025/05/building-delightful-android-camera-media-experiences.html#incremental-development-camerax" target="_blank">incrementally adding premium features with CameraX</a>, <a href="https://android-developers.googleblog.com/2025/05/building-delightful-android-camera-media-experiences.html#jetpack-innovative-ai-features" target="_blank">utilizing Media3 for AI-powered functionalities</a> such as video summarization and HDR thumbnails, and employing specialized <a href="https://github.com/google/oboe" target="_blank">APIs like Oboe</a> for efficient audio playback. We have also updated <a href="https://github.com/android/platform-samples/blob/main/samples/camera/camerax/src/main/java/com/example/platform/camerax/basic/CameraXBasic.kt" target="_blank">CameraX samples to fully use Compose</a> instead of the View based system.</li>
</ul></ul>
<p>Learn more about how <a href="https://developer.android.com/media/camera/camerax" target="_blank">CameraX</a> & <a href="https://developer.android.com/media/media3" target="_blank">Media3</a> can accelerate your development of camera and media related features.</p>
<h2><span style="font-size : x-large">Learn how to build adaptive apps</span></h2>
<p>Want to learn more about building excellent, adaptive apps? Watch this playlist to learn more about all the session details.</p>
<iframe width="100%" height="413" src="https://www.youtube.com/embed/videoseries?si=a06qUztIhwR6PbLX&list=PLWz5rJ2EKKc_HeRcu5G0BNRi4O94awUoa" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-91949014873644191542025-06-10T11:01:00.000-07:002025-06-10T11:03:25.824-07:00A product manager's guide to adapting Android apps across devices<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5sqvfNVVAsoYaAZZTuN4KNlIZE9TbuWctnLhyphenhypheniqEURpLdcKdpLXnVXEPhIoEM-omea07379s8OMJure-zd07vKhY4fUMWZH7rfG1Gp9kQ4aYFbtRkT4AjYDATD21I6DswK0zmUH7hKYuzWVyZOq5Ni2lrkokbHArSBH2PSwzP4EB932n0DqQ-xgOzFg0/s1600/android-16-adaptive-apps.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5sqvfNVVAsoYaAZZTuN4KNlIZE9TbuWctnLhyphenhypheniqEURpLdcKdpLXnVXEPhIoEM-omea07379s8OMJure-zd07vKhY4fUMWZH7rfG1Gp9kQ4aYFbtRkT4AjYDATD21I6DswK0zmUH7hKYuzWVyZOq5Ni2lrkokbHArSBH2PSwzP4EB932n0DqQ-xgOzFg0/s1600/android-16-adaptive-apps.png" style="display: none;" />
<em>Posted by Fahd Imtiaz, Product Manager, Android Developer Experience </em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLKz4O7GaNiQrHhA1aecSO-94TyjcrQEyG5kV9velPySYeBhqq8yMKHVpkJc-VADYg6NRImJMl1QvSyuP5kG3ob8BRK06jkfrV-2tuvlIchAALkN1Y-SwAqv03gqnCuoI6szf240NSzViSBeGvtNYwidT_qRto0kvOTy10ZEmXDEy7MIOp5FqtfvzmwXk/s1600/android-16-adaptive-apps-banner.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLKz4O7GaNiQrHhA1aecSO-94TyjcrQEyG5kV9velPySYeBhqq8yMKHVpkJc-VADYg6NRImJMl1QvSyuP5kG3ob8BRK06jkfrV-2tuvlIchAALkN1Y-SwAqv03gqnCuoI6szf240NSzViSBeGvtNYwidT_qRto0kvOTy10ZEmXDEy7MIOp5FqtfvzmwXk/s1600/android-16-adaptive-apps-banner.png" /></a>
<blockquote><small><i>Today, Android is launching a few updates across the platform! This includes the start of Android 16's rollout, with details for both <a href="https://android-developers.googleblog.com/2025/06/android-16-is-here.html" target="_blank">developers</a> and <a href="https://blog.google/products/android/android-16" target="_blank">users</a>, a <a href="https://android-developers.googleblog.com/2025/06/developer-preview-enhanced-android-desktop-experiences-connected-displays.html" target="_blank">Developer Preview for enhanced Android desktop experiences with connected displays</a>, and <a href="https://blog.google/products/android/new-android-features-june-2025/" target="_blank">updates for Android users across Google apps and more</a>, plus the <a href="https://blog.google/products/pixel/pixel-drop-june-2025/" target="_blank">June Pixel Drop</a>. We're also <a href="https://android-developers.googleblog.com/2025/06/top-3-updates-for-building-excellent-adaptive-apps-google-io-25.html" target="_blank">recapping all the Google I/O updates for Android developers focused on building excellent, adaptive Android apps</a>.</i></small></blockquote>
<p>With new form factors emerging continually, the Android ecosystem is more dynamic than ever.</p>
<p>From phones and foldables to tablets, Chromebooks, TVs, cars, Wear and XR, Android users expect their apps to run seamlessly across an increasingly diverse range of form factors. Yet, many Android apps fall short of these expectations as they are built with UI constraints such as being locked to a single orientation or restricted in resizability.</p>
<p>With this in mind, <a href="https://android-developers.googleblog.com/2025/01/orientation-and-resizability-changes-in-android-16.html" target="_blank">Android 16 introduced API changes</a> for apps targeting SDK level 36 to ignore orientation and resizability restrictions starting with large screen devices, shifting toward a unified model where adaptive apps are the norm. This is the moment to move ahead. Adaptive apps aren’t just the future of Android, they’re the expectation for your app to stand out across Android form factors.</p>
<h2><span style="font-size: x-large;">Why you should prioritize adaptive now</span></h2>
<image><div style="text-align: center;"><img alt="500+ devices including foldables, tablets, Chromebooks, and mobile-app capable cars" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIAbByfdK2RkeQHSOHGS4O7W6xQ1Fqq4LL8yTeo-rMcaWDLfhfnYOy_4ygcpbvFMO-W1s_3e8lGC827kNZ1EfvMzbuMZf2UwR9SZWIqgj-b_Cm3ZM2_Rbnd8ZEKs91hOVKv6ER68aH57D0hWclZsWU6vauYbFWd_SVN0EkosFQzCh5pFIXhjkt_aIP-FU/s16000/500-plus-devices-foldables-tablets-chromebooks-mobile-app-capable-cars-android-16.png" /></div><imgcaption><center><em>Source: internal Google data</em></center></imgcaption></image><br />
<p>Prioritizing optimizations to make your app <i>adaptive</i> isn't just about keeping up with <a href="https://android-developers.googleblog.com/2025/01/orientation-and-resizability-changes-in-android-16.html" target="_blank">the orientation and resizability API changes in Android 16</a> for apps targeting SDK 36. Adaptive apps unlock tangible benefits across user experience, development efficiency, and market reach.</p>
<ul><ul>
<li><b>Mobile apps can now reach users on over 500 million active large screen devices:</b> Mobile apps run on foldables, tablets, Chromebooks, and even compatible cars, with minimal changes. Android 16 will introduce significant advancements in desktop windowing for a true desktop-like experience on large screens, including connected displays. And Android XR opens a new dimension, allowing your existing apps to be available in immersive environments. The user expectation is clear: a consistent, high-quality experience that intelligently adapts to any screen – be it a foldable, a tablet with a keyboard, or a movable, resizable window on a Chromebook.</li></ul><ul><br/>
<li><b>“The new baseline” with orientation and resizability API changes in Android 16:</b> We believe mobile apps are undergoing a shift to have UI adapt responsively to any screen size, just like websites. Android 16 will ignore app-defined restrictions like fixed orientation (portrait-only) and non-resizable windows, beginning with large screens (smallest width of the device is >= 600dp) including tablets and inner displays on foldables. For most apps, it’s key to helping them stretch to any screen size. In some cases if your app isn't adaptive, it could deliver a broken user experience on these screens. This moves adaptive design from a nice-to-have to a foundational requirement.</li>
</ul></ul>
<image><div style="text-align: center;"><img alt="Side by side displays of non-adaptive app UI with on the left with text reading Goodbye 'mobile-only' apps and adaptive app UI on the right with text reads Hello adaptive apps" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD30WzHOlZlKw0BW-DA73rCllxBjfI_veOyaiVGYL1b97oXlKnblYLrslWNkjjb1w9t4UUsvHYUpxyf09rmZ7v2CLqXhEh6ljKqo4PlylE8zsmh9fO04ZAbuy2Um0bnI0P3RXd60MeqSCbzlRC_2B5wPI4igOgzMd_8BELZEMHDURfuQNsCe5iJxzEVl8/s16000/adaptive-apps.png" /></div></image>
<ul><ul>
<li><b>Increase user reach and app discoverability in Play:</b> Adaptive apps are better positioned to be ranked higher in Play, and featured in editorial articles across form factors, reaching a wider audience across Play search and homepages. Additionally, Google Play Store surfaces ratings and reviews across all form factors. If your app is not optimized, a potential user's first impression might be tainted by a 1-star review complaining about a stretched UI on a device they don't even own yet. Users are also more likely to engage with apps that provide a great experience across their devices.
<li><b>Increased engagement on large screens:</b> Users on large screen devices often have different interaction patterns. On large screens, users may engage for longer sessions, perform more complex tasks, and consume more content.</li>
<blockquote><p><b><a href="https://www.youtube.com/watch?v=WSnfe3KiXbg" target="_blank">Concepts saw a 70% increase in user engagement</a></b> on large screens after optimizing.</p>
<p>Usage for 6 major media streaming apps in the US was up to <b>3x more for tablet and phone users</b>, as compared to phone only users.</p></blockquote>
<li><b>More accessible app experiences:</b> According to the World Bank, <a href="https://www.worldbank.org/en/news/immersive-story/2022/02/15/an-accessible-future-for-persons-with-disabilities-what-does-it-take#:~:text=10%20Commitments%0Aon%20Disability%2DInclusion" target="_blank">15%</a> of the world’s population has some type of disability. People with disabilities depend on apps and services that support accessibility to communicate, learn, and work. Matching the user’s preferred orientation improves the accessibility of applications, helping to create an inclusive experience for all.</li>
</ul></ul>
<h2><span style="font-size: x-large;">Today, most apps are building for smartphones only</span></h2>
<image><div style="text-align: center;"><img alt="A display of varying Android form factors, including a tablet, a desktop monitor, a laptop, a large-screen mobile, hand-held device, and an in-car app screen" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzrApxgtnKDRaxDOIxkxe-Mxwqyv1eyVYj-coKF_YWP919dC3XCxNGDUEPfKJxLqh741GgVExTVBaBLI-7V0RwwMMgLLonV1Kyjsvz46FQirp5h5pae-5g7pjW-eDXZwkGJ5Qzqka91ju9v-en7sZmmkgtfowOEUPcZysfl1Rw4dSFed6qTbfyHjlL-T4/s1600/android-16-form-factors.png" /></div></image>
<p><i>“...looking at the number of users, the ROI does not justify the investment”.</i></p>
<p>That's a frequent pushback from product managers and decision-makers, and if you're just looking at top-line analytics comparing the number of tablet sessions to smartphone sessions, it might seem like a closed case.</p>
<p>While top-line analytics might show lower session numbers on tablets compared to smartphones, concluding that large screens aren't worth the effort based solely on current volume can be a trap, causing you to miss out on valuable engagement and future opportunities.</p>
<p>Let's take a deeper look into why:</p>
<ul><ul>
<p>1. <b>The user experience ‘chicken and egg’ loop:</b> Is it possible that the low usage is a symptom rather than the root cause? Users are quick to abandon apps that feel clunky or broken. If your app on large screens is a stretched-out phone interface, the app likely provides a negative user experience. The lack of users might reflect the lack of a good experience, not always necessarily lack of potential users.</p></ul><ul>
<p>2. <b>Beyond user volume, look at user engagement:</b> Don't just count users, analyze their worth. Users interact with apps on large screens differently. The large screen often leads to longer sessions and more immersive experiences. As mentioned above, usage data shows that engagement time increases significantly for users who interact with apps on both their phone and tablet, as compared to phone only users.</p></ul><ul>
<p>3. <b>Market evolution:</b> The Android device ecosystem is continuing to evolve. With the rise of foldables, upcoming <a href="https://android-developers.googleblog.com/2025/06/developer-preview-enhanced-android-desktop-experiences-connected-displays.html" target="_blank">connected displays support</a> in Android 16, and form factors like XR and Android Auto, adaptive design is now more critical than ever. Building for a specific screen size creates technical debt, and may slow your development velocity and compromise the product quality in the long run.</p>
</ul></ul>
<h2><span style="font-size: x-large;">Okay, I am convinced. Where do I start?</span></h2>
<image><div style="text-align: center;"><img alt="A three-step workflow outlines how to optimize your Android app to be adaptive" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGnOas9a7EkgPbHzKlEkYjCIuwloWsOjxJ0h_rOmp7isZ1ZfEMuk1keIVXyZXoHns5P20cCZ95U0wcNo8n9hoAf4lV9PqnkgJGmhoqIkZ4m0K_g87EXbU0RkmDr9_OdPCOqUpfnKHci_-QnQckwQNsRDUPyHd0BrBHvDg0eF2Rf0MYC6MRMLtfnQ4dHCI/s1600/three-step-workflow-check-your-app-take-design-inspo-optimize-your-app.png" /></div></image>
<p>For organizations ready to move forward, Android offers many resources and developer tools to optimize apps to be adaptive. See below for how to get started:</p>
<ul><ul>
<p>1.<b>Check how your app looks on large screens today:</b> Begin by looking at your app’s current state on tablets, foldables (in different postures), Chromebooks, and environments like desktop windowing. Confirm if your app is available on these devices or if you are unintentionally leaving out these users by requiring <a href="https://android-developers.googleblog.com/2023/12/increase-your-apps-availability-across-device-types.html" target="_blank">unnecessary features</a> within your app.</p></ul><ul>
<p>2. <b>Address common UI issues:</b> Assess what feels awkward in your app UI today. We have a lot of guidance available on how you can easily translate your mobile app to other screens.</p>
<ul><ul>
<p>a. Check the <a href="https://developer.android.com/large-screens/gallery" target="_blank">Large screens design gallery</a> for inspiration and understanding how your app UI can evolve across devices using proven solutions to common UI challenges.</p></ul><ul>
<p>b. Start with quick wins. For example, prevent buttons from stretching to the full screen width, or switch to a vertical navigation bar on large screens to improve ergonomics.</p></ul><ul>
<p>c. Identify patterns where <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/canonical-layouts" target="_blank">canonical layouts</a> (e.g. list-detail) could solve any UI awkwardness you identified. Could a list-detail view improve your app's navigation? Would a supporting pane on the side make better use of the extra space than a bottom sheet?</p>
</ul></ul>
<p>3. <b>Optimize your app incrementally, screen by screen:</b> It may be helpful to prioritize how you approach optimization because not everything needs to be perfectly adaptive on day one. Incrementally improve your app based on what matters most – it's not all or nothing.</p>
<ul><ul>
<p> a. Start with the foundations. Check out the <a href="https://developer.android.com/docs/quality-guidelines/large-screen-app-quality" target="_blank">large screen app quality guidelines</a> which tier and prioritize the fixes that are most critical to users. Remove orientation restrictions to support portrait and landscape, and ensure support for resizability (for when users are in split screen), and prevent major stretching of buttons, text fields, and images. These foundational fixes are critical, especially with API changes in Android 16 that will make these aspects even more important.</p></ul><ul>
<p>b. Implement adaptive layout optimizations with a focus on core user journeys or screens first.</p>
<ul><ul>
<p>i. Identify screens where optimizations (for example a <a href="https://m3.material.io/foundations/layout/canonical-layouts/list-detail" target="_blank">two-pane layout</a>) offer the biggest UX win</p></ul><ul>
<p>ii. And then proceed to screens or parts of the app that are not as often used on large screens</p></ul><ul>
</ul></ul>
<p>c. Support input methods beyond touch, including keyboard, mouse, trackpad, and stylus input. With new form factors and connected displays support, this sets users up to interact with your UI seamlessly.</p></ul><ul>
<p>d. Add differentiating hero user experiences like support for tabletop mode or dual-screen mode on foldables. This can happen on a per-use-case basis - for example, tabletop mode is great for watching videos, and dual screen mode is great for video calls.</p>
</ul></ul></ul></ul>
<p>While there's an upfront investment in adopting adaptive principles (using tools like Jetpack Compose and window size classes), the long-term payoff may be significant. By designing and building features once, and letting them adapt across screen sizes, the benefits outweigh the cost of creating multiple bespoke layouts. Check out the adaptive apps <a href="https://developer.android.com/adaptive-apps" target="_blank">developer guidance</a> for more.</p>
<h2><span style="font-size: x-large;">Unlock your app's potential with adaptive app design</span></h2>
<p>The message for my fellow product managers, decision-makers, and businesses is clear: <b>adaptive design will uplevel your app</b> for high-quality Android experiences in 2025 and beyond. An adaptive, responsive UI is the scalable way to support the many devices in Android without developing on a per-form factor basis. If you ignore the diverse device ecosystem of foldables, tablets, Chromebooks, and emerging form factors like XR and cars, your business is accepting hidden costs from negative user reviews, lower discovery in Play, increased technical debt, and missed opportunities for increased user engagement and user acquisition.</p>
<p>Maximize your apps' impact and unlock new user experiences. Learn more about <a href="https://developer.android.com/adaptive-apps" target="_blank">building adaptive apps</a> today.</p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-66510311706874830922025-06-10T11:00:00.000-07:002025-06-10T11:03:07.269-07:00Android 16 is here<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS4ubVQL0hsVmbuMRCMgCsA64s6F0Wig_D5T3m3AS0DHuvr7A9BwniaktsYZpZ7LCU4NxdZNKSYvCM_lIjFav4DQxB-gDQo_hmz871Od0QQ3lsyoAgnLtiMTXkPdv80cubXkIsUBlkjU7f1Tmk-zErZ3ztQGsuxUgOs7y4e4HBVjr66m7W9MuUq5Sc9FE/s1600/A16-wordmark.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiS4ubVQL0hsVmbuMRCMgCsA64s6F0Wig_D5T3m3AS0DHuvr7A9BwniaktsYZpZ7LCU4NxdZNKSYvCM_lIjFav4DQxB-gDQo_hmz871Od0QQ3lsyoAgnLtiMTXkPdv80cubXkIsUBlkjU7f1Tmk-zErZ3ztQGsuxUgOs7y4e4HBVjr66m7W9MuUq5Sc9FE/s1600/A16-wordmark.png" style="display: none;" />
<em>Posted by Matthew McCullough – VP of Product Management, Android Developer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxksqgRGog4PZ7GCC6G58aLtV4dJLVdrDL9cGCmVgWHFvvoIQmh0ADa0vuNEnbHGioT8obZm9Pq4nHHqbVkZgGDQoIxA7PNKmY-jxRvuKdQIzW8sgLn_KsQOby3sxUqHRSkiy8KZ9K2VaEPJWXozclCJDongYjVovG-G9oTAR7Vk_pfRQPqeQuurDbGTQ/s1600/android-16-wordmark.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxksqgRGog4PZ7GCC6G58aLtV4dJLVdrDL9cGCmVgWHFvvoIQmh0ADa0vuNEnbHGioT8obZm9Pq4nHHqbVkZgGDQoIxA7PNKmY-jxRvuKdQIzW8sgLn_KsQOby3sxUqHRSkiy8KZ9K2VaEPJWXozclCJDongYjVovG-G9oTAR7Vk_pfRQPqeQuurDbGTQ/s1600/android-16-wordmark.png" /></a>
<blockquote><small><i>Today, Android is launching a few updates across the platform! This includes the start of Android 16's rollout with details for both <a href="https://android-developers.googleblog.com/2025/06/android-16-is-here.html" target="_blank">developers</a> and <a href="https://blog.google/products/android/android-16" target="_blank">users</a>, a <a href="https://android-developers.googleblog.com/2025/06/developer-preview-enhanced-android-desktop-experiences-connected-displays.html" target="_blank">Developer Preview for enhanced Android desktop experiences with connected displays</a>, <a href="https://blog.google/products/android/new-android-features-june-2025/" target="_blank">updates for Android users across Google apps and more</a>, plus the <a href="https://blog.google/products/pixel/pixel-drop-june-2025/" target="_blank">June Pixel Drop</a>. We're also <a href="https://android-developers.googleblog.com/2025/06/top-3-updates-for-building-excellent-adaptive-apps-google-io-25.html" target="_blank">recapping all the Google I/O updates for Android developers focused on building excellent, adaptive Android apps</a>.</i></small></blockquote>
<p>Today we're releasing Android 16 and making it available on most supported Pixel devices. Look for new devices running Android 16 in the coming months.</p>
<p>This also marks the availability of the source code at the <a href="https://source.android.com/" target="_blank">Android Open Source Project</a> (AOSP). You can <a href="https://cs.android.com/" target="_blank">examine the source code</a> for a deeper understanding of how Android works, and our focus on compatibility means that you can leverage your app development skills in <a href="https://developer.android.com/studio" target="_blank">Android Studio</a> with <a href="https://developer.android.com/compose" target="_blank">Jetpack Compose</a> to create applications that thrive across the entire ecosystem.</p>
<h2><span style="font-size: x-large;">Major and minor SDK releases</span></h2>
<p>With Android 16, we've added the concept of a minor SDK release to allow us to iterate our APIs more quickly, reflecting the rapid pace of the innovation Android is bringing to apps and devices.</p>
<image><div style="text-align: center;"><img alt="Android 16 2025 SDK release timeline" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzOa-l5Cm45jdfibf-z96piO2GnblEE-YASiAyHpu2WBQ8fqsPJIFXMW3uORCYroy2Pc6BEdRck3KuAwpqnEguMb0yhl_rd1dFL_1xInWFCyqJbOO5hZcNKFgZxz6K1ih7I3k1PCIkMZXiNQbU9iuraDa76hZS9GZUY1IWddO24Z5kf0cNmiC7NBuh30A/s16000/android-16-sdk-releases-2025.png" /></div></image><br />
<p>We plan to have another release in Q4 of 2025 which also will include new developer APIs. Today's major release will be the only release in 2025 to include planned app-impacting behavior changes.
In addition to new developer APIs, the Q4 minor release will pick up feature updates, optimizations, and bug fixes.</p>
<p>We'll continue to have quarterly Android releases. The Q3 update in-between the API releases is providing much of the new visual polish associated with <a href="https://m3.material.io/blog/building-with-m3-expressive" target="_blank">Material Expressive</a>, and <a href="https://developer.android.com/about/versions/16/get-qpr" target="_blank">you can get the Q3 beta today</a> on your supported Pixel device.</p>
<h2><span style="font-size: x-large;">Camera and media APIs to empower creators</span></h2>
<p>Android 16 enhances support for professional camera users, allowing for <a href="https://developer.android.com/about/versions/16/features#night-mode-scene-detection" target="_blank">night mode scene detection</a>, <a href="https://developer.android.com/about/versions/16/features#hybrid-auto-exposure" target="_blank">hybrid auto exposure</a>, and <a href="https://developer.android.com/about/versions/16/features#color-temperature-tint" target="_blank">precise color temperature adjustments</a>. It's easier than ever to capture motion photos with new <a href="https://developer.android.com/about/versions/16/features#motion-photos" target="_blank">Intent actions</a>, and we're continuing to <a href="https://developer.android.com/about/versions/16/features#ultra-hdr" target="_blank">improve UltraHDR images</a>, with support for HEIC encoding and new parameters from the ISO 21496-1 draft standard. Support for the <a href="https://www.ietf.org/archive/id/draft-lim-apv-00.html" target="_blank">Advanced Professional Video</a> (APV) codec improves Android's place in professional recording and post-production workflows, with perceptually lossless video quality that survives multiple decodings/re-encodings without severe visual quality degradation.</p>
<p>Also, Android's photo picker can now be embedded in your view hierarchy, and users will appreciate the ability to search cloud media.</p>
<h2><span style="font-size: x-large;">More consistent, beautiful apps</span></h2>
<p>Android 16 introduces changes to improve the consistency and visual appearance of apps, laying the foundation for the upcoming <a href="https://m3.material.io/blog/building-with-m3-expressive" target="_blank">Material 3 Expressive</a> changes. Apps targeting Android 16 can no longer opt-out of going edge-to-edge, and ignores the <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/R.attr#elegantTextHeight" target="_blank">elegantTextHeight</a></span> attribute to ensure proper spacing in Arabic, Lao, Myanmar, Tamil, Gujarati, Kannada, Malayalam, Odia, Telugu or Thai.</p>
<h3><span style="font-size: large;">Adaptive Android apps</span></h3>
<p>With Android apps now running on a variety of devices and more windowing modes on large screens, developers should build Android apps that adapt to any screen and window size, regardless of device orientation. For apps targeting Android 16 (API level 36), Android 16 includes changes to how the system manages orientation, resizability, and aspect ratio restrictions. On displays with smallest width >= 600dp, the restrictions no longer apply and apps will fill the entire display window. You should check your apps to ensure your existing UIs scale seamlessly, working well across portrait and landscape aspect ratios. We're providing <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive" target="_blank">frameworks, tools, and libraries</a> to help.</p>
<image><div style="text-align: center;"><img alt="Side by side displays of non-adaptive app UI with on the left with text reading Goodbye 'mobile-only' apps and adaptive app UI on the right with text reads Hello adaptive apps" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD30WzHOlZlKw0BW-DA73rCllxBjfI_veOyaiVGYL1b97oXlKnblYLrslWNkjjb1w9t4UUsvHYUpxyf09rmZ7v2CLqXhEh6ljKqo4PlylE8zsmh9fO04ZAbuy2Um0bnI0P3RXd60MeqSCbzlRC_2B5wPI4igOgzMd_8BELZEMHDURfuQNsCe5iJxzEVl8/s16000/adaptive-apps.png" /></div></image><br />
<p>You can test these overrides without targeting using the <a href="https://developer.android.com/guide/app-compatibility/test-debug" target="_blank">app compatibility framework</a> by enabling the <span style="color: #0d904f; font-family: courier;">UNIVERSAL_RESIZABLE_BY_DEFAULT</span> flag. Read more about <a href="https://android-developers.googleblog.com/2025/01/orientation-and-resizability-changes-in-android-16.html" target="_blank">changes to orientation and resizability APIs in Android 16</a>.</p>
<h3><span style="font-size: large;">Predictive back by default and more</span></h3>
<p>Apps targeting Android 16 will have system animations for back-to-home, cross-task, and cross-activity by default. In addition, Android 16 extends predictive back navigation to <a href="https://developer.android.com/about/versions/16/behavior-changes-all#three-button-predictive-back" target="_blank">three-button navigation</a>, meaning that users long-pressing the back button will see a glimpse of the previous screen before navigating back.</p>
<p>To make it easier to get the back-to-home animation, Android 16 adds support for the <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/window/OnBackInvokedDispatcher#registerOnBackInvokedCallback%28int,%20android.window.OnBackInvokedCallback%29" target="_blank">onBackInvokedCallback</a></span> with the new <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/window/OnBackInvokedDispatcher#PRIORITY_SYSTEM_NAVIGATION_OBSERVER" target="_blank">PRIORITY_SYSTEM_NAVIGATION_OBSERVER</a></span>. Android 16 additionally adds the <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/window/SystemOnBackInvokedCallbacks#finishAndRemoveTaskCallback%28android.app.Activity%29" target="_blank">finishAndRemoveTaskCallback</a></span> and <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/window/SystemOnBackInvokedCallbacks#moveTaskToBackCallback%28android.app.Activity%29" target="_blank">moveTaskToBackCallback</a></span> for custom back stack behavior with predictive back.</p>
<h3><span style="font-size: large;">Consistent progress notifications</span></h3>
<p>Android 16 introduces <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/app/Notification.ProgressStyle" target="_blank">Notification.ProgressStyle</a></span>, which lets you create progress-centric notifications that can denote states and milestones in a user journey using <a href="https://developer.android.com/reference/android/app/Notification.ProgressStyle.Point" target="_blank">points</a> and <a href="https://developer.android.com/reference/android/app/Notification.ProgressStyle.Segment" target="_blank">segments</a>. Key use cases include rideshare, delivery, and navigation. It's the basis for <a href="https://io.google/2025/explore/technical-session-53" target="_blank">Live Updates</a>, which will be fully realized in an upcoming Android 16 update.</p>
<image><div style="text-align: center;"><img alt="side-by-side screenshots of a Pixel device showing progress notifications on the homescreen on the left and the updated progress notification in the notification menu on the right" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbvHrAcq9lg24psz0io68F1F06q8Nxp6h1nzEDzEvT7Au5DzcCodweBaDnaNJNVxYgaauusZlmZRLTZwhV7aNDIFIHWURAtKIVkBW_TYV4-Kd_EOVtymi0bIaR6iJtuQNATBKkrMYmH9I2nujXss0JFtEsj9HW02R57ZnPxduYMOeW5cq_bFtbOCwRTcQ/s16000/consistent-progress-notifications-android-16-in-aosp.png" /></div></image>
<h3><span style="font-size: large;">Custom AGSL graphical effects</span></h3>
<p>Android 16 adds RuntimeColorFilter and RuntimeXfermode, allowing you to author complex effects like Threshold, Sepia, and Hue Saturation in AGSL and apply them to draw calls.</p>
<h2><span style="font-size: x-large;">Help to create better performing, more efficient apps and games</span></h2>
<p>From APIs to help you understand app performance, to platform changes designed to increase efficiency, Android 16 is focused on making sure your apps perform well. Android 16 introduces <a href="https://developer.android.com/about/versions/16/features#system-triggered-profiling" target="_blank">system-triggered profiling</a> to <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/app/Activity#reportFullyDrawn%28%29" target="_blank">ProfilingManager</a></span>, ensures at most one missed execution of <span style="font-family: courier;"><a href="https://developer.android.com/reference/java/util/concurrent/ScheduledExecutorService#scheduleAtFixedRate%28java.lang.Runnable,%20long,%20long,%20java.util.concurrent.TimeUnit%29" target="_blank">scheduleAtFixedRate</a></span> is immediately executed when the app returns to a valid lifecycle for better efficiency, introduces <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/Display#hasArrSupport%28%29" target="_blank">hasArrSupport</a></span> and <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/Display#getSuggestedFrameRate%28int%29" target="_blank">getSuggestedFrameRate(int)</a></span> to make it easier for your apps to take advantage of adaptive display refresh rates, and introduces the <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/os/health/SystemHealthManager#getCpuHeadroom%28android.os.CpuHeadroomParams%29" target="_blank">getCpuHeadroom</a></span> and <span style="font-family: courier;">getGpuHeadroom</span> APIs along with <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/os/CpuHeadroomParams" target="_blank">CpuHeadroomParams</a></span> and <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/os/GpuHeadroomParams" target="_blank">GpuHeadroomParams</a></span> in <span style="color: #0d904f; font-family: courier;">SystemHealthManager</span> to provide games and resource-intensive apps estimates of available GPU and CPU resources on supported devices.</p>
<h3><span style="font-size: large;">JobScheduler updates</span></h3>
<p><span style="font-family: courier;"><a href="https://developer.android.com/reference/android/app/job/JobScheduler#getPendingJobReasons%28int%29" target="_blank">JobScheduler.getPendingJobReasons</a></span> in Android 16 returns multiple reasons why a job is pending, due to both explicit constraints you set and implicit constraints set by the system. The new <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/app/job/JobScheduler#getPendingJobReasonsHistory%28int%29" target="_blank">JobScheduler.getPendingJobReasonsHistory</a></span> returns the list of the most recent pending job reason changes, allowing you to better tune the way your app works in the background.</p>
<p>Android 16 is making adjustments for regular and expedited job runtime quota based on which apps standby bucket the app is in, whether the job starts execution while the app is in a top state, and whether the job is executing while the app is running a Foreground Service.</p>
<p>To detect (and then reduce) abandoned jobs, apps should use the new <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/app/job/JobParameters#STOP_REASON_TIMEOUT_ABANDONED" target="_blank">STOP_REASON_TIMEOUT_ABANDONED</a></span> job stop reason that the system assigns for abandoned jobs, instead of <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/app/job/JobParameters#STOP_REASON_TIMEOUT" target="_blank">STOP_REASON_TIMEOUT</a></span>.</p>
<h3><span style="font-size: large;">16KB page sizes</span></h3>
<p>Android 15 introduced support for 16KB page sizes to improve the performance of app launches, system boot-ups, and camera starts, while reducing battery usage. Android 16 adds a <a href="https://developer.android.com/about/versions/16/behavior-changes-all#16-kb-compatibility-mode" target="_blank">16 KB page size compatibility mode</a>, which, combined with new <a href="https://android-developers.googleblog.com/2025/05/prepare-play-apps-for-devices-with-16kb-page-size.html" target="_blank">Google Play technical requirements</a>, brings Android closer to having devices shipping with this important change. You can validate if your app needs updating using the <a href="https://developer.android.com/studio/preview/features#16kb-support" target="_blank">16KB page size checks & APK Analyzer</a> in the latest version of Android Studio.</p>
<h3><span style="font-size: large;">ART internal changes</span></h3>
<p>Android 16 includes the latest updates to the Android Runtime (ART) that improve the Android Runtime's (ART's) performance and provide support for additional language features. These improvements are also available to over a billion devices running Android 12 (API level 31) and higher through Google Play System updates. Apps and libraries that rely on internal non-SDK ART structures may not continue to work correctly with these changes.</p>
<h2><span style="font-size: x-large;">Privacy and security</span></h2>
<p>Android 16 continues our mission to improve security and ensure user privacy. It includes <a href="https://developer.android.com/about/versions/16/behavior-changes-all#intent-redirect-attacks" target="_blank">Improved security against Intent redirection attacks</a>, makes <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/provider/MediaStore#getVersion%28android.content.Context%29" target="_blank">MediaStore.getVersion</a></span> unique to each app, adds an API that allows apps to share <a href="https://developer.android.com/privacy-and-security/keystore" target="_blank">Android Keystore</a> keys, incorporates the latest version of the <a href="https://developers.google.com/privacy-sandbox/overview/android" target="_blank">Privacy Sandbox on Android</a>, introduces a new behavior during <a href="https://developer.android.com/develop/connectivity/bluetooth/companion-device-pairing" target="_blank">the companion device pairing flow</a> to protect the user's location privacy, and allows a user to easily select from and limit access to <a href="https://developer.android.com/about/versions/16/behavior-changes-16#owned-photos" target="_blank">app-owned shared media</a> in the photo picker.</p>
<h3><span style="font-size: large;">Local network permission testing</span></h3>
<p>Android 16 allows your app to test the upcoming local network permission feature, which will require your app to be granted NEARBY_WIFI_DEVICES permission. This change will be enforced in a future Android major release.</p>
<h2><span style="font-size: x-large;">An Android built for everyone</span></h2>
<p>Android 16 adds features such as <a href="http://blog.google/feed/auracast-hearing-aids-earbuds" target="_blank">Auracast broadcast audio</a> with compatible LE Audio hearing aids, Accessibility changes such as extending <span style="color: #0d904f; font-family: courier;">TtsSpan</span> with <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/text/style/TtsSpan#TYPE_DURATION" target="_blank">TYPE_DURATION</a></span>, a new list-based API within <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo" target="_blank">AccessibilityNodeInfo</a></span>, improved support for expandable elements using <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setExpandedState%28int%29" target="_blank">setExpandedState</a></span>, <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo.RangeInfo#RANGE_TYPE_INDETERMINATE" target="_blank">RANGE_TYPE_INDETERMINATE</a></span> for indeterminate <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/widget/ProgressBar" target="_blank">ProgressBar</a></span> widgets, <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo" target="_blank">AccessibilityNodeInfo</a></span> <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#getChecked%28%29" target="_blank">getChecked</a></span> and <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setChecked%28int%29" target="_blank">setChecked(int)</a></span> methods that support a "partially checked" state, <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/View#setSupplementalDescription%28java.lang.CharSequence%29" target="_blank">setSupplementalDescription</a></span> so you can provide text for a <span style="color: #0d904f; font-family: courier;">ViewGroup</span> without overriding information from its children, and <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setFieldRequired%28boolean%29" target="_blank">setFieldRequired</a></span> so apps can tell an accessibility service that input to a form field is required.</p>
<h3><span style="font-size: large;">Outline text for maximum text contrast</span></h3>
<p>Android 16 introduces outline text, replacing high contrast text, which draws a larger contrasting area around text to greatly improve legibility, along with new <span style="font-family: courier;"><a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityManager" target="_blank">AccessibilityManager</a></span> APIs to allow your apps to <a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityManager#isHighContrastTextEnabled%28%29" target="_blank">check</a> or <a href="https://developer.android.com/reference/android/view/accessibility/AccessibilityManager#addHighContrastTextStateChangeListener%28java.util.concurrent.Executor,%20android.view.accessibility.AccessibilityManager.HighContrastTextStateChangeListener%29" target="_blank">register a listener</a> to see if this mode is enabled.</p>
<image><div style="text-align: center;"><img alt="side-by-side screenshots of a Pixel device showing text with enhanced contrast before and after Android 16's new outline text accessbility feature" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1sjKOM8AXVesc1AQYKSS_fTRAG6NzRQjwwz-c5HRcl5Om8-xJNnUdLSNnLNu9FVn8YmqV1WsBtNoIgBuTi3lW3r8EJ-HR-adR9s9NNK7ZL8UP22dN6pHAPzgR8x121eXuDTjlRsTtYCm57kh-FRHI8XZKcsCeDtN24-No6SiEBlON4Wgx7eAXvyDcobk/s16000/text-enhanced-contrast-text-accessibility-feature-android-16-aosp.png" /></div><imgcaption><center><em>Text with enhanced contrast before and after Android 16's new outline text accessibility feature</em></center></imgcaption></image>
<h2><span style="font-size: x-large;">Get your apps, libraries, tools, and game engines ready!</span></h2>
<p>If you develop an SDK, library, tool, or game engine, it's even more important to prepare any necessary updates now to prevent your downstream app and game developers from being blocked by compatibility issues and allow them to target the latest SDK features. Please let your developers know if updates to your SDK are needed to fully support Android 16.</p>
<p>Testing involves installing your production app or a test app making use of your library or engine using Google Play or other means onto a device or emulator running Android 16. Work through all your app's flows and look for functional or UI issues. Review the <a href="https://developer.android.com/about/versions/16/behavior-changes-all" target="_blank">behavior changes</a> to focus your testing. Each release of Android contains platform changes that improve privacy, security, and overall user experience, and these changes can affect your apps. Here are several changes to focus on that apply, <b>even if you aren't yet targeting Android 16:</b></p>
<ul><ul>
<li><b>JobScheduler:</b> <a href="https://developer.android.com/about/versions/16/behavior-changes-all#job-quota-opt" target="_blank">JobScheduler quotas are enforced more strictly in Android 16</a>; enforcement will occur if a job executes while the app is on top, when a foreground service is running, or in the active standby bucket. <span style="color: #0d904f ; font-family: courier;">setImportantWhileForeground</span> <a href="https://developer.android.com/about/versions/16/behavior-changes-all#jobinfo-setimportantwhileforeground" target="_blank">is now a no-op</a>. The new stop reason <span style="color: #0d904f ; font-family: courier;">STOP_REASON_TIMEOUT_ABANDONED</span> occurs when we detect that the app can no longer stop the job.</li></ul><ul>
<li><b>Broadcasts:</b> Ordered broadcasts using priorities only work within the same process. Use another IPC if you need cross-process ordering.</li></ul><ul>
<li><b>ART:</b> If you use reflection, JNI, or any other means to access Android internals, <a href="https://developer.android.com/about/versions/16/behavior-changes-all#art-changes" target="_blank">your app might break</a>. This is never a best practice. Test thoroughly.</li></ul><ul>
<li><b>Intents:</b> Android 16 has <a href="https://developer.android.com/privacy-and-security/risks/intent-redirection" target="_blank">stronger security against Intent redirection attacks</a>. Test your Intent handling, and only opt-out of the protections if absolutely necessary.</li></ul><ul>
<li><b>16KB Page Size:</b> If your app isn't 16KB-page-size ready, you can use <a href="https://developer.android.com/about/versions/16/behavior-changes-all#16-kb-compatibility-mode" target="_blank">the new compatibility mode flag</a>, but we recommend migrating to 16KB for best performance.</li></ul><ul>
<li><b>Accessibility:</b> <span style="color: #0d904f ; font-family: courier;">announceForAccessibility</span> is deprecated; use the <a href="https://developer.android.com/about/versions/16/behavior-changes-all#disruptive-a11y" target="_blank">recommended alternatives</a>. Make sure to test with the new <a href="https://developer.android.com/about/versions/16/features#outline-text" target="_blank">outline text feature</a>.</li></ul><ul>
<li><b>Bluetooth:</b> Android 16 improves Bluetooth bond loss handling that <a href="https://developer.android.com/about/versions/16/behavior-changes-all#improved-bond-loss-handling" target="_blank">impacts the way re-pairing occurs</a>.</li>
</ul></ul>
<p>Other changes that will be impactful once your app targets Android 16:</p>
<ul><ul>
<li><b>User Experience:</b> Changes include the removal of <a href="https://developer.android.com/about/versions/16/behavior-changes-16#edge-to-edge" target="_blank">edge-to-edge opt-out</a>, required <a href="https://developer.android.com/about/versions/16/behavior-changes-16#predictive-back" target="_blank">migration or opt-out for predictive back</a>, and the <a href="https://developer.android.com/about/versions/16/behavior-changes-16#elegant-text-height" target="_blank">disabling of elegant font APIs</a>.</li></ul><ul>
<li><b>Core Functionality:</b> Optimizations have been made to <a href="https://developer.android.com/about/versions/16/behavior-changes-16#schedule-at-fixed-rate" target="_blank">fixed-rate work scheduling</a>.</li></ul><ul>
<li><b>Large Screen Devices:</b> <a href="https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation" target="_blank">Orientation, resizability, and aspect ratio restrictions will be ignored</a>. Ensure your layouts support all orientations across a variety of aspect ratios <a href="https://android-developers.googleblog.com/2025/01/orientation-and-resizability-changes-in-android-16.html" target="_blank">to adapt to different surfaces</a>.</li></ul><ul>
<li><b>Health and Fitness:</b> Changes have been implemented for <a href="https://developer.android.com/about/versions/16/behavior-changes-16#health-fitness-permissions" target="_blank">health and fitness permissions</a>.</li>
</ul></ul>
<p>Get your app ready for the future:</p>
<ul><ul>
<li><b>Local network protection:</b> Consider testing your app with the upcoming <a href="https://developer.android.com/privacy-and-security/local-network-permission" target="_blank">Local Network Protection</a> feature. It will give users more control over which apps can access devices on their local network in a future Android major release.</li>
</ul></ul>
<p>Remember to thoroughly exercise libraries and SDKs that your app is using during your compatibility testing. You may need to update to current SDK versions or reach out to the developer for help if you encounter any issues.</p>
<p>Once you’ve published the Android 16-compatible version of your app, you can start the process to <a href="https://developer.android.com/distribute/best-practices/develop/target-sdk" target="_blank">update your app's <span style="font-family: courier;">targetSdkVersion</span></a>. Review the <a href="https://developer.android.com/about/versions/16/behavior-changes-16" target="_blank">behavior changes that apply when your app targets Android 16</a> and use the <a href="https://developer.android.com/preview/test-changes" target="_blank">compatibility framework</a> to help quickly detect issues.</p>
<h2><span style="font-size: x-large;">Get started with Android 16</span></h2>
<p>Your Pixel device should get Android 16 shortly if you haven't already been on the Android Beta. If you don’t have a Pixel device, you can <a href="https://developer.android.com/about/versions/16/get#on_emulator" target="_blank">use the 64-bit system images with the Android Emulator</a> in Android Studio. If you are currently on Android 16 Beta 4.1 and have not yet taken an Android 16 QPR1 beta, you can opt out of the program and you will then be offered the release version of Android 16 over the air.</p>
<p>For the best development experience with Android 16, we recommend that you use the latest Canary build of <a href="https://developer.android.com/studio/preview" target="_blank">Android Studio Narwhal</a>. Once you’re set up, here are some of the things you should do:</p>
<ul><ul>
<li>Test your current app for compatibility, learn whether your app is <a href="https://developer.android.com/about/versions/16/behavior-changes-all" target="_blank">affected by changes in Android 16</a>, and install your app onto a device or <a href="https://developer.android.com/studio/run/emulator" target="_blank">Android Emulator</a> running Android 16 and extensively test it.</li>
</ul></ul>
<p>Thank you again to everyone who participated in our Android developer preview and beta program. We're looking forward to seeing how your apps take advantage of the updates in Android 16, and have plans to bring you updates in a fast-paced release cadence going forward.</p>
<p>For complete information on Android 16 please visit the <a href="https://developer.android.com/about/versions/16" target="_blank">Android 16 developer site</a>.</p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-5704601145755021962025-05-20T15:00:00.000-07:002025-05-20T15:03:26.083-07:00Announcing Kotlin Multiplatform Shared Module Template <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2UwvjbFzf_BidFrger9mzJQmJ61A9kJAU5ENv_32s55N6fh3GVFLtz47TAl1Ax3mWkk3ltsaDFubqlqDHfX6y0WYax4Je92Zlebv-qih3X68zHR1MD8xEkkK7cPXCexw69PLzkKPzEQ8NQPAHNjhc7TLSVRRasiTDa_sIPDn144dN9D5hT9A_XwlkJ-o/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Blogger.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2UwvjbFzf_BidFrger9mzJQmJ61A9kJAU5ENv_32s55N6fh3GVFLtz47TAl1Ax3mWkk3ltsaDFubqlqDHfX6y0WYax4Je92Zlebv-qih3X68zHR1MD8xEkkK7cPXCexw69PLzkKPzEQ8NQPAHNjhc7TLSVRRasiTDa_sIPDn144dN9D5hT9A_XwlkJ-o/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Blogger.png" style="display: none;" />
<em>Posted by Ben Trengrove - Developer Relations Engineer, Matt Dyor - Product Manager</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQeI-Ng_f6_CGYh-v9eO-sy0P3PTXLcfl6GLOqSZoH9GJ6XWx0h0-9f23NYL8f2gV-TRGQzOtjKH5Jj8IUa70Gc_lgZWi_158AcAkYd98kBWGoW7necXpKtHQK8821bIgjY1m8hlso0kMTr3gw10liioR0c0YUY0tI9boFGOcvCKKZsJEm1C63UPKNEfE/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Hero_Blog.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQeI-Ng_f6_CGYh-v9eO-sy0P3PTXLcfl6GLOqSZoH9GJ6XWx0h0-9f23NYL8f2gV-TRGQzOtjKH5Jj8IUa70Gc_lgZWi_158AcAkYd98kBWGoW7necXpKtHQK8821bIgjY1m8hlso0kMTr3gw10liioR0c0YUY0tI9boFGOcvCKKZsJEm1C63UPKNEfE/s1600/Op2_AndroidKoitlin_Multiplatform_SharedModule_Hero_Blog.png" /></a>
<p>To empower Android developers, we’re excited to announce Android Studio’s new Kotlin Multiplatform (KMP) Shared Module Template. This template was specifically designed to allow developers to use a single codebase and apply business logic across platforms. More specifically, developers will be able to add shared modules to existing Android apps and share the business logic across their Android and iOS applications.</p>
<p>This makes it easier for Android developers to craft, maintain, and most importantly, own the business logic. The <b>KMP Shared Module Template</b> is available within Android Studio when you create a new module within a project.</p>
<image><div style="text-align: center;"><img alt="a screen shot of the new module tab in Android Studio" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDB0ElhUV2jcJKU98tUhA81TvYEn6FzSIDIlgrfr-bIeTvYdM81iGhhmIf02isCk11k9um51JZaIerFZxvzSP6RMMRVcXaNGzHeK0YACo6sZZO7FWaPscCatJdns3VB3ftchu3ZXeP6bUR7c8U4JJq5R7bAWbabMqWHe3oA7CkraAYHWAQ1QRD3ZNtckg/s16000/shared-module-template-new-module-tab-kotlin-multiplatform-google-io.png" /></div><imgcaption><center><em>Shared Module Templates are found under the New Module tab</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">A single code base for business logic</span></h2>
<p>Most developers have grown accustomed to maintaining different code bases, platform to platform. In the past, whenever there’s an update to the business logic, it must be carefully updated in each codebase. But with the KMP Shared Module Template:</p>
<ul><ul>
<li>Developers can write once and publish the business logic to wherever they need it.</li>
<li>Engineering teams can do more faster.</li>
<li>User experiences are more consistent across the entire audience, regardless of platform or form factor.</li>
<li>Releases are better coordinated and launched with fewer errors.</li>
</ul></ul>
<p>Customers and developer teams who adopt KMP Shared Module Templates should expect to achieve greater ROI from mobile teams who can turn their attention towards delighting their users more and worrying about inconsistent code less.</p>
<h2><span style="font-size: x-large;">KMP enthusiasm</span></h2>
<p>The Android developer community remains very excited about KMP, especially after Google I/O 2024 where Google announced official support for shared logic across Android and iOS. We have seen continued momentum and enthusiasm from the community. For example, there are now over 1,500 KMP libraries listed on JetBrains' <a href="https://klibs.io/" target="_blank">klibs.io</a>.</p>
<p>Our customers are excited because KMP has made Android developers more productive. Consistently, Android developers have said that they want solutions that allow them to share code more easily and they want tools which boost productivity. This is why we recommend KMP; KMP simultaneously delivers a great experience for Android users while boosting ROI for the app makers. The KMP Shared Module Template is the latest step towards a developer ecosystem where user experience is consistent and applications are updated seamlessly.</p>
<h2><span style="font-size: x-large;">Large scale KMP adoptions</span></h2>
<p>This KMP Shared Module Template is new, but KMP more broadly is a maturing technology with several large-scale migrations underway. In fact, KMP has matured enough to support mission critical applications at Google. Google Docs, for example, is now running KMP in production on iOS with runtime performance on par or better than before. Beyond Google, <a href="https://www.stoneco.com.br/en/" target="_blank">Stone’s</a> 130 mobile developers are sharing over 50% of their code, allowing existing mobile teams to ship features approximately 40% faster to both Android and iOS.</p>
<h2><span style="font-size: x-large;">KMP was designed for Android development</span></h2>
<p>As always, we've designed the Shared Module Template with the needs of Android developer teams in mind. Making the KMP Shared Module Template part of the native Android Studio experience allows developers to efficiently add a shared module to an existing Android application and immediately start building shared business logic that leverages several KMP-ready Jetpack libraries including Room, SQLite, and DataStore to name just a few.</p>
<h2><span style="font-size: x-large;">Come check it out at KotlinConf</span></h2>
<p>Releasing Android Studio’s KMP Shared Module Template marks a significant step toward empowering Android development teams to innovate faster, to efficiently manage business logic, and to build high-quality applications with greater confidence. It means that Android developers can be responsible for the code that drives the business logic for every app across Android and iOS. We’re excited to bring Shared Module Template to <a href="https://kotlinconf.com/" target="_blank"><b>KotlinConf in Copenhagen, May 21 - 23</b></a>.</p>
<image><div style="text-align: center;"><img alt="KotlinConf 2025 Copenhagen Denmark, May 21 Workshops May 22-23 Conference" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3C2szkC05YnqraA6dkb0Q0PQRoHvGXCE1q67H09RfZ1vzqr3BYzRtblX82Sqzysn2rMsiXKZK3z7rz_YqdKlkkyAiH7hG8GS3THSElpsSoVuAqOMId5S3P1Yhs7wUWbyTwjfM5wHVfCvqFmtxNtmaqzSSt2ke48mnrfihTBqTwviopIU5snnaVald3y0/s1600/kotlinconf-2025-copenhagen-denmark-workshops-conference-google-io.png" /></div></image><br />
<h2><span style="font-size: x-large;">Get started with KMP Shared Module Template</span></h2>
<p>To get started, you'll need the latest edition of Android Studio. In your Android project, the Shared Module Template is available within Android Studio when you create a new module. Click on “File” then “New” then “New Module” and finally “Kotlin Multiplatform Shared Module” and you are ready to add a KMP Shared Module to your Android app.</p>
<p>We appreciate any feedback on things you like or features you would like to see. If you find a bug, please report the issue. Remember to also follow us on X, LinkedIn, Blog, or YouTube for more Android development updates!</p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-6925809857629690672025-05-20T11:03:00.000-07:002025-05-20T12:03:41.962-07:0016 things to know for Android developers at Google I/O 2025<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9MIW2UBiiU-RrzVtvnukfm2wzj2-OFAM75mAH2f3yZyoPoivSPB0ycuUgkSnTEhJo1EpkfZCOpEdGHQT8ICfD8qvoB2euLdesX7M5KxguVCM-2xgPsHXwLTPkB5txjhaoqI8VBwBB0InamA7idRMkP_0aUMq-sGyzXhHzR6gX_n_v0jxDJ-CDOIO3HrE/s1600/O25-BHero-Android-5-Meta.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9MIW2UBiiU-RrzVtvnukfm2wzj2-OFAM75mAH2f3yZyoPoivSPB0ycuUgkSnTEhJo1EpkfZCOpEdGHQT8ICfD8qvoB2euLdesX7M5KxguVCM-2xgPsHXwLTPkB5txjhaoqI8VBwBB0InamA7idRMkP_0aUMq-sGyzXhHzR6gX_n_v0jxDJ-CDOIO3HrE/s1600/O25-BHero-Android-5-Meta.png">
<em>Posted by <a href="https://x.com/matthewmccull" target="_blank">Matthew McCullough</a> – VP of Product Management, Android Developer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMBMzX28kZHHT7TSOgMqoyOJpzfVBFX1TdkbxXSV0TJQJvbm0d905KKfolPW-PtTxAhWF_r_NjaUybrhcDOXntZSb1txCh5QgtN8minYtCmT_m8WecYRlAefmvwRJDdUgP-XGABgORRTEvLpNi5HYzaa6x6KRREoRql6X4W3L_BL6Dex75XmY4ybcjHGs/s1600/O25-BHero-Android-5.png" imageanchor="1" ><img style="100%" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMBMzX28kZHHT7TSOgMqoyOJpzfVBFX1TdkbxXSV0TJQJvbm0d905KKfolPW-PtTxAhWF_r_NjaUybrhcDOXntZSb1txCh5QgtN8minYtCmT_m8WecYRlAefmvwRJDdUgP-XGABgORRTEvLpNi5HYzaa6x6KRREoRql6X4W3L_BL6Dex75XmY4ybcjHGs/s1600/O25-BHero-Android-5.png" data-original-width="100%" data-original-height="800" /></a>
<p>Today at <a href="https://io.google/2025/" target="_blank">Google I/O</a>, we announced the many ways we’re helping you build excellent, adaptive experiences, and helping you stay more productive through updates to our tooling that put AI at your fingertips and throughout your development lifecycle. Here’s a recap of 16 of our favorite announcements for Android developers; you can also <a href="https://android-developers.googleblog.com/2025/05/the-android-show-io-edition.html" target="_blank">see what was announced</a> last week in <a href="https://www.android.com/new-features-on-android/io-2025/" target="_blank">The Android Show: I/O Edition</a>. And stay tuned over the next two days as we <a href="https://io.google/2025/explore?focus_areas=Android" target="_blank">dive into all of the topics in more detail</a>!</p>
<h2><span style="font-size: x-large">Building AI into your Apps</span></h2>
<h3><span style="font-size: large">1: Building intelligent apps with Generative AI</span></h3>
<p>Generative AI enhances apps' experience by making them intelligent, personalized and agentic. This year, we <a href="https://android-developers.googleblog.com/2025/05/on-device-gen-ai-apis-ml-kit-gemini-nano.html" target="_blank">announced new ML Kit GenAI APIs using Gemini Nano</a> for common on-device tasks like summarization, proofreading, rewrite, and image description. We also <a href="https://io.google/2025/explore/technical-session-13" target="_blank">provided capabilities</a> for developers to harness more powerful models such as Gemini Pro, Gemini Flash, and Imagen via Firebase AI Logic for more complex use cases like image generation and processing extensive data across modalities, including bringing <a href="https://io.google/2025/explore/technical-session-2" target="_blank">AI to life in Android XR</a>, and a new AI sample app, <a href="https://android-developers.googleblog.com/2025/05/androidify-building-ai-driven-experiences-jetpack-compose-gemini-camerax.html" target="_blank">Androidify</a>, that showcases how these APIs can transform your selfies into unique Android robots! To start building intelligent experiences by leveraging these new capabilities, explore the <a href="http://d.android.com/ai" target="_blank">developer documentation</a>, <a href="http://github.com/android/ai-samples" target="_blank">sample apps</a>, and watch the <a href="https://io.google/2025/explore/technical-session-20" target="_blank">overview session</a> to choose the right solution for your app.</p>
<h2><span style="font-size: x-large">New experiences across devices</span></h2>
<h3><span style="font-size: large">2: One app, every screen: think adaptive and unlock 500 million screens</span></h3>
<p>Mobile Android apps form the foundation across phones, foldables, tablets and ChromeOS, and this year we’re helping you bring them to cars and XR and expanding usages with desktop windowing and connected displays. This expansion means tapping into an ecosystem of 500 million devices – a significant opportunity to engage more users when you <b>think adaptive</b>, <a href="https://android-developers.googleblog.com/2025/05/adaptiveapps-io25.html" target="_blank">building a single mobile app</a> that works across form factors. Resources, including <a href="https://developer.android.com/develop/ui/compose/build-adaptive-apps#compose_material_3_adaptive" target="_blank">Compose Layouts library</a> and <a href="http://goo.gle/nav3" target="_blank">Jetpack Navigation</a> updates, help make building these dynamic experiences easier than before. You can see how <a href="https://android-developers.googleblog.com/2025/05/peacock-optimizes-streaming-jetpack-compose.html" target="_blank">Peacock, NBCUniveral’s streaming service (available in the US) is building adaptively</a> to meet users where they are.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ooRcQFMYzmA" width="100%" height="498" src="https://www.youtube.com/embed/ooRcQFMYzmA"></iframe><imgcaption><center><em><b>Disclaimer:</b> Peacock is available in the US only. This video will only be viewable to US viewers.</em></center></imgcaption><br/>
<h3><span style="font-size: large">3: Material 3 Expressive: design for intuition and emotion</span></h3>
<p>The new <a href="https://m3.material.io/blog/building-with-m3-expressive?utm_source=blog&utm_medium=motion&utm_campaign=IO25" target="_blank">Material 3 Expressive</a> update provides tools to enhance your product's appeal by harnessing emotional UX, making it more engaging, intuitive, and desirable for users. Check out the I/O talk to <a href="https://io.google/2025/explore/technical-session-24" target="_blank">learn more about expressive design</a> and how it inspires emotion, clearly guides users toward their goals, and offers a flexible and personalized experience.</p>
<image><div style="text-align: center;"><img id="imgFull" alt="moving image of Material 3 Expressive demo" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s1600/new-in-jetpack-compose-google-io-meta.gif" width="100%"/></div></image><br/>
<h3><span style="font-size: large">4: Smarter widgets, engaging live updates</span></h3>
<p>Measure the return on investment of your widgets (available soon) and easily create personalized widget previews with <a href="https://developer.android.com/jetpack/androidx/releases/glance#1.2.0-alpha01" target="_blank">Glance 1.2</a>. Promoted <a href="https://io.google/2025/explore/technical-session-53" target="_blank">Live Updates</a> notify users of important ongoing notifications and come with a new <a href="http://goo.gle/live-updates" target="_blank">Progress Style</a> standardized template.</p>
<image><div style="text-align: center;"><img id="imgFull" alt="moving image of Material 3 Expressive demo" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNBO_jkUA2oo4uA70kc2GhnDWiXMExNX7T9K9ANfUqNP_YqeMZnPGPpPaJevmwLOrVeuzdgF8hJxvNT3jZ3FYBfx88T6EA_kOZKBNcbF-kSMKB1_9R5z-V0QqiFrNV0wmar-qk3AQO0Bt53dCtkssW2RDtS1lCosWESEQ7MSFgQXhRnXTNlBrBnbHMaO8/s1600/widgets-live-updates-android-16.gif" width="100%"/></div></image><br/>
<h3><span style="font-size: large">5: Enhanced Camera & Media: low light boost and battery savings</span></h3>
<p>This year's I/O introduces several camera and media enhancements. These include a software low light boost for improved photography in dim lighting and native PCM offload, allowing the DSP to handle more audio playback processing, thus conserving user battery. Explore our detailed sessions on <a href="https://io.google/2025/explore/technical-session-19" target="_blank">built-in effects within CameraX and Media3</a> for further information.</p>
<h3><span style="font-size: large">6: Build next-gen app experiences for Cars</span></h3>
<p>We're launching expanded opportunities for developers to build in-car experiences, including new Gemini integrations, support for more app categories like Games and Video, and enhanced capabilities for media and communication apps via the Car App Library and new APIs. Alongside updated <a href="https://developer.android.com/docs/quality-guidelines/car-app-quality" target="_blank">car app quality tiers</a> and simplified distribution, we'll soon be providing improved testing tools like <a href="https://developer.android.com/training/cars/testing/aaos-on-pixel" target="_blank">Android Automotive OS on Pixel Tablet</a> and Firebase Test Lab access to help you bring your innovative apps to cars. Learn more from our <a href="https://io.google/2025/explore/technical-session-18" target="_blank">technical session</a> and <a href="https://android-developers.googleblog.com/2025/05/android-for-cars-google-io-2025.html" target="_blank">blog post on new in-car app experiences</a>.</p>
<h3><span style="font-size: large">7: Build for Android XR's expanding ecosystem with Developer Preview 2 of the SDK</span></h3>
<p>We <a href="https://blog.google/products/android/android-xr/" target="_blank">announced Android XR</a> in December, and today at Google I/O we shared a bunch of updates coming to the platform including Developer Preview 2 of the Android XR SDK plus an expanding ecosystem of devices: in addition to the first Android XR headset, Samsung’s Project Moohan, you’ll also see more devices including a new portable Android XR device from our partners at XREAL. There’s lots more to cover for <a href="https://developer.android.com/develop/xr" target="_blank">Android XR</a>: Watch the <a href="https://io.google/2025/explore/technical-session-2" target="_blank">Compose and AI on Android XR session</a>, and the <a href="https://io.google/2025/explore/technical-session-22" target="_blank">Building differentiated apps for Android XR with 3D content session</a>, and learn more about <a href="https://android-developers.googleblog.com/2025/05/updates-to-android-xr-sdk-developer-preview.html" target="_blank">building for Android XR</a>.</p>
<image><div style="text-align: center;"><img alt="product image of XREAL’s Project Aura against a nebulous black background" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujCjZD5_MiRHDiDp_O-PRCGs_CdfARZbtfC5xqrKgMlJbWZQxNwdNN9C4SwVYB7Lu0Pm8GTubBcVenZm07pCIMAuAx5WcFjADHyE0JeQYhIlEmTqoW0te7xBz15Ab3Oh7C8IN4uk5zLnvqRJmUIEz0lOtSMO-e1oeiWK-jo2NvvrzBQoNUSU7_0UFmf4/s1600/android-xr-google-io-meta.png" width="100%" /></div><imgcaption><center><em>XREAL’s Project Aura</em></center></imgcaption></image><br />
<h3><span style="font-size: large">8: Express yourself on Wear OS: meet Material Expressive on Wear OS 6</span></h3>
<p>This year we are launching Wear OS 6: the most powerful and expressive version of Wear OS. <a href="https://blog.google/products/android/material-3-expressive-android-wearos-launch/" target="_blank">Wear OS 6 features Material 3 Expressive</a>, a new UI design with personalized visuals and motion for user creativity, coming to Wear, Android, and Google apps later this year. Developers gain access to Material 3 Expressive on Wear OS by utilizing new Jetpack libraries: Wear Compose Material 3, which provides components for apps and Wear ProtoLayout Material 3 which provides components and layouts for tiles. Get started with <a href="https://android-developers.googleblog.com/2025/05/whats-new-in-wear-os-6.html" target="_blank">Material 3 libraries and other updates on Wear</a>.</p>
<image><div style="text-align: center;"><img alt="moving image displays examples of Material 3 Expressive on Wear OS experiences" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX8QuioDGc_JBakiOJJ61-2pX5dWwklsJL_eFJMl4EvMpst4kfMEwi3We1_UxfVFlJEmOGVVpX3obgnoQgr6QFtH3JNu0T-B526Z23vz1tZA5cgy7yHZsgc71Zrcd5GLPFba08tTSdZfQwueS4q65KCm864z9yFd1aoOU1MaLUHSReLvl3FlogIiAdd94/s1600/material3-expressive-wear-os.gif" width="100%" /></div><imgcaption><center><em>Some examples of Material 3 Expressive on Wear OS experiences</em></center></imgcaption></image><br />
<h3><span style="font-size: large">9: Engage users on Google TV with excellent TV apps</span></h3>
<p>You can leverage more resources within Compose's core and Material libraries with the stable release of Compose for TV, empowering you to build excellent adaptive UIs across your apps. We're also thrilled to share <a href="https://android-developers.googleblog.com/2025/05/engage-users-google-tv-excellent-apps.html" target="_blank">exciting platform updates and developer tools designed to boost app engagement</a>, including bringing Gemini capabilities to TV in the fall, opening enrollment for our Video Discovery API, and more.</p>
<h2><span style="font-size: x-large">Developer productivity</span></h2>
<h3><span style="font-size: large">10: Build beautiful apps faster with Jetpack Compose</span></h3>
<p><a href="https://developer.android.com/compose" target="_blank">Compose</a> is our big bet for UI development. The latest stable BOM release provides the features, performance, stability, and libraries that you need to build beautiful adaptive apps faster, so you can focus on <a href="https://android-developers.googleblog.com/2025/05/whats-new-in-jetpack-compose.html" target="_blank">what makes your app valuable to users</a>.</p>
<image><div style="text-align: center;"><img alt="moving image of compose adaptive layouts updates in the Google Play app" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ir7eGSz036zy966UuT7AeqwENw5jbJpvzJKgZvEvg-55RlZHecPCUvF2QJifyt0WwE9wjj95MYp0Y6uR7ZjfKkmpGHlaZ09Qx-t7OCSqKkqWiaDeQkToabXWqe3jJhSaehclZiNPkWejK1jG0UD8rJqC-3PB5EIs0EyIX98iDijA9r4G4Pvlj4Vm50w/s16000/compose-adaptive-layouts-updates-google-play-app.gif" /></div><imgcaption><center><em>Compose Adaptive Layouts Updates in the Google Play app</em></center></imgcaption></image><br />
<h3><span style="font-size: large">11: Kotlin Multiplatform: new Shared Template lets you build across platforms, easily</span></h3>
<p>Kotlin Multiplatform (KMP) enables teams to reach new audiences across Android and iOS with less development time. We’ve released a new Android Studio <a href="https://developer.android.com/kotlin/multiplatform/migrate" target="_blank">KMP shared module template</a>, updated <a href="https://developer.android.com/kotlin/multiplatform" target="_blank">Jetpack libraries</a> and new codelabs (<a href="https://developer.android.com/codelabs/kmp-get-started" target="_blank">Getting started with Kotlin Multiplatform</a> and <a href="https://developer.android.com/codelabs/kmp-migrate-room" target="_blank">Migrating your Room database to KMP</a>) to help developers who are looking to get started with KMP. Shared module templates make it easier for developers to craft, maintain, and own the business logic. Read more on <a href="https://android-developers.googleblog.com/2025/05/android-kotlin-multiplatform-google-io-kotlinconf-2025.html" target="_blank">what's new in Android's Kotlin Multiplatform</a>.
<h3><span style="font-size: large">12: Gemini in Android Studio: AI Agents to help you work</span></h3>
<p><a href="https://developer.android.com/gemini-in-android" target="_blank">Gemini in Android Studio</a> is the AI-powered coding companion that makes Android developers more productive at every stage of the dev lifecycle. In March, we <a href="https://android-developers.googleblog.com/2025/03/multimodal-image-attachment-now-available-gemini-android-studio.html" target="_blank">introduced Image to Code</a> to bridge the gap between UX teams and software engineers by intelligently converting design mockups into <a href="https://www.youtube.com/watch?v=f_6mtRWJzuc" target="_blank">working Compose UI code</a>. And today, we previewed new agentic AI experiences, <a href="https://www.youtube.com/watch?v=mP1tlIKK0R4" target="_blank">Journeys</a> for Android Studio and <a href="https://www.youtube.com/watch?v=ubyPjBesW-8" target="_blank">Version Upgrade Agent</a>. These innovations make it easier to build and test code. You can read more about these updates in <a href="https://android-developers.googleblog.com/2025/05/google-io-2025-whats-new-in-android-development-tools.html" target="_blank">What’s new in Android development tools</a>.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ubyPjBesW-8" width="100%" height="413" src="https://www.youtube.com/embed/ubyPjBesW-8"></iframe>
<h3><span style="font-size: large">13: Android Studio: smarter with Gemini</span></h3>
<p>In this latest release, we're empowering devs with AI-driven tools like <a href="https://developer.android.com/gemini-in-android" target="_blank">Gemini in Android Studio</a>, <a href="https://android-developers.googleblog.com/2025/03/multimodal-image-attachment-now-available-gemini-android-studio.html" target="_blank">streamlining UI creation</a>, <a href="https://www.youtube.com/watch?v=mP1tlIKK0R4" target="_blank">making testing easier</a>, and ensuring apps are future-proofed in our ever-evolving Android ecosystem. These innovations accelerate development cycles, improve app quality, and help you stay ahead in a dynamic mobile landscape. To take advantage, upgrade to <a href="https://developer.android.com/studio/preview" target="_blank">the latest Studio release</a>. You can read more about these innovations in <a href="https://android-developers.googleblog.com/2025/05/google-io-2025-whats-new-in-android-development-tools.html" target="_blank">What’s new in Android development tools</a>.</p>
<image><div style="text-align: center;"><img alt="moving image of Gemini in Android Studio Agentic Experiences including Journeys and Version Upgrade" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjelKyx9X7027dUVJZ1q_P3H_yb57I83pd0163JW8iZc0TqkmDpGtX-BZztxlTzrz6IxxbPy6IfYrYM57h_yis57Zf3paFulaoBX56rYRi6Fe2hm2HTmfcxpZ6qM2NLVWNWUkTVZX6S4_4FkBby2ONmztmQ38BcCetvshRMof-mO9n4rEWYTMw-8kaXvyA/s1600/gemini-in-android-studio-journeys.gif" /></div></image><br />
<h2><span style="font-size: x-large">And the latest on driving business growth</span></h2>
<h3><span style="font-size: large">14: What’s new in Google Play</span></h3>
<p>Get ready for exciting updates from Play designed to boost your discovery, engagement and revenue! Learn how we’re continuing to become a content-rich destination with enhanced personalization and fresh ways to showcase your apps and content. Plus, explore powerful new subscription features designed to streamline checkout and reduce churn. Read <a href="https://android-developers.googleblog.com/2025/05/io-2025-whats-new-in-google-play.html" target="_blank">I/O 2025: What's new in Google Play</a> to learn more.</p>
<image><div style="text-align: center;"><img alt="a moving image of three mobile devices displaying how content is displayed on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNeLmRYs6g8B9gGtuXJ9WJjOXWo62idQ9V-F8bqqm1k_29Yiwamy1faBLDd0SJRC0B6HYCiY11iWJjfYZoO7qn4UJY4zU4ckStiG3iSvAXqV76rHpVJj0mkTYs73fyjrOj3SMIkVOU77NLwWx2D-VFO-E9_0qPen1U2owcKq_8jt1Zth5NbX0nnBL4StU/s16000/curated-spaces-new-in-play-google-io.gif" /></div></image><br />
<h3><span style="font-size: large">15: Start migrating to Play Games Services v2 today</span></h3>
<p><a href="https://developer.android.com/games/pgs/overview" target="_blank">Play Games Services (PGS)</a> connects over 2 billion gamer profiles on Play, powering cross-device gameplay, personalized gaming content and rewards for your players throughout the gaming journey. We are moving PGS v1 features to v2 with more advanced features and an easier integration path. Learn more about the <a href="https://io.google/2025/explore/technical-session-15" target="_blank">migration timeline and new features</a>.</p>
<h3><span style="font-size: large">16: And of course, Android 16</span></h3>
<p>We unpacked some of the latest features coming to users in <a href="https://developer.android.com/about/versions/16" target="_blank">Android 16</a>, which we’ve been <a href="https://android-developers.googleblog.com/search?q=Android+16" target="_blank">previewing with you</a> for the last few months. If you haven’t already, make sure to <a href="https://developer.android.com/about/versions/16/get" target="_blank">test your apps with the latest Beta of Android 16</a>. Android 16 includes Live Updates, professional media and camera features, desktop windowing and connected displays, major accessibility enhancements and much more.</p>
<h2><span style="font-size: x-large">Check out all of the Android and Play content at Google I/O</span></h2>
<p>This was just a preview of some of the cool updates for Android developers at Google I/O, but <a href="https://io.google/2025/" target="_blank">stay tuned to Google I/O</a> over the next two days as we dive into a range of Android developer topics in more detail. You can check out the <a href="https://io.google/2025/explore/pa-keynote-7" target="_blank">What’s New in Android</a> and the <a href="https://io.google/2025/explore?focus_areas=Android" target="_blank">full Android track of sessions</a>, and whether you’re joining in person or around the world, we can’t wait to engage with you!</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br />Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-55837381064050271892025-05-20T11:02:00.000-07:002025-05-20T12:03:24.749-07:00What’s new in Wear OS 6 <meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeHGsTq83LxzI8LuR4L6YD8IR7NfVNuOdty-7Ctx7uMvxUsSlOaTjf49NA4Lru9VG9BSq275Xh_BLzkQ4zbmF08DMWlg3OMLKg61889Qd2_wabbCdOFpqsDXXeNdvnoCQjvc_fvlzhqPIx_h7psbVp-iNXmBnGLT4CDjIMWeNTDsdENEyTUFrL1nhHH5g/s1600/new-in-wear-os-6-google-io-2025%20%282%29.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeHGsTq83LxzI8LuR4L6YD8IR7NfVNuOdty-7Ctx7uMvxUsSlOaTjf49NA4Lru9VG9BSq275Xh_BLzkQ4zbmF08DMWlg3OMLKg61889Qd2_wabbCdOFpqsDXXeNdvnoCQjvc_fvlzhqPIx_h7psbVp-iNXmBnGLT4CDjIMWeNTDsdENEyTUFrL1nhHH5g/s1600/new-in-wear-os-6-google-io-2025%20%282%29.png" style="display: none;" />
<em>Posted by <a href="https://www.linkedin.com/in/chiarachiappini/" target="_blank">Chiara Chiappini</a> – Developer Relations Engineer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5d-DTtcDafKrQB-N_rY9u_SZxiuCpXFMxS5qG8EwGSpejAJcOUxAcumJzTqU_TQrYkk-9D9IWSB30Hw5JJSr_fDtU4RDW4b6bVqmeeEr-bmRAB4Q0zFSu_Yeu2AeIi_fbcCJskN7HxdSpxSwAxJw1PEO3LrUP0lcUFrZEc-gClxpXRih3PJuQ8N6WWY/s1600/new-in-wear-os-6-google-io-2025%20%281%29.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP5d-DTtcDafKrQB-N_rY9u_SZxiuCpXFMxS5qG8EwGSpejAJcOUxAcumJzTqU_TQrYkk-9D9IWSB30Hw5JJSr_fDtU4RDW4b6bVqmeeEr-bmRAB4Q0zFSu_Yeu2AeIi_fbcCJskN7HxdSpxSwAxJw1PEO3LrUP0lcUFrZEc-gClxpXRih3PJuQ8N6WWY/s1600/new-in-wear-os-6-google-io-2025%20%281%29.png" /></a>
<p>This year, we’re excited to introduce Wear OS 6: the most power-efficient and expressive version of Wear OS yet.</p>
<p>Wear OS 6 introduces the new design system we call <a href="http://blog.google/products/android/material-3-expressive-android-wearos-launch" target="_blank">Material 3 Expressive</a>. It features a major refresh with visual and motion components designed to give users an experience with more personalization. The new design offers a great level of expression to meet user demand for experiences that are modern, relevant, and distinct. Material 3 Expressive is coming to Wear OS, Android, and all your favorite Google apps on these devices later this year.</p>
<p>The good news is that you don’t need to compromise battery for beauty: thanks to Wear OS platform optimizations, watches updating from Wear OS 5 to Wear OS 6 can see up to 10% improvement in battery life.<sup>1</sup></p>
<h2><span style="font-size: x-large;">Wear OS 6 developer preview</span></h2>
<p>Today we’re releasing the Developer Preview of Wear OS 6, the next version of Google’s smartwatch platform, based on Android 16.</p>
<p>Wear OS 6 brings a number of developer-facing changes, such as refining the always-on display experience. <a href="https://developer.android.com/training/wearables/versions/6/changes" target="_blank">Check out what’s changed</a> and <a href="https://developer.android.com/training/wearables/versions/6/emulator" target="_blank">try the new Wear OS 6 emulator</a> to test your app for compatibility with the new platform version.</p>
<h2><span style="font-size: x-large;">Material 3 Expressive on Wear OS</span></h2>
<image><div style="text-align: center;"><img alt="moving image displays examples of Material 3 Expressive on Wear OS experiences" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX8QuioDGc_JBakiOJJ61-2pX5dWwklsJL_eFJMl4EvMpst4kfMEwi3We1_UxfVFlJEmOGVVpX3obgnoQgr6QFtH3JNu0T-B526Z23vz1tZA5cgy7yHZsgc71Zrcd5GLPFba08tTSdZfQwueS4q65KCm864z9yFd1aoOU1MaLUHSReLvl3FlogIiAdd94/s1600/material3-expressive-wear-os.gif" width="100%" /></div><imgcaption><center><em>Some examples of Material 3 Expressive on Wear OS experiences</em></center></imgcaption></image><br />
<p>Material 3 Expressive for the watch is fully optimized for the round display. We recommend developers embrace the new design system in their apps and tiles. To help you adopt Material 3 Expressive in your app, we have begun releasing new <a href="https://developer.android.com/design/ui/wear/guides/get-started" target="_blank">design guidance</a> for Wear OS, along with corresponding <a href="https://developer.android.com/design/ui/wear/guides/foundations/download" target="_blank">Figma design kits</a>.</p>
<p>As a developer, you can get access the Material 3 Expressive on Wear OS using new Jetpack libraries:</p>
<ul><ul>
<li><a href="https://developer.android.com/jetpack/androidx/releases/wear-compose#1.5.0-beta01" target="_blank">Wear Compose Material 3</a> that provides components for apps.</li>
<li><a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-beta02" target="_blank">Wear ProtoLayout Material 3</a> that provides components and layouts for tiles.</li>
</ul></ul>
<p>These two libraries provide implementations for the components catalog that adheres to the Material 3 Expressive design language.</p>
<h3><span style="font-size: large;">Make it personal with richer color schemes using themes</span></h3>
<image><div style="text-align: center;"><img alt="moving image showing how dynamic color theme updates colors of apps and Tiles" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiArqKHaEcCIOWzN9rfx7Idh-PcYHpMMMrPf46kXpRXNQsNl6SSMfpO86Wobyb9WrnrJ_BLJVs0j3G8RCCyoiHZxIrouK-yzuQDwIZb8CYNK2R002NqRW5jV1DGBkFnzSmPBSV53VyxOqA_4n2-djlsJMOLUkjKiGAoTTc-JwUVFYcy3oBUYdgtjZhpnNk/s1600/wear-dynamic-color.gif" width="100%" /></div><imgcaption><center><em>Dynamic color theme updates colors of apps and Tiles</em></center></imgcaption></image><br />
<p>The Wear Compose Material 3 and Wear Protolayout Material 3 libraries provide updated and extended color schemes, typography, and shapes to bring both depth and variety to your designs. Additionally, your tiles now align with the system font by default (on Wear OS 6+ devices), offering a more cohesive experience on the watch.</p>
<p>Both libraries introduce <a href="https://m3.material.io/styles/color/dynamic/choosing-a-source" target="_blank">dynamic color theming</a>, which automatically generates a color theme for your app or tile to match the colors of the watch face of Pixel watches.</p>
<h3><span style="font-size: large;">Make it more glanceable with new tile components</span></h3>
<p>Tiles now support a new framework and a set of components that embrace the watch's circular form factor. These components make tiles more consistent and glanceable, so users can more easily take swift action on the information included in them.</p>
<p>We’ve introduced a 3-slot tile layout to improve visual consistency in the Tiles carousel. This layout includes a title slot, a main content slot, and a bottom slot, designed to work across a range of different screen sizes:</p>
<image><div style="text-align: center;"><img alt="moving image showing some examples of Tiles with the 3-slot tile layout" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRRRRhI0CHL_352Sk8OSVwmDoAzsJDJlgiL3_S_uJwEZ4xYWxPptcuPfA7h8Cfd1RR_cAcJ59OWLF6wKua2kfmlgh1TGLgOSXlsAjghm7cY1liuAZRgO-piJohIJ6P_TsrIvtERwY2HIaPKx8g-AUaK6fQAUK3sCZuY_Y23ePQOKIUG7YSvLw5qzmw9HE/s1600/wear-tile-.gif" width="100%" /></div><imgcaption><center><em>Some examples of Tiles with the 3-slot tile layout.</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Highlight user actions and key information with components optimized for round screen</span></h3>
<p>The new Wear OS Material 3 components automatically adapt to larger screen sizes, building on the <a href="https://developer.android.com/training/wearables/versions/5#whats-in-wear-os-5" target="_blank">Large Display support</a> added as part of Wear OS 5. Additionally, components such as Buttons and Lists support shape morphing on apps.</p>
<p>The following sections highlight some of the most exciting changes to these components.</p>
<h4><span style="font-size: medium;">Embrace the round screen with the Edge Hugging Button</span></h4>
<p>We introduced a new <a href="https://developer.android.com/reference/kotlin/androidx/wear/compose/material3/package-summary#EdgeButton%28kotlin.Function0,androidx.compose.ui.Modifier,androidx.wear.compose.material3.EdgeButtonSize,kotlin.Boolean,androidx.wear.compose.material3.ButtonColors,androidx.compose.foundation.BorderStroke,androidx.compose.foundation.interaction.MutableInteractionSource,kotlin.Function1%29" target="_blank">EdgeButton</a> for apps and tiles with an iconic design pattern that maximizes the space within the circular form factor, hugs the edge of the screen, and comes in 4 standard sizes.</p>
<image><div style="text-align: center;"><img alt="moving image of a sreenshot representing an EdgeButton in a scrollable screen." border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiW0jCRLST8uO-3C3V2HqIwSBcf2oUQpXqxooeNEbOjOacvR2UgpF5klvrm41qZCQQLSgZK5VDmR6R80BPzH2PNG2m8X_AprYvWpBl7sP2khu-Z1EfL4Hyrri5GTqbCrvGlxL1OKZ1cgJSbsZPLdVA2WoAGNLxi8TAyl3VqzrpptS1DwOdZSEJPRZAlWDM/s1600/tlc-in-situ-dark-wear-os.gif" width="100%" /></div><imgcaption><center><em>Screenshot representing an EdgeButton in a scrollable screen.</em></center></imgcaption></image><br />
<h4><span style="font-size: medium;">Fluid navigation through lists using new indicators</span></h4>
<p>The new <span style="color: #0d904f; font-family: courier;">TransformingLazyColumn</span> from the Foundation library makes expressive motion easy with motion that fluidly traces the edges of the display. Developers can customize the collapsing behavior of the list when scrolling to the top, bottom and both sides of the screen. For example, components like <span style="color: #0d904f; font-family: courier;">Cards</span> can scale down as they are closer to the top of the screen.</p>
<image><div style="text-align: center;"><img alt="moving image showing a TransformingLazyColumn with content that collapses and changes in size when approaching the edge of the screens.
." border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGFsDUmYpPgEN814QuLbZqBc4j7dFSbaTJNcJYhxp3bD5rBV0-kFWqkkQgW2_6brCyrk_fk_QJywS1WKaaq7wEjUYYMsLigi8pYThyphenhyphen88syG3I37MZa38sB-NNP9jUbn_Mlcah9bqW2ce75XeEGUEkO9E9ZhKL1Mj0KjtcN6NIsl5pi2N3zZ5ODPneNfa4/s1600/wear-notifications-transforminglazycolumn.gif" width="100%" /></div><imgcaption><center><em>TransformingLazyColumn allows content to collapse and change in size when approaching the edge of the screens</em></center></imgcaption></image><br />
<p>Material 3 Expressive also includes a <span style="color: #0d904f; font-family: courier;">ScrollIndicator</span> that features a new visual and motion design to make it easier for users to visualize their progress through a list. The <span style="color: #0d904f; font-family: courier;">ScrollIndicator</span> is displayed by default when you use a <span style="color: #0d904f; font-family: courier;">TransformingLazyColumn</span> and <span style="color: #0d904f; font-family: courier;">ScreenScaffold</span>.</p>
<image><div style="text-align: center;"><img alt="moving image showing side by side examples of ScrollIndicator in action" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht6H03efYzN0m1cnGcSqmlF7J5gTLAVqPYtPLpHtEnpeKPutByJfvl_6KGDofT7707W9HfHP_m8Kin8zRQhhcz8IWlVjxWHkyWmHnHntrvHTFPxgEtF1tnLrvp7Zxa0VJX-rePRZBdBIljO80ge0OWSIvEWf1Jc8sS_VFKNr-P6MbOUUYDy-nhD4C9yns/s1600/scroll-indicator-tlc-dark.gif" width="100%" /></div><imgcaption><center><em>ScrollIndicator</em></center></imgcaption></image><br />
<p>Lastly, you can now use segments with the new ProgressIndicator, which is now available as a full-screen component for apps and as a small-size component for both apps and tiles.</p>
<image><div style="text-align: center;"><img alt="moving image showing a full-screen ProgressIndicator" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiupBp03uUWzsdobgO8ldMnq4opP5qIG0c-TqR_24AQK63OzRgzjEVKJ1bxylo4X3L_3qX9QnarEdwydJqEX64Okxk9_cuqtCDWcDsunfCk8ytoozMdss_RYE-rGK-8c8GQOR-IFEuyg8rGeeb7TaBtnn4ZFloSiK6H751JZxrgm4wVjkNmpAOZmDW2oxE/s1600/progress-indicator-dark.gif" width="100%" /></div><imgcaption><center><em>Example of a full-screen ProgressIndicator</em></center></imgcaption></image><br />
<p>To learn more about the new features and see the full list of updates, see the release notes of the latest beta release of the <a href="https://developer.android.com/jetpack/androidx/releases/wear-compose#1.5.0-beta01" target="_blank">Wear Compose</a> and <a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-beta02" target="_blank">Wear Protolayout</a> libraries. Check out the migration guidance for <a href="https://developer.android.com/training/wearables/compose/migrate-to-material3" target="_blank">apps</a> and <a href="https://developer.android.com/training/wearables/tiles/versioning#migrate-tiles-expressive" target="_blank">tiles</a> on how to upgrade your existing apps, or try one of our <a href="https://developer.android.com/codelabs/compose-for-wear-os#0" target="_blank">codelabs</a> if you want to start developing using Material 3 Expressive design.</p>
<h2><span style="font-size: x-large;">Watch Faces</span></h2>
<p>With Wear OS 6 we are launching updates for watch face developers:</p>
<ul><ul>
<li>New options for customizing the appearance of your watch face using version 4 of Watch Face Format, such as animated state transitions from ambient to interactive and photo watch faces.</li>
</ul><ul>
<li>A new API for building watch face marketplaces.</li>
</ul></ul>
<p>Learn more about <a href="https://android-developers.googleblog.com/2025/05/whats-new-in-watch-faces.html" target="_blank">what's new in Watch Face updates</a>.</p>
<p>Look for more information about the general availability of Wear OS 6 later this year.</p>
<h2><span style="font-size: x-large;">Library updates</span></h2>
<h3><span style="font-size: large;">ProtoLayout</span></h3>
<p>Since our last major release, we've improved capabilities and the developer experience of the Tiles and ProtoLayout libraries to address feedback we received from developers. Some of these enhancements include:</p>
<ul><ul>
<li>New Kotlin-only <span style="font-family: courier;"><a href="https://developer.android.com/jetpack/androidx/releases/wear-protolayout#1.3.0-beta01" target="_blank">protolayout-material3</a></span> library adds support for enhanced visuals: Lottie animations (in addition to the <a href="https://developer.android.com/training/wearables/tiles/animations" target="_blank">existing animation capabilities</a>), more gradient types, and new arc line styles.</li>
<li>Developers can now write more idiomatic Kotlin, with APIs refined to better align with Jetpack Compose, including type-safe builders and an <a href="https://developer.android.com/reference/kotlin/androidx/wear/protolayout/modifiers/package-summary" target="_blank">improved modifier syntax</a>.</li>
</ul></ul>
<p>The example below shows how to display a layout with a text on a Tile using new enhancements:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: #408080; font-style: italic;">// returns a LayoutElement for use in onTileRequest()</span>
materialScope(context, requestParams.deviceConfiguration) {
primaryLayout(
mainSlot = {
text(
text = <span style="color: #ba2121;">"Hello, World!"</span>.layoutString,
typography = BODY_LARGE,
)
}
)
}
</pre></div><br />
<p>For more information, see the <a href="https://developer.android.com/training/wearables/tiles/versioning#migrate-tiles-expressive" target="_blank">migration instructions</a>.</p>
<h2><span style="font-size: x-large;">Credential Manager for Wear OS</span></h2>
<p>The <a href="https://developer.android.com/identity/sign-in/credential-manager" target="_blank">CredentialManager API</a> is now available on Wear OS, starting with Google Pixel Watch devices running Wear OS 5.1. It introduces passkeys to Wear OS with a platform-standard authentication UI that is consistent with the experience on mobile.</p>
<p>The Credential Manager Jetpack library provides developers with a unified API that simplifies and centralizes their authentication implementation. Developers with an existing implementation on another form factor can use the same CredentialManager code, and most of the same supporting code to fulfill their Wear OS authentication workflow.</p>
<p>Credential Manager provides integration points for passkeys, passwords, and Sign in With Google, while also allowing you to keep your other authentication solutions as backups.</p>
<p>Users will benefit from a consistent, platform-standard authentication UI; the introduction of passkeys and other passwordless authentication methods, and the ability to authenticate without their phone nearby.</p>
<p>Check out the <a href="https://developer.android.com/training/wearables/apps/auth-wear" target="_blank">Authentication on Wear OS guidance</a> to learn more.
</p><h2><span style="font-size: x-large;">Richer Wear Media Controls</span></h2>
<image><div style="text-align: center;"><img alt="New media controls for a Podcast" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKo9X_Vu7uo8N55iP45HKv01XAgereOgQ-cISMY6-pJc_Pj-6DholAzeCi-Jv2oUzQRHoFHJeMscyQTbH-amzlQhXnsW_oxLnd0x04YxqBdiUGaoeb2bwUai_OPGzMSqaBagyTKUKlJL6z_Dk1W3TQ4n0oaACzbMB_oPij-Kjvd6JrD79tpW67zzOd4Wg/s1600/rich-wear-media-controls-wear-os.png" width="100%" /></div><imgcaption><center><em>New media controls for a Podcast</em></center></imgcaption></image><br />
<p>Devices that run Wear OS 5.1 or later support enhanced media controls. Users who listen to media content on phones and watches can now benefit from the following new media control features on their watch:</p>
<ul><ul>
<li>They can fast-forward and rewind while listening to podcasts.</li>
<li>They can access the playlist and controls such as shuffle, like, and repeat through a new menu.</li>
</ul></ul>
<p>Developers with an existing implementation of <a href="https://developer.android.com/media/implement/surfaces/mobile#config-action-buttons" target="_blank">action buttons</a> and <a href="https://developer.android.com/media/media3/session/control-playback#modify-playlist" target="_blank">playlist</a> can benefit from this feature without additional effort. Check out how users will get more controls from your media app on a Google Pixel Watch device.</p>
<h2><span style="font-size: x-large;">Start building for Wear OS 6 now</span></h2>
<p>With these updates, there’s never been a better time to develop an app on Wear OS. These technical resources are a great place to learn more how to get started:</p>
<ul><ul>
<li><a href="https://developer.android.com/wear" target="_blank">Learn about designing and developing for Wear OS</a></li>
<li><a href="https://developer.android.com/codelabs/compose-for-wear-os#4" target="_blank">Take the Compose for Wear OS codelab</a></li>
<li><a href="https://github.com/android/wear-os-samples" target="_blank">Check out Wear OS samples on Github</a></li>
<li><a href="https://developer.android.com/training/wearables/versions/6/emulator" target="_blank">Get started with the latest Wear OS 6 emulator</a></li>
</ul></ul>
<p>Earlier this year, we expanded our smartwatch offerings with <a href="https://android-developers.googleblog.com/2025/01/build-kids-app-experiences-for-wear-os.html" target="_blank">Galaxy Watch for Kids</a>, a unique, phone-free experience designed specifically for children. This launch gives families a new way to stay connected, allowing children to explore Wear OS independently with a dedicated smartwatch. Consult our <a href="https://developer.android.com/training/wearables/kids/develop" target="_blank">developer guidance</a> to create a Wear OS app for kids.</p>
<p>We’re looking forward to seeing the experiences that you build on Wear OS!</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br />
<p><i><small><sup>1</sup> Actual battery performance varies.</small></i></p>
<p></p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-16929325109893769732025-05-20T11:01:00.000-07:002025-06-03T09:27:38.453-07:00What’s new in Watch Faces<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirC-HW9M-XO6PNfCB1lyyhuvOBFr1SiGMc2rxIIr7k2wd-E86U4_YBbRNfaXG2w2Tu8xgJ0xhrD_UXRK1uIRw8EyY-ldztQVSf4EnCJL2l3Rvj9lhVU9siNOzcpwLJmKDvjueoCya42LGR7_qig0fgf77n8q7Ck6ZCQ96ct0mk6O5Y5WgiFmG5Y6T68NA/s1600/new-watch-faces-google-io-meta.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirC-HW9M-XO6PNfCB1lyyhuvOBFr1SiGMc2rxIIr7k2wd-E86U4_YBbRNfaXG2w2Tu8xgJ0xhrD_UXRK1uIRw8EyY-ldztQVSf4EnCJL2l3Rvj9lhVU9siNOzcpwLJmKDvjueoCya42LGR7_qig0fgf77n8q7Ck6ZCQ96ct0mk6O5Y5WgiFmG5Y6T68NA/s1600/new-watch-faces-google-io-meta.png" style="display: none;" />
<em>Posted by Garan Jenkin – Developer Relations Engineer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi28VnjatnNxirnQXdiRTZmI54gtyzRQsvpwvRlU7FfVHiKEwJU13alqfiJMQAU5jJXrZUAv5jzs5wOYb7QYLpy_iekmqL-l74IAzZ0GtHhaVZ2zUhapb8jVGvWgEt5f7et1qteUIsO7Ou4vaQ0N9q7BfVtie30bGq2onZubnDNyeE28q2vRKuLhLH6Qrg/s1600/new-in-watch-faces-google-io-hero.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi28VnjatnNxirnQXdiRTZmI54gtyzRQsvpwvRlU7FfVHiKEwJU13alqfiJMQAU5jJXrZUAv5jzs5wOYb7QYLpy_iekmqL-l74IAzZ0GtHhaVZ2zUhapb8jVGvWgEt5f7et1qteUIsO7Ou4vaQ0N9q7BfVtie30bGq2onZubnDNyeE28q2vRKuLhLH6Qrg/s1600/new-in-watch-faces-google-io-hero.png" /></a>
<p>Wear OS has a thriving watch face ecosystem featuring a variety of designs that also aims to minimize battery impact. Developers have embraced the simplicity of creating watch faces using <a href="https://developer.android.com/training/wearables/wff" target="_blank">Watch Face Format</a> – in the last year, the number of published watch faces <b>using Watch Face Format has grown by over 180%<sup>*</sup></b>.</p>
<p>Today, we’re continuing our investment and announcing version 4 of the Watch Face Format, available as part of Wear OS 6. These updates allow developers to express even greater levels of creativity through the new features we’ve added. And we’re supporting marketplaces, which gives flexibility and control to developers and more choice for users.</p>
<p>In this blog post we'll cover key new features, check out the <a href="https://developer.android.com/training/wearables/wff/features#v3" target="_blank">documentation</a> for more details of changes introduced in recent versions.</p>
<h2><span style="font-size: x-large;">Supporting marketplaces with Watch Face Push</span></h2>
<p>We’re also announcing a completely new API, the <a href="https://developer.android.com/training/wearables/watch-face-push" target="_blank">Watch Face Push API</a>, aimed at developers who want to create their own watch face marketplaces.</p>
<p>Watch Face Push, available on devices running Wear OS 6 and above, works exclusively with watch faces that use the Watch Face Format watch faces.</p>
<p>We’ve partnered with well-known watch face developers – including <b><a href="https://www.facer.io/" target="_blank">Facer</a></b>, <b><a href="https://timeflik.com/" target="_blank">TIMEFLIK</a></b>, <b><a href="https://getwatchmaker.com/" target="_blank">WatchMaker</a></b>, <b><a href="https://pujie.io/" target="_blank">Pujie</a></b>, and <b><a href="https://www.recreative-watch.com/" target="_blank">Recreative</a></b> – in designing this new API. We’re excited that all of these developers will be bringing their unique watch face experiences to Wear OS 6 using Watch Face Push.</p>
<image><div style="text-align: center;"><img alt="Three mobile devices representing watch face marketplace apps for watches running Wear OS 6" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDyv-8Vl_8RJzaYVc-o3mfLUHi7xiutV4SEszm4wVbpGFMrZnE3zu_80k9tHrgbYfPfD-yDd5msNiDQ94a7IegsxAQlF1KWH2cbR64hfxXuZYmTBOEmsjIN2hcB3IKLm3EjyQK4lwO1zowTcq6NNm5pw1ElqyaeItQEPeVTjPstCscCPEamE3l3tTzVqI/s16000/watch-faces--wear-os-6-google-io.png" /></div><imgcaption><center><em>From left to right, <b><a href="https://www.facer.io/" target="_blank">Facer</a></b>, <b><a href="https://www.recreative-watch.com/" target="_blank">Recreative</a></b> and <b><a href="https://timeflik.com/" target="_blank">TIMEFLIK</a></b> watch faces have been developing marketplace apps to work with watches running Wear OS 6.
</em></center></imgcaption></image><br />
<p>Watch faces managed and deployed using Watch Face Push are all written using Watch Face Format. Developers publish these watch faces in the same way as publishing through Google Play, though there are some additional checks the developer must make which are described in the Watch Face Push guidance.</p>
<image><div style="text-align: center;"><img alt="A flow diagram demonstrating the flow of information from Cloud-based storage to the user's phone where the app is installed, then transferred to be installed on a wearable device using the Wear OS App via the Watch Face Push API" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-nC-EsEWiCVL3UdRHPm_dFpM7wZH6ObVUZeAxydYT0D2ZEGaXPV_A3vdHC_NIRTK8KBy-tphrX24Per1OANsQrGXFlfGFqcedZLdqslGmXtai_ALgXbTg7KLI72C1kl8we_DqVabvw89Nltq9_NoPUJpZpnGvTLpniv5shD5aDCjkrg1dDHYixW6xp8A/s16000/watch-face-api-architecture-wear-os-6-google-io.png" /></div></image><br />
<p>The Watch Face Push API covers only the watch part of this typical marketplace system diagram - as the app developer, you have control and responsibility for the phone app and cloud components, as well as for building the Wear OS app using Watch Face Push. You’re also in control of the phone-watch communications, for which we recommend using the <a href="https://developer.android.com/training/wearables/data/messages" target="_blank">Data Layer APIs</a>.</p>
<h2><span style="font-size: x-large;">Adding Watch Face Push to your project</span></h2>
<p>To start using Watch Face Push on Wear OS 6, include the following dependency in your Wear OS app:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: #408080; font-style: italic;">// Ensure latest version is used by checking the repository</span>
implementation(<span style="color: #ba2121;">"androidx.wear.watchface:watchface-push:1.3.0-alpha07"</span>)
</pre></div><br />
<p>Declare the necessary permission in your <span style="color: #0d904f; font-family: courier;">AndroidManifest.xml:</span></p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><uses-permission android:name=<span style="color: #ba2121;">"com.google.wear.permission.PUSH_WATCH_FACES"</span> />
</pre></div><br />
<p>Obtain a Watch Face Push client:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">val</span> manager = WatchFacePushManagerFactory.createWatchFacePushManager(context)
</pre></div><br />
<p>You’re now ready to start using the Watch Face Push API, for example to list the watch faces you have already installed, or add a new watch face:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: #408080; font-style: italic;">// List existing watch faces, installed by this app</span>
<span style="color: green; font-weight: bold;">val</span> listResponse = manager.listWatchFaces()
<span style="color: #408080; font-style: italic;">// Add a watch face</span>
manager.addWatchFace(watchFaceFileDescriptor, validationToken)
</pre></div><br />
<h2><span style="font-size: x-large;">Understanding Watch Face Push</span></h2>
<p>While the basics of the Watch Face Push API are easy to understand and access through the <span style="color: #0d904f; font-family: courier;">WatchFacePushManager</span> interface, it’s important to consider several other factors when working with the API in practice to build an effective marketplace app, including:</p>
<ul><ul>
<li><b>How to build watch faces for use with Watch Face Push</b> - Watch faces deployed using Watch Face Push require an additional validation step to be performed by the developer. Learn more about <a href="https://developer.android.com/training/wearables/watch-face-push" target="_blank">how to build watch faces for use with Watch Face Push, and to integrate Watch Face Push into your application</a>.</li></ul><ul>
<li><b>Watch Face Slots</b> - Each Watch Face Push-based application is able to install a limited number of watch faces at any given time, represented by a Slot. <a href="https://developer.android.com/training/wearables/watch-face-push#slots" target="_blank">Learn more about </a><a href="https://developer.android.com/training/wearables/watch-face-push#default-watch-face" target="_blank">how to work with and manage slots</a>.</li></ul><ul>
<li><b>Default watch faces</b> - The API allows for a default watch face to be installed when the app is installed. Learn more about <a href="https://developer.android.com/training/wearables/watch-face-push#default-watch-face" target="_blank">how to build and include this default watch face</a>.</li></ul><ul>
<li><b>Setting active watch faces</b> - Through an additional permission, the app can set the active watch face. Learn about <a href="https://developer.android.com/training/wearables/watch-face-push#set-active-watchface" target="_blank">how to integrate this feature</a>, as well as how to handle the different permission scenarios.</li>
</ul></ul>
<p>To learn more about using Watch Face Push, see the <a href="https://developer.android.com/training/wearables/watch-face-push" target="_blank">guidance</a> and <a href="https://developer.android.com/reference/kotlin/androidx/wear/watchface/push/package-summary" target="_blank">reference</a> documentation.</p>
<h2><span style="font-size: x-large;">Updates to Watch Face Format</span></h2>
<h3><span style="font-size: large;">Photos</span></h3>
<i>Available from Watch Face Format v4</i>
<p>The new <span style="color: #0d904f; font-family: courier;">Photos</span> element allows the watch face to contain user-selectable photos. The element supports both individual photos and a gallery of photos. For a gallery of photos, developers can choose whether the photos advance automatically or when the user taps the watch face.</p>
<image><div style="text-align: center;"><img alt="a wearable device and small screen mobile device side by side demonstrating how a user may configure photos for the watch face through the Companion app on the mobile device" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilder6xB2opL02d5KbNW3AdFtHTqOtj31HGLSMHq7w86SZxR2q9KFCxstnXRhKlGZbjPuY_lUh3LTQD-EevrVx007pIo-skWBqHdFBgwGRZl7L1_LJwxBxQ5bAOxqAOehBMXeseM-2nvsXzFLua0aTy1HuyXAXRSnwB3rLwxjX-RronN2P9Ms8qUagmis/s1600/android-new-in-watch-faces-google-io-2025.png" /></div><imgcaption><center><em>Configuring photos through the watch Companion app</em></center></imgcaption></image><br />
<p>The user is able to select the photos of their choice through the companion app, making this a great way to include true personalization in your watch face. To use this feature, first add the necessary configuration:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><UserConfigurations>
<PhotosConfiguration id=<span style="color: #ba2121;">"myPhoto"</span> configType=<span style="color: #ba2121;">"SINGLE"</span>/>
</UserConfigurations>
</pre></div><br />
<p>Then use the <span style="color: #0d904f; font-family: courier;">Photos</span> element within any <span style="color: #0d904f; font-family: courier;">PartImage</span>, in the same way as you would for an <span style="color: #0d904f; font-family: courier;">Image element</span>:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><PartImage ...>
<Photos source=<span style="color: #ba2121;">"[CONFIGURATION.myPhoto]"</span>
defaultImageResource=<span style="color: #ba2121;">"placeholder_photo"</span>/>
</PartImage>
</pre></div><br />
<p>For details on how to support multiple photos, and how to configure the different change behaviors, refer to the Photos section of the <a href="https://developer.android.com/training/wearables/wff/personalization/photos" target="_blank">guidance</a> and <a href="https://developer.android.com/reference/wear-os/wff/group/part/image/photos" target="_blank">reference</a>, as well as the <a href="https://github.com/android/wear-os-samples/" target="_blank">GitHub samples</a>.</p>
<h2><span style="font-size: x-large;">Transitions</span></h2>
<i>Available from Watch Face Format v4</i>
<p>Watch Face Format now supports transitions when exiting and entering ambient mode.</p>
<image><div style="text-align: center;"><img alt="moving image demonstrating an overshoot effect adjusting the time on a watch face to reveal the seconds digit" border="0" height="200" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijb2JauAR197bVq1WgtiCZMFJfYsD0W41h5c0JruKUTCwlERsk7hTECkaMENR0AglGj2m7NiwrfDpfR12li_UC1eF57Wg-wfaFgh393YPdJIYtAM0gfu8oApRpjKRAxlJ6eEg6KkMNFMhqFPC5QmCnZqGws2lCVTAGzIRz3AKmE22YEdelXkcL1Tru2KU/w200-h200/overshoot-effect-watch-faces-wear-os-google-io.gif" width="200" /></div><imgcaption><center><em>State transition animation: Example using an overshoot effect in revealing the seconds digits</em></center></imgcaption></image><br />
<p>This is achieved through the existing <span style="color: #0d904f; font-family: courier;">Variant</span> tag. For example, the hours and minutes in the above watch face are animated as follows:</p>
<!-- Kotlin --><div style="background: #f8f8f8; overflow:auto;width:auto;border:0;"><pre style="margin: 0; line-height: 125%"><DigitalClock ...>
<Variant mode=<span style="color: #BA2121">"AMBIENT"</span> target=<span style="color: #BA2121">"x"</span> value=<span style="color: #BA2121">"100"</span> interpolation=<span style="color: #BA2121">"OVERSHOOT"</span> />
<!-- Rest of <span style="color: #BA2121">"hh:mm"</span> clock definition here -->
</DigitalClock>
</pre></div>
<p>By default, the animation takes the full extent of allowed time for the transition. The new <span style="color: #0d904f; font-family: courier;">interpolation</span> attribute controls the animation effect - in this case the use of <span style="color: #0d904f; font-family: courier;">OVERSHOOT</span> adds a playful experience.</p>
<p>The seconds are implemented in a separate <span style="color: #0d904f; font-family: courier;">DigitalClock</span> element, which shows the use of the new <span style="color: #0d904f; font-family: courier;">duration</span> attribute:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><DigitalClock ...>
<Variant mode=<span style="color: #ba2121;">"AMBIENT"</span> target=<span style="color: #ba2121;">"alpha"</span> value=<span style="color: #ba2121;">"0"</span> duration=<span style="color: #ba2121;">"0.5"</span>/>
<!-- Rest of <span style="color: #ba2121;">"ss"</span> clock definition here -->
</DigitalClock>
</pre></div><br />
<p>The <span style="color: #0d904f; font-family: courier;">duration</span> attribute takes a value between <span style="color: #0d904f; font-family: courier;">0.0</span> and <span style="color: #0d904f; font-family: courier;">1.0</span>, with <span style="color: #0d904f; font-family: courier;">1.0</span> representing the full extent of the allowed time. In this example, by using a value of <span style="color: #0d904f; font-family: courier;">0.5</span>, the seconds animation is quicker - taking half the allowed time, in comparison to the hours and minutes, which take the entire transition period.</p>
<p>For more details on using transitions, see the <a href="https://developer.android.com/training/wearables/wff/transform" target="_blank">guidance documentation</a>, as well as the reference documentation for <span style="font-family: courier;">Variant</span>.</p>
<h2><span style="font-size: x-large;">Color Transforms</span></h2>
<i>Available from Watch Face Format v4</i>
<p>We’ve extended the usefulness of the <span style="color: #0d904f; font-family: courier;">Transform</span> element by allowing <span style="color: #0d904f; font-family: courier;">color</span> to be transformed on the majority of elements where it is an attribute, and also allowing <span style="color: #0d904f; font-family: courier;">tintColor</span> to be transformed on <span style="color: #0d904f; font-family: courier;">Group</span> and <span style="color: #0d904f; font-family: courier;">Part<sup>*</sup></span> elements such as <span style="color: #0d904f; font-family: courier;">PartDraw</span> and <span style="color: #0d904f; font-family: courier;">PartText</span>.</p>
<p>The main exceptions to this addition are the clock elements, <span style="color: #0d904f; font-family: courier;">DigitalClock</span> and <span style="color: #0d904f; font-family: courier;">AnalogClock</span>, and also <span style="color: #0d904f; font-family: courier;">ComplicationSlot</span>, which do not currently support <span style="color: #0d904f; font-family: courier;">Transform</span>.</p>
<p>In addition to extending the list of transformable attributes to include colors, we’ve also added a handful of useful functions for manipulating color:</p>
<ul><ul>
<li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">extractColorFromColors(colors, interpolate, value)</a></li>
<li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">extractColorFromWeightedColors(colors, weights, interpolate, value)</a></li>
<li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">colorArgb(alpha, red, green, blue)</a></li>
<li><a href="https://developer.android.com/reference/wear-os/wff/common/attributes/arithmetic-expression#functions" target="_blank">colorRgb(red, green, blue)</a></li>
</ul></ul>
<p>To see these in action, let’s consider an example.</p>
<p>The Weather data source provides the current UV index through <span style="color: #0d904f; font-family: courier;">[WEATHER.UV_INDEX]</span>. When representing the UV index, these values are <a href="https://en.wikipedia.org/wiki/Ultraviolet_index#Index_usage" target="_blank">typically also assigned a color</a>:</p>
<image><div style="text-align: center;"><img alt="moving image demonstrating an overshoot effect adjusting the time on a watch face to reveal the seconds digit" border="0" height="133" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrs-GtIIjtk4sAcUWts5EDvOAeUjL61GYn9_fzOWfytLc4Sgwp5E8_24u_jEycjAMKWmG0LDBJoxWhQ7goco_Qz6bF48X11jeF-8tR86on-XATSqDSchseVMNUAPY1l7xIQlQ1tX-q6Eo0D2Rhc4wJcxBWw-WWoCxm5PHZZVO34_8njX95JRSXvNM0Bzc/w640-h133/uv-index-values-wear-os-6-google-io.png" width="640" /></div></image><br />
<p>We want to represent this information as an <span style="color: #0d904f; font-family: courier;">Arc</span>, not only showing the value, but also using the appropriate color. We can achieve this as follows:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><Arc centerX=<span style="color: #ba2121;">"0"</span> centerY=<span style="color: #ba2121;">"0"</span> height=<span style="color: #ba2121;">"420"</span> width=<span style="color: #ba2121;">"420"</span>
startAngle=<span style="color: #ba2121;">"165"</span> endAngle=<span style="color: #ba2121;">"165"</span> direction=<span style="color: #ba2121;">"COUNTER_CLOCKWISE"</span>>
<Transform target=<span style="color: #ba2121;">"endAngle"</span>
value=<span style="color: #ba2121;">"165 - 40 * (clamp(11, 0.0, 11.0) / 11.0)"</span> />
<Stroke thickness=<span style="color: #ba2121;">"20"</span> color=<span style="color: #ba2121;">"#ffffff"</span> cap=<span style="color: #ba2121;">"ROUND"</span>>
<Transform target=<span style="color: #ba2121;">"color"</span>
value=<span style="color: #ba2121;">"extractColorFromWeightedColors(#97d700 #FCE300 #ff8200 #f65058 #9461c9, 3 3 2 3 1, false, clamp([WEATHER.UV_INDEX] + 0.5, 0.0, 12.0) / 12.0)"</span> />
</Stroke>
</Arc>
</pre></div><br />
<p>Let’s break this down:</p>
<ul><ul>
<li>The first <span style="color: #0d904f; font-family: courier;">Transform</span> restricts the UV index to the range 0.0 to 11.0 and adjusts the sweep of the <span style="color: #0d904f; font-family: courier;">Arc</span> according to that value.</li></ul><ul>
<li>The second <span style="color: #0d904f; font-family: courier;">Transform</span> uses the new <span style="color: #0d904f; font-family: courier;">extractColorFromWeightedColors</span> function.</li>
<ul><ul>
<li>The <b>first</b> argument is our list of colors</li></ul><ul>
<li>The <b>second</b> argument is a list of weights - you can see from the chart above that green covers 3 values, whereas orange only covers 2, so we use weights to represent this.</li></ul><ul>
<li>The <b>third</b> argument is whether or not to interpolate the color values. In this case we want to stick strictly to the color convention for UV index, so this is false.</li></ul><ul>
<li>Finally in the <b>fourth</b> argument we coerce the UV value into the range <span style="color: #0d904f; font-family: courier;">0.0</span> to <span style="color: #0d904f; font-family: courier;">1.0</span>, which is used as an index into our weighted colors.</li>
</ul></ul></ul></ul>
<p>The result looks like this:</p>
<image><div style="text-align: center;"><img alt="side by side quadrants of watch face examples showing using the new color functions in applying color transforms to a Stroke in an Arc" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHABmwTjM-OTP9l1KZxgmHrXVkgu5lCkaJ_fUhgM6vso6ZERq2j_p24x_WVxDAyx7nBGPmGrRatZqwgZEeJgLxBF42SDxUSEyPbYtezXMablU9US-dEO4_oiAA7RjR9ZD_m1NZPxwCRytT4WRXbwGG5Iti2yP99b5gzXu2eEzgIpiKVfqWkYIfsfOyAUk/s16000/color-function-transformation-stroke-arc-watch-face-wear-os.png" /></div><imgcaption><center><em>Using the new color functions in applying color transforms to a <span style="color: #0d904f; font-family: courier;">Stroke</span> in an <span style="color: #0d904f; font-family: courier;">Arc.</span></em></center></imgcaption></image><br />
<p>As well as being able to provide raw colors and weights to these functions, they can also be used with values from complications, such as HR, temperature or steps goal. For example, to use the color range specified in a goal complication:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><Transform target=<span style="color: #ba2121;">"color"</span>
value=<span style="color: #ba2121;">"extractColorFromColors(</span>
<span style="color: #7d9029;"> [COMPLICATION.GOAL_PROGRESS_COLORS]</span>,
<span style="color: #7d9029;"> [COMPLICATION.GOAL_PROGRESS_COLOR_INTERPOLATE]</span>,
<span style="color: #7d9029;"> [COMPLICATION.GOAL_PROGRESS_VALUE]</span> /
<span style="color: #7d9029;"> [COMPLICATION.GOAL_PROGRESS_TARGET_VALUE]</span>
)<span style="color: #ba2121;">"/></span>
</pre></div><br />
<h2><span style="font-size: x-large;">Introducing the <span style="color: #0d904f; font-family: courier;">Reference</span> element</span></h2>
<i>Available from Watch Face Format v4</i>
<p>The new <span style="color: #0d904f; font-family: courier;">Reference</span> element allows you to refer to any transformable attribute from one part of your watch face scene in other parts of the scene tree.</p>
<p>In our UV index example above, we’d also like the text labels to use the same color scheme.</p>
<p>We could perform the same color transform calculation as on our <span style="color: #0d904f; font-family: courier;">Arc</span>, using <span style="color: #0d904f; font-family: courier;">[WEATHER.UV_INDEX]</span>, but this is duplicative work which could lead to inconsistencies, for example if we change the exact color hues in one place but not the other.</p>
<p>Returning to the <span style="color: #0d904f; font-family: courier;">Arc</span> definition, let’s create a <span style="color: #0d904f; font-family: courier;">Reference</span> to the color:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><Arc centerX=<span style="color: #ba2121;">"0"</span> centerY=<span style="color: #ba2121;">"0"</span> height=<span style="color: #ba2121;">"420"</span> width=<span style="color: #ba2121;">"420"</span>
startAngle=<span style="color: #ba2121;">"165"</span> endAngle=<span style="color: #ba2121;">"165"</span> direction=<span style="color: #ba2121;">"COUNTER_CLOCKWISE"</span>>
<Transform target=<span style="color: #ba2121;">"endAngle"</span>
value=<span style="color: #ba2121;">"165 - 40 * (clamp(11, 0.0, 11.0) / 11.0)"</span> />
<Stroke thickness=<span style="color: #ba2121;">"20"</span> color=<span style="color: #ba2121;">"#ffffff"</span> cap=<span style="color: #ba2121;">"ROUND"</span>>
<Reference source=<span style="color: #ba2121;">"color"</span> name=<span style="color: #ba2121;">"uv_color"</span> defaultValue=<span style="color: #ba2121;">"#ffffff"</span> />
<Transform target=<span style="color: #ba2121;">"color"</span>
value=<span style="color: #ba2121;">"extractColorFromWeightedColors(#97d700 #FCE300 #ff8200 #f65058 #9461c9, 3 3 2 3 1, false, clamp([WEATHER.UV_INDEX] + 0.5, 0.0, 12.0) / 12.0)"</span> />
</Stroke>
</Arc>
</pre></div><br />
<p>The color of the <span style="color: #0d904f; font-family: courier;">Arc</span> is calculated from the relatively complex <span style="color: #0d904f; font-family: courier;">extractColorFromWeightedColors</span> function. To avoid repeating this elsewhere in our watch face, we have added a <span style="color: #0d904f; font-family: courier;">Reference</span> element, which takes as its source the <span style="color: #0d904f; font-family: courier;">Stroke</span> color.</p>
<p>Let’s now look at how we can consume this value in a <span style="color: #0d904f; font-family: courier;">PartText</span> elsewhere in the watch face. We gave the <span style="color: #0d904f; font-family: courier;">Reference</span> the name <span style="color: #0d904f; font-family: courier;">uv_color</span>, so we can simply refer to this in any expression:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><PartText x=<span style="color: #ba2121;">"0"</span> y=<span style="color: #ba2121;">"225"</span> width=<span style="color: #ba2121;">"450"</span> height=<span style="color: #ba2121;">"225"</span>>
<TextCircular centerX=<span style="color: #ba2121;">"225"</span> centerY=<span style="color: #ba2121;">"0"</span> width=<span style="color: #ba2121;">"420"</span> height=<span style="color: #ba2121;">"420"</span>
startAngle=<span style="color: #ba2121;">"120"</span> endAngle=<span style="color: #ba2121;">"90"</span>
align=<span style="color: #ba2121;">"START"</span> direction=<span style="color: #ba2121;">"COUNTER_CLOCKWISE"</span>>
<Font family=<span style="color: #ba2121;">"SYNC_TO_DEVICE"</span> size=<span style="color: #ba2121;">"24"</span>>
<Transform target=<span style="color: #ba2121;">"color"</span> value=<span style="color: #ba2121;">"[REFERENCE.uv_color]"</span> />
<Template>%d<Parameter expression=<span style="color: #ba2121;">"[WEATHER.UV_INDEX]"</span> /></Template>
</Font>
</TextCircular>
</PartText>
<!-- Similar PartText here <span style="color: green; font-weight: bold;">for</span> the <span style="color: #ba2121;">"UV:"</span> label -->
</pre></div>
<p>As a result, the color of the Arc and the UV numeric value are now coordinated:</p>
<image><div style="text-align: center;"><img alt="side by side quadrants of watch face examples showing Coordinating colors across elements using the Reference element" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsUlGBDxKyi4nJYQBbx2jb4lIR8DmxABazY7D_FkMKvbvNBJArGM8NY2d9iz489F0IX5kP077pOZrP4t1M2mtt5HYS3AOGksQ-UWxwUH3qVTNDo09iiS4JRl3xV35rHxThXGbC9dCBXitFlXkudX8wOHnCNO1PPvPOjHMxchBIEiFjZbQOK4R1FHwAQpM/s1600/reference-element-watch-faces-wear-os-google-io.png" /></div><imgcaption><center><em>Coordinating colors across elements using the <span style="color: #0d904f; font-family: courier;">Reference</span> element</em></center></imgcaption></image><br />
<p>For more details on how to use the <span style="font-family: courier;"><a href="https://developer.android.com/reference/wear-os/wff/common/reference" target="_blank">Reference</a></span> element, refer to the <span style="font-family: courier;"><a href="https://developer.android.com/reference/wear-os/wff/common/reference/reference" target="_blank">Reference</a></span> guidance.</p>
<h2><span style="font-size: x-large;">Text autosizing</span></h2>
<i>Available from Watch Face Format v3</i>
<p>Sometimes the exact length of the text to be shown on the watch face can vary, and as a developer you want to balance being able to display text that is both legible, but also complete.</p>
<p>Auto-sizing text can help solve this problem, and can be enabled through the <span style="color: #0d904f; font-family: courier;">isAutoSize</span> attribute introduced to the <span style="color: #0d904f; font-family: courier;">Text</span> element:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><Text align=<span style="color: #ba2121;">"CENTER"</span> isAutoSize=<span style="color: #ba2121;">"true"</span>>
</pre></div><br />
<p>Having set this attribute, text will then automatically fit the available space, starting at the maximum size specified in your <span style="color: #0d904f; font-family: courier;">Font</span> element, and with a minimum size of 12.</p>
<p>As an example, step count could range from tens or hundreds through to many thousands, and the new <span style="color: #0d904f; font-family: courier;">isAutoSize</span> attribute enables best use of the available space for every possible value:</p>
<image><div style="text-align: center;"><img alt="side by side examples of text sizing adjustments on watch face using isAutosize" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjACl9z-Sc8H9w2dRpYiPlIwrpNQU5BVaqkE1JoqHqFRVkyX69J8W8g0weZWCt-bhREsOVLN4PXGjtIiLW4IV2aCEuMcqf62MYB_PUh7_wZs8vqG1PtKA80dt0jWjzgn7AL_d3hePpDBjqHj7hyphenhyphenI3SexgPqGKFq7PET7XXFxUuS8VxRkPRYNNeydBdGPnM/s1600/isAutosize-wear-os-watch-faces-google-io.png" /></div><imgcaption><center><em>Making the best use of the available text space through <span style="color: #0d904f; font-family: courier;">isAutoSize</span></em></center></imgcaption></image><br />
<p>For more details on <span style="color: #0d904f; font-family: courier;">isAutoSize</span>, see the <a href="https://developer.android.com/reference/wear-os/wff/group/part/text/text?version=4" target="_blank"><span style="font-family: courier;">Text</span> reference</a>.</p>
<h2><span style="font-size: x-large;">Android Studio support</span></h2>
<p>For developers working in Android Studio, we’ve added support to make working with Watch Face Format easier, including:</p>
<ul><ul>
<li>Run configuration support</li>
<li>Auto-complete and resource reference</li>
<li>Lint checking</li>
</ul></ul>
<p>This is available from <a href="https://developer.android.com/studio/preview" target="_blank">Android Studio Canary version 2025.1.1 Canary 10</a>.</p>
<h2><span style="font-size: x-large;">Learn More</span></h2>
<p>To learn more about building watch faces, please take a look at the following resources:</p>
<ul><ul>
<li><a href="https://developer.android.com/training/wearables/wff" target="_blank">Watch Face Format guidance</a></li>
<li><a href="https://developer.android.com/reference/wear-os/wff/watch-face" target="_blank">Watch Face Format reference</a></li>
</ul></ul>
<p>We’ve also recently launched a <a href="https://developer.android.com/codelabs/watch-face-format" target="_blank">codelab for Watch Face Format</a> and have <a href="https://github.com/android/wear-os-samples/tree/main/WatchFaceFormat" target="_blank">updated samples</a> on GitHub to showcase new features. The <a href="https://issuetracker.google.com/issues/new?component=1112371" target="_blank">issue tracker</a> is available for providing feedback.</p>
<p>We're excited to see the watch face experiences that you create and share!</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br />
<i><small><sup>*</sup> Google Play data for period 2024-03-24 to 2025-03-23</small></i>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-76590489299186064112025-05-20T11:00:00.000-07:002025-06-20T12:54:56.242-07:00What's New in Jetpack Compose<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s1600/new-in-jetpack-compose-google-io-meta.gif" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s1600/new-in-jetpack-compose-google-io-meta.gif" style="display: none;" />
<em>Posted by Nick Butcher – Product Manager</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgRGZWNX77zS6mCr3oYpd37jBJerIQMhszxrDGPGVMbu5G0ov0dXJ1isuxfmPScPX47mrEGcrfTfTjVEWQxrEi74fWPmbzesAdhosiJWw8A89PByBE7XkGVoUdbx7RGuScw7ArTfAVGyrKYEsmoZuhwJ-wSzFyqT1YIG1vGiSTgOSbWJtxoCel5V9fxY/s1600/new-in-jetpack-compose.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMgRGZWNX77zS6mCr3oYpd37jBJerIQMhszxrDGPGVMbu5G0ov0dXJ1isuxfmPScPX47mrEGcrfTfTjVEWQxrEi74fWPmbzesAdhosiJWw8A89PByBE7XkGVoUdbx7RGuScw7ArTfAVGyrKYEsmoZuhwJ-wSzFyqT1YIG1vGiSTgOSbWJtxoCel5V9fxY/s1600/new-in-jetpack-compose.png" /></a>
<p>At Google I/O 2025, we announced a host of features, performance, stability, libraries, and tools updates for <a href="https://developer.android.com/compose" target="_blank">Jetpack Compose</a>, our recommended Android UI toolkit. With Compose you can build excellent apps that work across devices. Compose has matured a lot since it was first announced (at Google I/O 2019!) and we're now seeing <a href="https://developer.android.com/compose#apps-built-with-compose" target="_blank">60% of the top 1,000 apps in the Play Store</a> such as MAX and Google Drive use and love it.</p>
<h2><span style="font-size: x-large;">New Features</span></h2>
<p>Since I/O last year, Compose Bill of Materials (BOM) version 2025.05.01 adds new features such as:</p>
<ul><ul>
<li><b>Autofill support</b> that lets users automatically insert previously entered personal information into text fields.
</li><li><b>Auto-sizing text</b> to smoothly adapt text size to a parent container size.
</li><li><b>Visibility tracking </b>for when you need high-performance information on a composable's position in its root container, screen, or window.
</li><li><b>Animate bounds modifier</b> for beautiful automatic animations of a Composable's position and size within a LookaheadScope.
</li><li><b>Accessibility checks in tests</b> that let you build a more accessible app UI through automated a11y testing.
</li></ul></ul><br />
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">LookaheadScope {
Box(
Modifier
.animateBounds(<span style="color: green; font-weight: bold;">this</span>@LookaheadScope)
.width(<span style="color: green; font-weight: bold;">if</span>(inRow) <span style="color: #666666;">100.d</span>p <span style="color: green; font-weight: bold;">else</span> <span style="color: #666666;">150.d</span>p)
.background(..)
.border(..)
)
}
</pre></div>
<image><div style="text-align: center;"><img alt="moving image of animate bounds modifier in action" border="0" height="324" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisG1SCzZ-1PSz3bcDEA7QXvQxwjKbfQEk1s1NbsqZMdDspyyBb1ptzitPMljKLcOatObogx5lPrIcbGDUkVocj299rFCrdE-J99kMraCwr1bM6AWPL3CXl8HxOJK9X-RdV0bT_ZDsBggHP5bt3PoOrod3fUzEEabpKmI-i-oJjf_0S8wyQ-qJDjmhIumE/w400-h324/animate-bounds-modifier.gif" width="400" /></div></image><br />
<p>For more details on these features, read <a href="https://android-developers.googleblog.com/2025/04/whats-new-in-jetpack-compose-april-25.html" target="_blank">What’s new in the Jetpack Compose April ’25 release</a> and check out these talks from Google I/O:</p>
<ul><ul>
<li><b>Mastering text input in Compose</b></li></ul></ul><br/>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="07Y9CPuxgvQ" width="100%" height="413" src="https://www.youtube.com/embed/07Y9CPuxgvQ"></iframe>
<div><br/></div>
<ul><ul>
<li><b>Build more accessible UIs with Jetpack Compose</b></li></ul></ul><br/>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="80qkStdDWXQ" width="100%" height="413" src="https://www.youtube.com/embed/80qkStdDWXQ"></iframe><br/>
<p>If you’re looking to try out new Compose functionality, the <a href="https://developer.android.com/develop/ui/compose/bom#what_if_i_want_to_try_out_alpha_or_beta_releases_of_compose_libraries" target="_blank">alpha BOM</a> offers new features that we're working on including:</p>
<ul><ul>
<li>Pausable Composition (see below)</li>
<li>Updates to LazyLayout prefetch</li>
<li>Context Menus</li>
<li>New modifiers: <span style="color: #0d904f; font-family: courier;">onFirstVisible</span>, <span style="color: #0d904f; font-family: courier;">onVisbilityChanged</span>, <span style="color: #0d904f; font-family: courier;">contentType</span></li>
<li>New Lint checks for frequently changing values and elements that should be remembered in composition</li>
</ul></ul>
<p>Please try out the alpha features and <a href="https://issuetracker.google.com/issues/new?component=612128" target="_blank">provide feedback</a> to help shape the future of Compose.</p>
<h2><span style="font-size: x-large;">Material Expressive</span></h2>
<p>At Google I/O, we unveiled Material Expressive, Material Design’s latest evolution that helps you make your products even more engaging and easier to use. It's a comprehensive addition of new components, styles, motion and customization options that help you to build beautiful rich UIs. The Material3 library in the latest <a href="https://developer.android.com/develop/ui/compose/bom#what_if_i_want_to_try_out_alpha_or_beta_releases_of_compose_libraries" target="_blank">alpha BOM</a> contains many of the new expressive components for you to try out.</p>
<image><div style="text-align: center;"><img alt="moving image of material expressive design example" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9fkaR659shSkWXUVdlrR6N6JnD_3c1cFOV-x4wkpSgF01807L3vICUfsA45R-A-B1r2AtHdwkUnC4XKpvD5G2p-FjTsF177qBpFyhBJtQ0Z7cZiPdxRZkeKZv00N_pJL3Tpom6Sdx49r4FZW79uc07ov3twERtgqPiYaBLg2AWI3sONZE4pCdPqIzSv0/s16000/new-in-jetpack-compose-google-io-meta.gif" /></div></image><br />
<p>Learn more to <a href="https://m3.material.io/blog/building-with-m3-expressive" target="_blank">start building with Material Expressive</a>.</p>
<h2><span style="font-size: x-large;">Adaptive layouts library</span></h2>
<p>Developing adaptive apps across form factors including phones, foldables, tablets, desktop, cars and Android XR is now easier with the latest enhancements to the Compose adaptive layouts library. The stable <a href="https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#1.1.0" target="_blank">1.1 release</a> adds support for predictive back gestures for smoother transitions and pane expansion for more flexible two pane layouts on larger screens. Furthermore, the <a href="https://developer.android.com/jetpack/androidx/releases/compose-material3-adaptive#compose_material3_adaptive_version_12_2" target="_blank">1.2 (alpha) release</a> adds more flexibility for how panes are displayed, adding strategies for reflowing and levitating.</p>
<image><div style="text-align: center;"><img alt="moving image of compose adaptive layouts updates in the Google Play app" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9ir7eGSz036zy966UuT7AeqwENw5jbJpvzJKgZvEvg-55RlZHecPCUvF2QJifyt0WwE9wjj95MYp0Y6uR7ZjfKkmpGHlaZ09Qx-t7OCSqKkqWiaDeQkToabXWqe3jJhSaehclZiNPkWejK1jG0UD8rJqC-3PB5EIs0EyIX98iDijA9r4G4Pvlj4Vm50w/s16000/compose-adaptive-layouts-updates-google-play-app.gif" /></div><imgcaption><center><em>Compose Adaptive Layouts Updates in the Google Play app</em></center></imgcaption></image><br />
<p>Learn more about <a href="https://android-developers.googleblog.com/2025/05/adaptiveapps-io25.html" target="_blank">building adaptive android apps with Compose</a>.</p>
<h2><span style="font-size: x-large;">Performance</span></h2>
<p>With each release of Jetpack Compose, we continue to prioritize performance improvements. The latest stable release includes significant rewrites and improvements to multiple sub-systems including semantics, focus and text optimizations. Best of all these are available to you simply by <b>upgrading your Compose dependency;</b> no code changes required.</p>
<image><div style="text-align: center;"><img alt="bar chart of internal benchmarks for performance run on a Pixel 3a device from January to May 2023 measured by jank rate" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTlzZ4wBTQj8f_ZZpQycILJ9AiFywOWWzEVagbAHx2Ko7CRUcf0rWK8YsOXJqBxrDr2jLM7L7Fzcf16tj5NGTDMb8Vs5by9LW636hcGbqI78shnFSolIu4Qug5wpu_Ib8MZ5Eyj5g9MFfGH9wlmn7pPVdzaFjlVWCwBj7n0H4NI9jo68KEyWv9d6vr724/s1600/performance-jank-rate-adaptive-compose-google-io.png" /></div><imgcaption><center><em>Internal benchmark, run on a Pixel 3a</em></center></imgcaption></image><br />
<p>We continue to work on further performance improvements, notable changes in the latest alpha BOM include:</p>
<ul><ul>
<li><b>Pausable Composition</b> allows compositions to be paused, and their work split up over several frames.</li>
<li><b>Background text prefetch</b> enables text layout caches to be pre-warmed on a background thread, enabling faster text layout.</li>
<li><b>LazyLayout prefetch improvements</b> enabling lazy layouts to be smarter about how much content to prefetch, taking advantage of pausable composition.</li>
</ul></ul>
<p>Together these improvements eliminate nearly all jank in an internal benchmark.</p>
<h2><span style="font-size: x-large;">Stability</span></h2>
<p>We've heard from you that upgrading your Compose dependency can be challenging, encountering bugs or behaviour changes that prevent you from staying on the latest version. We've invested significantly in improving the stability of Compose, working closely with the many Google app teams building with Compose to detect and prevent issues before they even make it to a release.</p>
<p>Google apps develop against and release with snapshot builds of Compose; as such, Compose is tested against the <b>hundreds of thousands of Google app tests</b> and any Compose issues are immediately actioned by our team. We have recently invested in increasing the cadence of updating these snapshots and now update them <b>daily from Compose tip-of-tree</b>, which means we’re receiving feedback faster, and are able to resolve issues long before they reach a public release of the library.</p>
<p>Jetpack Compose also relies on <span style="color: #0d904f; font-family: courier;">@Experimental</span> annotations to mark APIs that are subject to change. We heard your feedback that some APIs have remained experimental for a long time, reducing your confidence in the stability of Compose. We have invested in stabilizing experimental APIs to provide you a more solid API surface, and <b>reduced the number of experimental APIs by 32% in the last year</b>.</p>
<p>We have also heard that it can be hard to debug Compose crashes when your own code does not appear in the stack trace. In the latest alpha BOM, we have added a new <a href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/Composer?hl=en#setDiagnosticStackTraceEnabled%28kotlin.Boolean%29" target="_blank">opt-in feature</a> to provide more diagnostic information. Note that this does not currently work with minified builds and comes at a performance cost, so we recommend only using this feature in debug builds.</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">class</span> <span style="color: blue; font-weight: bold;">App</span> : Application() {
<span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onCreate</span>() {
<span style="color: #408080; font-style: italic;">// Enable only for debug flavor to avoid perf impact in release</span>
Composer.setDiagnosticStackTraceEnabled(BuildConfig.DEBUG)
}
}
</pre></div>
<h2><span style="font-size: x-large;">Libraries</span></h2>
<p>We know that to build great apps, you need Compose integration in the libraries that interact with your app's UI.</p>
<p>A core library that powers any Compose app is <b>Navigation</b>. You told us that you often encountered limitations when managing state hoisting and directly manipulating the back stack with the current Compose Navigation solution. We went back to the drawing-board and completely reimagined how a navigation library should integrate with the Compose mental model. We're excited to introduce <b><a href="https://android-developers.googleblog.com/2025/05/announcing-jetpack-navigation-3-for-compose.html" target="_blank">Navigation 3</a></b>, a new artifact designed to empower you with greater control and simplify complex navigation flows.</p>
<p>We're also investing in Compose support for <b>CameraX and Media3</b>, making it easier to integrate camera capture and video playback into your UI with Compose idiomatic components.</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;">@Composable
<span style="color: green; font-weight: bold;">private</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">VideoPlayer</span>(
player: Player?, <span style="color: #408080; font-style: italic;">// from media3</span>
modifier: Modifier = Modifier
) {
Box(modifier) {
PlayerSurface(player) <span style="color: #408080; font-style: italic;">// from media3-ui-compose</span>
player?.let {
<span style="color: #408080; font-style: italic;">// custom play-pause button UI</span>
<span style="color: green; font-weight: bold;">val</span> playPauseButtonState = rememberPlayPauseButtonState(it) <span style="color: #408080; font-style: italic;">// from media3-ui-compose</span>
MyPlayPauseButton(playPauseButtonState, Modifier.align(BottomEnd).padding(<span style="color: #666666;">16.d</span>p))
}
}
}
</pre></div><br/>
To learn more, see the <a href="https://developer.android.com/media/media3/ui/compose" target="_blank">media3 Compose documentation</a> and the <a href="https://github.com/android/platform-samples/tree/main/samples/camera/camerax/src/main/java/com/example/platform/camerax/basic/CameraXBasic.kt" target="_blank">CameraX samples</a>.
<h2><span style="font-size: x-large;">Tools</span></h2>
<p>We continue to improve the Android Studio tools for creating Compose UIs. The <a href="https://developer.android.com/studio/preview" target="_blank">latest Narwhal canary</a> includes:</p>
<ul><ul>
<li><b>Resizable Previews</b> instantly show you how your Compose UI adapts to different window sizes
</li><li><b>Preview navigation improvements</b> using clickable names and components
</li><li><b>Studio Labs</b> 🧪: <b>Compose preview generation with Gemini</b> quickly generate a preview
</li><li><b>Studio Labs</b> 🧪: <b>Transform UI with Gemini</b> change your UI with natural language, directly from preview.
</li><li><b>Studio Labs</b> 🧪: <b>Image attachment in Gemini</b> generate Compose code from images.
</li></ul></ul>
<p>For more information read <a href="https://android-developers.googleblog.com/2025/05/google-io-2025-whats-new-in-android-development-tools.html" target="_blank">What's new in Android development tools</a>.</p>
<image><div style="text-align: center;"><img alt="moving image of resizable preview in Jetpack Compose" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLP4LB4TS7QAJZV2jLVv2Vy9-UG4DvOpMUesRcBPMdS1Ci00vTQ7niK_Uqe-AEYtvef1uUtxew-WrEL-WRNIjD3IUiv1GRSOtkS2RbejYb4_MYSNs3koc1yIno4J0qYJDoR8UirR7UUZn5kzSxuBI5sBXDF2vCCWsbzC5Xu7ItJK53Y7s6HetpGvKdsbo/w568-h640/resizable-preview-jetpack-comopse.gif" width="568" /></div><imgcaption><center><em>Resizable Preview</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">New Compose Lint checks</span></h2>
<p>The Compose alpha BOM introduces two new annotations and associated lint checks to help you to write correct and performant Compose code. The <span style="font-family: courier;"><a href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/annotation/FrequentlyChangingValue" target="_blank">@FrequentlyChangingValue</a></span> annotation and <span style="color: #0d904f; font-family: courier;">FrequentlyChangedStateReadInComposition</span> lint check warns in situations where function calls or property reads in composition might cause frequent recompositions. For example, frequent recompositions might happen when reading scroll position values or animating values. The <span style="font-family: courier;"><a href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/annotation/RememberInComposition" target="_blank">@RememberInComposition</a></span> annotation and <span style="color: #0d904f; font-family: courier;">RememberInCompositionDetector</span> lint check warns in situations where constructors, functions, and property getters are called directly inside composition (e.g. the <a href="https://developer.android.com/reference/kotlin/androidx/compose/foundation/text/input/TextFieldState?hl=en&_gl=1*8wj983*_up*MQ..*_ga*MTM3MDAzNTAwMS4xNzQ2Nzg3NTgx*_ga_6HH9YJMN9M*czE3NDY3ODc1ODEkbzEkZzAkdDE3NDY3ODc1ODEkajAkbDAkaDEwMDgyMDU2MDM.#TextFieldState%28kotlin.String,androidx.compose.ui.text.TextRange%29" target="_blank"><span style="font-family: courier;">TextFieldState</span> constructor</a>) without being remembered.</p>
<h2><span style="font-size: x-large;">Happy Composing</span></h2>
<p>We continue to invest in providing the features, performance, stability, libraries and tools that you need to build excellent apps. We value your input so please <a href="https://issuetracker.google.com/issues/new?component=612128" target="_blank">share feedback</a> on our latest updates or what you'd like to see next.</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br />Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-76904641001665297102025-05-20T10:59:00.000-07:002025-05-23T12:09:52.310-07:00Updates to the Android XR SDK: Introducing Developer Preview 2<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6E4IA0G-nsPWLYDP3V2rxang1_wR1bhfP5EeKqTJZlPRrpXBLDG5kKG3qli7-pYqmAo2wdu9p3zq8tUy3v6Ko0CbXu-jri5lNbCoR0fLLPTpKnum8zRLWzLcYmZ2qVd0_l0TFyzlHufD3J8Nn-iaD6M215KpYtHZXGhDTgN4vcIMSyvhK522Xnmowzdw/s1600/android-xr-google-io-meta.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6E4IA0G-nsPWLYDP3V2rxang1_wR1bhfP5EeKqTJZlPRrpXBLDG5kKG3qli7-pYqmAo2wdu9p3zq8tUy3v6Ko0CbXu-jri5lNbCoR0fLLPTpKnum8zRLWzLcYmZ2qVd0_l0TFyzlHufD3J8Nn-iaD6M215KpYtHZXGhDTgN4vcIMSyvhK522Xnmowzdw/s1600/android-xr-google-io-meta.png" style="display: none;" />
<em>Posted by Matthew McCullough – VP of Product Management, Android Developer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPp6HgZqiN1uweKBPa65S2eBZNgSTYHCRswoCxX2JMlwBW7IcDQV_7K13IrOamurxjeYJwg_zejYbRQMQwyLuO4dX08M2JG2l83byhJXkLtUR5SOkl3FZb_x8oX6aTaC-3f6jaA3Z7C_ReYJWNud31TJL2sdgUEmeKERNAWiUpdtbozALI5UYp9nCattI/s1600/IO25-Blog-Hero-Template-Art-Long-01.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPp6HgZqiN1uweKBPa65S2eBZNgSTYHCRswoCxX2JMlwBW7IcDQV_7K13IrOamurxjeYJwg_zejYbRQMQwyLuO4dX08M2JG2l83byhJXkLtUR5SOkl3FZb_x8oX6aTaC-3f6jaA3Z7C_ReYJWNud31TJL2sdgUEmeKERNAWiUpdtbozALI5UYp9nCattI/s1600/IO25-Blog-Hero-Template-Art-Long-01.png" /></a>
<p>Since launching the <a href="https://android-developers.googleblog.com/2024/12/introducing-android-xr-sdk-developer-preview.html" target="_blank">Android XR SDK Developer Preview</a> alongside Samsung, Qualcomm, and Unity last year, we’ve been blown away by all of the excitement we’ve been hearing from the broader Android community. Whether it's through <a href=" https://www.youtube.com/watch?v=AkKjMtBYwDA&t=116s" target="_blank">coding live-streams</a> or local <a href="https://www.youtube.com/watch?v=RsFL8wvZFK8" target="_blank">Google Developer Group talks</a>, it's been an outstanding experience participating in the community to build the future of XR together, and we're just getting started.</p>
<p>Today we’re excited to share an update to the <a href="http://developer.android.com/xr" target="_blank">Android XR SDK</a>: Developer Preview 2, packed with new features and improvements to help you develop helpful and delightful immersive experiences with familiar Android APIs, tools and open standards created for XR.</p>
<p>At Google I/O, we have two technical sessions related to Android XR. The first is <a href="https://io.google/2025/explore/technical-session-22" target="_blank">Building differentiated apps for Android XR with 3D content</a>, which covers many features present in Jetpack SceneCore and ARCore for Jetpack XR. <a href="https://io.google/2025/explore/technical-session-2" target="_blank">The future is now, with Compose and AI on Android XR</a> covers creating XR-differentiated UI and our vision on the intersection of XR with cutting-edge AI capabilities.</p>
<image><div style="text-align: center;"><img alt="Android XR sessions at Google I/O 2025" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhN4ijYv9_IUNzf9FB1F6Wi9nwub5AEuPTHEwdgj7ep1NW_yN4IwmBTcyR7wE11l4pzTIUWgZeD_3QenGfrrRc4cpcRRtttqfV86Ie-7D3prjMRtyZx3MWyfvOnXycVLFo6c23a6HEze_nDtHZAuM_QOeXIxU-cL2HToAOkaZOev-WsQvVC9C-OMHW8H3k/s1600/android-xr-google-io-sessions.png" width="100%" /></div><imgcaption><center><em><a href="https://io.google/2025/explore/technical-session-22" target="_blank">Building differentiated apps for Android XR with 3D content</a> and <a href="https://io.google/2025/explore/technical-session-2" target="_blank">The future is now, with Compose and AI on Android XR</a></em></center></imgcaption></image>
<h2><span style="font-size: x-large;">What’s new in Developer Preview 2</span></h2>
<p>Since the release of <a href="https://developers.googleblog.com/en/introducing-android-xr-sdk-developer-preview/" target="_blank">Developer Preview 1</a>, we’ve been focused on making the APIs easier to use and adding new immersive Android XR features. Your feedback has helped us shape the development of the tools, SDKs, and the platform itself.</p>
<p>With the <b>Jetpack XR SDK</b>, you can now play back 180° and 360° videos, which can be stereoscopic by encoding with the MV-HEVC specification or by encoding view-frames adjacently. The MV-HEVC standard is optimized and designed for stereoscopic video, allowing your app to efficiently play back immersive videos at great quality. Apps built with Jetpack Compose for XR can use the <span style="font-family: courier;"><a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/develop-ui#add-surface" target="_blank">SpatialExternalSurface</a></span> composable to render media, including stereoscopic videos.</p>
<p>Using <b>Jetpack Compose for XR</b>, you can now also define layouts that adapt to different XR display configurations. For example, use a <span style="font-family: courier;"><a href="https://developer.android.com/reference/kotlin/androidx/xr/compose/subspace/layout/SubspaceModifier#%28androidx.xr.compose.subspace.layout.SubspaceModifier%29.fillMaxSize%28kotlin.Float%29" target="_blank">SubspaceModifier</a></span> to specify the size of a <span style="font-family: courier;"><a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/add-subspace" target="_blank">Subspace</a></span> as a percentage of the device’s recommended viewing size, so a panel effortlessly fills the space it's positioned in.</p>
<p><b>Material Design for XR</b> now supports more component overrides for <span style="font-family: courier;"><a href="https://developer.android.com/develop/ui/compose/components/app-bars" target="_blank">TopAppBar</a></span>, <span style="font-family: courier;"><a href="https://developer.android.com/develop/ui/compose/components/dialog#alert" target="_blank">AlertDialog</a></span>, and <span style="font-family: courier;"><a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/list-detail" target="_blank">ListDetailPaneScaffold</a></span>, helping your large-screen enabled apps that use Material Design effortlessly adapt to the new world of XR.</p>
<image><div style="text-align: center;"><img alt="An app adapts to XR using Material Design for XR with the new component overrides" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8nZO4V5FMG8zYiut0XDvyVhKVQiplNwEUoECmtbI_w_CQPpG-LnmcsremuuyfVDuPdfv3XX8RPq4XHAXSKJisCILs4at38y2UQJntrh8fPSEk-_wN6M2CoVaWDmV20_BmPAt9ETHgwz5mm1PWgVhTgZ5I57DL4HIx7NDS_MbT4-Z47EzYCi6CALc2gMM/s1600/app-adapts-android-xr-material-design-google-io.png" width="100%" /></div><imgcaption><center><em>An app adapts to XR using Material Design for XR with the new component overrides</em></center></imgcaption></image><br />
<p>In <b>ARCore for Jetpack XR</b>, you can now track hands after requesting the appropriate permissions. Hands are a collection of 26 posed hand joints that can be used to detect hand gestures and bring a whole new level of interaction to your Android XR apps:</p>
<image><div style="text-align: center;"><img alt="moving image demonstrates how hands bring a natural input method to your Android XR experience." border="0" height="553" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5ECo8aP0SFOaw8qfkewc866hbkOZ9ZJgdimmeFU_n3VNGTh6FK1m4R5sladem74xrUsF0QrevO4abVsPrVNq0FVU3t4pM8uPiItdCeZumsOzfZh_cskSnzM19EnoP52mf019a16-vtVrxxJX4M5lIWAHc5XfymTo0jg-lvO8s9UWruSnSVdqT5uUbNLA/w640-h553/arcore-jetpack-android-xr-google-io.gif" width="640" /></div><imgcaption><center><em>Hands bring a natural input method to your Android XR experience.</em></center></imgcaption></image><br />
<p>For more guidance on developing apps for Android XR, check out our <a href="https://developer.android.com/codelabs/xr-fundamentals-part-1" target="_blank">Android XR Fundamentals codelab</a>, the updates to our <a href="http://goo.gle/haxr" target="_blank">Hello Android XR sample project</a>, and <a href="http://goo.gle/adaptive-jetstream" target="_blank">a new version of JetStream</a> with Android XR support.</p>
<p>The <b>Android XR Emulator</b> has also received updates to stability, support for AMD GPUs, and is now fully integrated within the Android Studio UI.</p>
<image><div style="text-align: center;"><img alt="the Android XR Emulator in Android STudio" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMsM6_DNRkrBrxM6yuvk2YW7f6VU0XG3o4xPPzxG0b_SzdVelcRKbVplMsu136nio1UpIotiAXjQtL_1ok7DMaMMZOsFKyVidFhzSKN1dWvevZ144LcODGH1O9pLVOJq49JdGh6kGywH4B451BaRI9w5jgmyREMoMK2pcwN9rFZG12v4Vft5qVgIKHE2Y/s16000/android-xr-emulator-in-android-studio-google-io.png" /></div><imgcaption><center><em>The Android XR Emulator is now integrated in Android Studio</em></center></imgcaption></image><br />
<p>Developers using Unity have <a href="https://unity.com/blog/porting-apps-games-over-android-xr-unity-6" target="_blank">already successfully created and ported existing games and apps to Android XR</a>. Today, you can upgrade to the <a href="https://discussions.unity.com/t/android-xr-pre-release-now-available/1634938" target="_blank">Pre-Release version 2</a> of the Unity OpenXR: Android XR package! This update adds many performance improvements such as support for <a href="https://docs.unity3d.com/Packages/com.unity.xr.androidxr-openxr@1.0/manual/features/display-utilities.html" target="_blank">Dynamic Refresh Rate</a>, which optimizes your app’s performance and power consumption. Shaders made with <a href="https://unity.com/features/shader-graph" target="_blank">Shader Graph</a> now support <a href="https://docs.unity3d.com/6000.1/Documentation/Manual/xr-graphics-spacewarp.html" target="_blank">SpaceWarp</a>, making it easier to use SpaceWarp to reduce compute load on the device. Hand meshes are now exposed with occlusion, which enables realistic hand visualization.</p>
<p>Check out Unity’s <a href="https://docs.unity3d.com/Packages/com.unity.template.mixed-reality@2.1/manual/index.html" target="_blank">improved Mixed Reality template</a> for Android XR, which now includes support for occlusion and persistent anchors.</p>
<p>We recently launched <a href="https://github.com/android/xr-unity-samples" target="_blank">Android XR Samples for Unity</a>, which demonstrate capabilities on the Android XR platform such as hand tracking, plane tracking, face tracking, and passthrough.</p>
<image><div style="text-align: center;"><img alt="moving image of Google’s open-source Unity samples demonstrating platform features and showing how they’re implemented" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHiuAwjZJtPTRL6q7bvpY4xwXfqGj52bT1fYywSchvBHYVjeqi0_17QOZdn0BylkT9J-txSEJUjZu2WjMheml_sGX17Goi5ZkYSCVhvQ7i8JzXiuakPcR1_XnaRg7SI5OhWvN0ImaxLcpcHbky6rtz7vOXsOV4HZc6PVaeu623XnM6R23lM5tNZ171FxU/w640-h640/unity-demo-android-xr-google-io.gif" width="640" /></div><imgcaption><center><em>Google’s open-source Unity samples demonstrate platform features and show how they’re implemented</em></center></imgcaption></image><br />
<p>The Firebase AI Logic for Unity is now in public preview! This makes it easy for you to integrate gen AI into your apps, enabling the creation of AI-powered experiences with Gemini and Android XR. The Firebase AI Logic fully supports Gemini's capabilities, including multimodal input and output, and bi-directional streaming for immersive conversational interfaces. Built with production readiness in mind, Firebase AI Logic is integrated with core Firebase services like App Check, Remote Config, and Cloud Storage for enhanced security, configurability, and data management. Learn more about this on <a href="https://firebase.blog/posts/2025/05/ai-logic-unity-androidxr" target="_blank">the Firebase blog</a> or go straight to the <a href="https://firebase.google.com/docs/vertex-ai/get-started" target="_blank">Gemini API using Vertex AI in Firebase SDK documentation</a> to get started.</p>
<h2><span style="font-size: x-large;">Continuing to build the future together</span></h2>
<p>Our commitment to open standards continues with the <a href="https://www.khronos.org/blog/gltf-interactivity-specification-released-for-public-comment" target="_blank">glTF Interactivity specification</a>, in collaboration with the Khronos Group. which will be supported in glTF models rendered by Jetpack XR later this year. Models using the glTF Interactivity specification are self-contained interactive assets that can have many pre-programmed behaviors, like rotating objects on a button press or changing the color of a material over time.</p>
<p>Android XR will be available first on Samsung’s Project Moohan, launching later this year. Soon after, our partners at XREAL will release the next Android XR device. Codenamed Project Aura, it’s a portable and tethered device that gives users access to their favorite Android apps, including those that have been built for XR. It will launch as a developer edition, specifically for you to begin creating and experimenting. The best news? With the familiar tools you use to build Android apps today, you can build for these devices too.</p>
<image><div style="text-align: center;"><img alt="product image of XREAL’s Project Aura against a nebulous black background" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgujCjZD5_MiRHDiDp_O-PRCGs_CdfARZbtfC5xqrKgMlJbWZQxNwdNN9C4SwVYB7Lu0Pm8GTubBcVenZm07pCIMAuAx5WcFjADHyE0JeQYhIlEmTqoW0te7xBz15Ab3Oh7C8IN4uk5zLnvqRJmUIEz0lOtSMO-e1oeiWK-jo2NvvrzBQoNUSU7_0UFmf4/s1600/android-xr-google-io-meta.png" width="100%" /></div><imgcaption><center><em>XREAL’s Project Aura</em></center></imgcaption></image><br />
<p>The Google Play Store is also getting ready for Android XR. It will list <a href="https://developer.android.com/develop/xr/get-started#app_manifest_compatibility_considerations_for_mobile_and_large_screen_apps" target="_blank">supported 2D Android apps</a> on the Android XR Play Store when it launches later this year. If you are working on an <a href="https://developer.android.com/docs/quality-guidelines/android-xr#android-xr-differentiated" target="_blank">Android XR differentiated app</a>, you can get it ready for the big launch and be one of the first differentiated apps on the Android XR Play Store:</p>
<ul><ul>
<li>Install and test your existing app in the <a href="https://developer.android.com/develop/xr/jetpack-xr-sdk/studio-tools" target="_blank">Android XR Emulator</a></li>
<li>Learn how to <a href="https://developer.android.com/develop/xr/package-and-distribute" target="_blank">package and distribute apps for Android XR</a></li>
<li>New! <a href="https://support.google.com/googleplay/android-developer/answer/9866151?hl=en&ref_topic=3450987&sjid=1442238423744171917-NA" target="_blank">Make your XR app stand out</a> from others on Play Store with preview assets such as stereoscopic 180° or 360° videos, as well as screenshots, app description, and non-spatial video.</li>
</ul></ul>
<p>And we know many of you are excited for the future of Android XR on <a href="https://blog.google/products/android/android-xr-gemini-glasses-headsets/" target="_blank">glasses</a>. We are shaping the developer experience now and will share more details on how you can participate later this year.</p>
<p>To get started creating and developing for Android XR, check out <a href="https://d.android.com/develop/xr" target="_blank">developer.android.com/develop/xr</a> where you will find all of the tools, libraries, and resources you need to work with the Android XR SDK. In particular, try out our <a href="https://developer.android.com/develop/xr/samples" target="_blank">samples</a> and <a href="https://developer.android.com/codelabs/xr-fundamentals-part-1#0" target="_blank">codelabs</a>.</p>
<p>We welcome your <a href="https://d.android.com/develop/xr/support" target="_blank">feedback, suggestions, and ideas</a> as you’re helping shape Android XR. Your passion, expertise, and bold ideas are vital as we continue to develop Android XR together. We look forward to seeing your XR-differentiated apps when Android XR devices launch later this year!</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br />Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-31437695330202848662025-05-20T10:58:00.000-07:002025-05-20T12:38:22.999-07:00Peacock built adaptively on Android to deliver great experiences across screens <meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLVwc_aeyW7UAK0sMPkC2fx3szkb0xOx4g9txyLJ15pzekTIx4-fbHcmPi0bQ6gJlpR4s4MKRQWmKd6zpooI4NYYrZiVUIJC36DEmAu0Yg-yZD76Zu3W6yJnQT2zDhj2d8bSAkdGEgWdSezKcIMO03TwDVOdRUbfUSVOzTaMo2tUWuNN3ZH8XcGdFNcM/s1600/peacock-adaptive-android-case-study.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLVwc_aeyW7UAK0sMPkC2fx3szkb0xOx4g9txyLJ15pzekTIx4-fbHcmPi0bQ6gJlpR4s4MKRQWmKd6zpooI4NYYrZiVUIJC36DEmAu0Yg-yZD76Zu3W6yJnQT2zDhj2d8bSAkdGEgWdSezKcIMO03TwDVOdRUbfUSVOzTaMo2tUWuNN3ZH8XcGdFNcM/s1600/peacock-adaptive-android-case-study.png">
<em>Posted by Sa-ryong Kang and Miguel Montemayor - Developer Relations Engineers
</em>
<a href="IMG" imageanchor="1" ><img style="100%" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixLVwc_aeyW7UAK0sMPkC2fx3szkb0xOx4g9txyLJ15pzekTIx4-fbHcmPi0bQ6gJlpR4s4MKRQWmKd6zpooI4NYYrZiVUIJC36DEmAu0Yg-yZD76Zu3W6yJnQT2zDhj2d8bSAkdGEgWdSezKcIMO03TwDVOdRUbfUSVOzTaMo2tUWuNN3ZH8XcGdFNcM/s1600/peacock-adaptive-android-case-study.png" data-original-width="100%" data-original-height="800" /></a>
<p><a href="https://play.google.com/store/apps/details?id=com.peacocktv.peacockandroid&hl=en_US&pli=1" target="_blank">Peacock</a> is <a href="https://www.nbcuniversal.com/" target="_blank">NBCUniversal’s</a> streaming service app available in the US, offering culture-defining entertainment including live sports, exclusive original content, TV shows, and blockbuster movies. The app continues to evolve, becoming more than just a platform to watch content, but a hub of entertainment.</p>
<p>Today’s users are consuming entertainment on an increasingly wider array of device sizes and types, and in particular are moving towards mobile devices. Peacock has adopted Jetpack Compose to help with its journey in adapting to more screens and meeting users where they are.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ooRcQFMYzmA" width="100%" height="498" src="https://www.youtube.com/embed/ooRcQFMYzmA"></iframe><imgcaption><center><em><b>Disclaimer:</b> Peacock is available in the US only. This video will only be viewable to US viewers.</em></center></imgcaption><br/>
<h2><span style="font-size: x-large;">Adapting to more flexible form factors</span></h2>
<p>The Peacock development team is focused on bringing the best experience to users, no matter what device they’re using or when they want to consume content. With an emerging trend from app users to watch more on mobile devices and large screens like foldables, the Peacock app needs to be able to <a href="https://developer.android.com/adaptive-apps" target="_blank">adapt to different screen sizes</a>. As more devices are introduced, the team needed to explore new solutions that make the most out of each unique display permutation.</p>
<p>The goal was to have the Peacock app to adapt to these new displays while continually offering high-quality entertainment without interruptions, like the stream reloading or visual errors. While thinking ahead, they also wanted to prepare and build a solution that was ready for <a href="https://developer.android.com/develop/xr/get-started" target="_blank">Android XR</a> as the entertainment landscape is shifting towards including more immersive experiences.</p>
<image><div style="text-align: center;"><img id="imgFull" alt="quote card featuring a headshot of Diego Valente, Head of Mobile, Peacock & Global Streaming, reads 'Thinking adaptively isn't just about supporting tablets or large screens - it's about future proofing your app. Investing in adaptability helps you meet user's expectations of having seamless experiencers across all their devices and sets you up for what's next.'" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGb1jINgpKXi8zg_zdSmeSGYbnqTf9aZhb6b9xe8aXcarcM5u3UNpcMAcnWYDqxnxxGy8d7RL9C-GQU1nOzQR9SxNc3-y0RgDDGffinWUTnVUuQOUdq4fYLaz4m27Uwzgw-H02lYE0U3wVoiAkSW83qvJzWUkfKYkiYF0iFmCE6PfJEb03Hd9GXzB7V_Q/s1600/peacock-quote-card-adaptive-android-google-io.png" width="100%"/></div></image><br/>
<h2><span style="font-size: x-large;">Building a future-proof experience with Jetpack Compose</span></h2>
<p>In order to build a scalable solution that would help the Peacock app continue to evolve, the app was migrated to Jetpack Compose, Android’s toolkit for building scalable UI. One of the essential tools they used was the <a href="https://developer.android.com/develop/ui/compose/layouts/adaptive/use-window-size-classes" target="_blank">WindowSizeClass API</a>, which helps developers create and test UI layouts for different size ranges. This API then allows the app to seamlessly switch between pre-set layouts as it reaches established viewport breakpoints for different window sizes.</p>
<p>The API was used in conjunction with <a href="https://developer.android.com/kotlin/coroutines" target="_blank">Kotlin Coroutines</a> and <a href="https://developer.android.com/kotlin/flow" target="_blank">Flows</a> to keep the UI state responsive as the window size changed. To test their work and fine tune edge case devices, Peacock used the Android Studio emulator to simulate a wide range of Android-based devices.</p>
<p>Jetpack Compose allowed the team to build adaptively, so now the Peacock app responds to a wide variety of screens while offering a seamless experience to Android users. “The app feels more native, more fluid, and more intuitive across all form factors,” said Diego Valente, Head of Mobile, Peacock and Global Streaming. “That means users can start watching on a smaller screen and continue instantly on a larger one when they unfold the device—no reloads, no friction. It just works.”</p>
<h2><span style="font-size: x-large;">Preparing for immersive entertainment experiences</span></h2>
<p>In building adaptive apps on Android, John Jelley, Senior Vice President, Product & UX, Peacock and Global Streaming, says Peacock has also laid the groundwork to quickly adapt to the Android XR platform: “Android XR builds on the same large screen principles, our investment here naturally extends to those emerging experiences with less developmental work.”</p>
<p>The team is excited about the prospect of features unlocked by Android XR, like Multiview for sports and TV, which enables users to watch multiple games or camera angles at once. By tailoring spatial windows to the user’s environment, the app could offer new ways for users to interact with contextual metadata like sports stats or actor information—all without ever interrupting their experience.</p>
<h2><span style="font-size: x-large;">Build adaptive apps</span></h2>
<p>Learn how to <a href="https://developer.android.com/adaptive-apps" target="_blank">unlock your app's full potential</a> on phones, tablets, foldables, and beyond.</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br />Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-61655085035388003202025-05-20T10:57:00.000-07:002025-05-20T12:38:53.265-07:00On-device GenAI APIs as part of ML Kit help you easily build with Gemini Nano<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh96stpV5BvqzxBhk12xYFEg5g-5U4H93DJOId6MEDioi_kPsXWnW3tBwd_kYQfIrcaD4h6QF3cylN62tkiTMit-K6haiB8QSJ2Lnp9ggL_bY_hNwu-FX3HquDmZ98rMYoyug6PxJ0qQQ2_7hlB1BfhZXvh8IFweZJDRbplE0CdwrjjOsMH1GKfC_6hHXo/s1600/gen-ai-api-android-meta%20%283%29.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh96stpV5BvqzxBhk12xYFEg5g-5U4H93DJOId6MEDioi_kPsXWnW3tBwd_kYQfIrcaD4h6QF3cylN62tkiTMit-K6haiB8QSJ2Lnp9ggL_bY_hNwu-FX3HquDmZ98rMYoyug6PxJ0qQQ2_7hlB1BfhZXvh8IFweZJDRbplE0CdwrjjOsMH1GKfC_6hHXo/s1600/gen-ai-api-android-meta%20%283%29.png" style="display: none;" />
<em>Posted by Caren Chang - Developer Relations Engineer, Chengji Yan - Software Engineer, Taj Darra - Product Manager</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnecK6GCD0zX60dSKM1fspl7RcCZh3kaWG-PYKw3Yf4Vyf_3NXlsQoRAVQ_milOQqfBS6gtDODFwK5b9SskqFT7tu6fYDr8WcqxuJQxqIrA9L8VVVsxgSGJogtFqgFe0wVZswvVjTU1Zuf1-ZkAT_bPXL29iIVooQzoStIDZEbaVA0ygvoggMoMsCXrM/s1600/gen-ai-api-android-hero%20%281%29.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUnecK6GCD0zX60dSKM1fspl7RcCZh3kaWG-PYKw3Yf4Vyf_3NXlsQoRAVQ_milOQqfBS6gtDODFwK5b9SskqFT7tu6fYDr8WcqxuJQxqIrA9L8VVVsxgSGJogtFqgFe0wVZswvVjTU1Zuf1-ZkAT_bPXL29iIVooQzoStIDZEbaVA0ygvoggMoMsCXrM/s1600/gen-ai-api-android-hero%20%281%29.png" /></a>
<p>We are excited to announce a set of on-device <a href="https://developers.google.com/ml-kit/genai" target="_blank">GenAI APIs, as part of ML Kit</a>, to help you integrate Gemini Nano in your Android apps.</p>
<p>To start, we are releasing 4 new APIs:</p>
<ul><ul>
<li><b>Summarization</b>: to summarize articles and conversations</li>
<li><b>Proofreading</b>: to polish short text</li>
<li><b>Rewriting</b>: to reword text in different styles</li>
<li><b>Image Description</b>: to provide short description for images</li>
</ul></ul>
<h2><span style="font-size: x-large;">Key benefits of GenAI APIs</span></h2>
<p>GenAI APIs are high level APIs that allow for easy integration, similar to existing <a href="https://developers.google.com/ml-kit" target="_blank">ML Kit APIs</a>. This means you can expect quality results out of the box without extra effort for prompt engineering or fine tuning for specific use cases.</p>
<p>GenAI APIs run on-device and thus provide the following benefits:</p>
<ul><ul>
<li>Input, inference, and output data is processed locally</li>
<li>Functionality remains the same without reliable internet connection</li>
<li>No additional cost incurred for each API call</li>
</ul></ul>
<p>To prevent misuse, we also added safety protection in various layers, including base model training, safety-aware LoRA fine-tuning, input and output classifiers and safety evaluations.</p>
<h2><span style="font-size: x-large;">How GenAI APIs are built</span></h2>
<p>There are 4 main components that make up each of the GenAI APIs.</p>
<ol>
<li>Gemini Nano is the base model, as the foundation shared by all APIs.</li>
<li>Small API-specific LoRA adapter models are trained and deployed on top of the base model to further improve the quality for each API.</li>
<li>Optimized inference parameters (e.g. prompt, temperature, topK, batch size) are tuned for each API to guide the model in returning the best results.</li>
<li>An evaluation pipeline ensures quality in various datasets and attributes. This pipeline consists of: LLM raters, statistical metrics and human raters.</li>
</ol>
<p>Together, these components make up the high-level GenAI APIs that simplify the effort needed to integrate Gemini Nano in your Android app.</p>
<h2><span style="font-size: x-large;">Evaluating quality of GenAI APIs</span></h2>
<p>For each API, we formulate a benchmark score based on the evaluation pipeline mentioned above. This score is based on attributes specific to a task. For example, when evaluating the summarization task, one of the attributes we look at is “grounding” (ie: factual consistency of generated summary with source content).</p>
<p>To provide out-of-box quality for GenAI APIs, we applied feature specific fine-tuning on top of the Gemini Nano base model. This resulted in an increase for the benchmark score of each API as shown below:</p>
<table style="width: 100%;">
<tbody><tr>
<th style="text-align: left;"><b>Use case in English</b></th>
<th style="text-align: left;">Gemini Nano Base Model</th>
<th style="text-align: left;">ML Kit GenAI API</th>
</tr>
<tr>
<td style="text-align: left;">Summarization</td>
<td style="text-align: left;">77.2</td>
<td style="text-align: left;">92.1</td>
</tr>
<tr>
<td style="text-align: left;">Proofreading</td>
<td style="text-align: left;">84.3</td>
<td style="text-align: left;">90.2</td>
</tr>
<tr>
<td style="text-align: left;">Rewriting</td>
<td style="text-align: left;">79.5</td>
<td style="text-align: left;">84.1</td>
</tr>
<tr>
<td style="text-align: left;">Image Description</td>
<td style="text-align: left;">86.9</td>
<td style="text-align: left;">92.3</td>
</tr>
</tbody></table><br />
<p>In addition, this is a quick reference of how the APIs perform on a Pixel 9 Pro:</p>
<table style="width: 100%;">
<tbody><tr>
<th style="text-align: left;"></th>
<th style="text-align: left;"><b>Prefix Speed<br />(input processing rate)</b></th>
<th style="text-align: left;"><b>Decode Speed<br />(output generation rate)</b></th>
</tr>
<tr>
<td style="text-align: left; width: 20%;">Text-to-text</td>
<td style="text-align: left; width: 40%;">510 tokens/second</td>
<td style="text-align: left; width: 40%;">11 tokens/second</td>
</tr>
<tr>
<td style="text-align: left; width: 20%;">Image-to-text</td>
<td style="text-align: left; width: 40%;">510 tokens/second + 0.8 seconds for image encoding</td>
<td style="text-align: left; width: 40%;">11 tokens/second</td>
</tr>
</tbody></table>
<h2><span style="font-size: x-large;">Sample usage</span></h2>
<p>This is an example of implementing the GenAI Summarization API to get a one-bullet summary of an article:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">val</span> articleToSummarize = <span style="color: #ba2121;">"We are excited to announce a set of on-device generative AI APIs..."</span>
<span style="color: #408080; font-style: italic;">// Define task with desired input and output format</span>
<span style="color: green; font-weight: bold;">val</span> summarizerOptions = SummarizerOptions.builder(context)
.setInputType(InputType.ARTICLE)
.setOutputType(OutputType.ONE_BULLET)
.setLanguage(Language.ENGLISH)
.build()
<span style="color: green; font-weight: bold;">val</span> summarizer = Summarization.getClient(summarizerOptions)
suspend <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">prepareAndStartSummarization</span>(context: Context) {
<span style="color: #408080; font-style: italic;">// Check feature availability. Status will be one of the following: </span>
<span style="color: #408080; font-style: italic;">// UNAVAILABLE, DOWNLOADABLE, DOWNLOADING, AVAILABLE</span>
<span style="color: green; font-weight: bold;">val</span> featureStatus = summarizer.checkFeatureStatus().await()
<span style="color: green; font-weight: bold;">if</span> (featureStatus == FeatureStatus.DOWNLOADABLE) {
<span style="color: #408080; font-style: italic;">// Download feature if necessary.</span>
<span style="color: #408080; font-style: italic;">// If downloadFeature is not called, the first inference request will </span>
<span style="color: #408080; font-style: italic;">// also trigger the feature to be downloaded if it's not already</span>
<span style="color: #408080; font-style: italic;">// downloaded.</span>
summarizer.downloadFeature(object : DownloadCallback {
<span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadStarted</span>(bytesToDownload: Long) { }
<span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadFailed</span>(e: GenAiException) { }
<span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadProgress</span>(totalBytesDownloaded: Long) {}
<span style="color: green; font-weight: bold;">override</span> <span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">onDownloadCompleted</span>() {
startSummarizationRequest(articleToSummarize, summarizer)
}
})
} <span style="color: green; font-weight: bold;">else</span> <span style="color: green; font-weight: bold;">if</span> (featureStatus == FeatureStatus.DOWNLOADING) {
<span style="color: #408080; font-style: italic;">// Inference request will automatically run once feature is </span>
<span style="color: #408080; font-style: italic;">// downloaded.</span>
<span style="color: #408080; font-style: italic;">// If Gemini Nano is already downloaded on the device, the </span>
<span style="color: #408080; font-style: italic;">// feature-specific LoRA adapter model will be downloaded very </span>
<span style="color: #408080; font-style: italic;">// quickly. However, if Gemini Nano is not already downloaded, </span>
<span style="color: #408080; font-style: italic;">// the download process may take longer.</span>
startSummarizationRequest(articleToSummarize, summarizer)
} <span style="color: green; font-weight: bold;">else</span> <span style="color: green; font-weight: bold;">if</span> (featureStatus == FeatureStatus.AVAILABLE) {
startSummarizationRequest(articleToSummarize, summarizer)
}
}
<span style="color: green; font-weight: bold;">fun</span> <span style="color: blue;">startSummarizationRequest</span>(text: String, summarizer: Summarizer) {
<span style="color: #408080; font-style: italic;">// Create task request </span>
<span style="color: green; font-weight: bold;">val</span> summarizationRequest = SummarizationRequest.builder(text).build()
<span style="color: #408080; font-style: italic;">// Start summarization request with streaming response</span>
summarizer.runInference(summarizationRequest) { newText ->
<span style="color: #408080; font-style: italic;">// Show new text in UI</span>
}
<span style="color: #408080; font-style: italic;">// You can also get a non-streaming response from the request</span>
<span style="color: #408080; font-style: italic;">// val summarizationResult = summarizer.runInference(summarizationRequest)</span>
<span style="color: #408080; font-style: italic;">// val summary = summarizationResult.get().summary</span>
}
<span style="color: #408080; font-style: italic;">// Be sure to release the resource when no longer needed</span>
<span style="color: #408080; font-style: italic;">// For example, on viewModel.onCleared() or activity.onDestroy()</span>
summarizer.close()
</pre></div><br />
<p>For more examples of implementing the GenAI APIs, check out the official <a href="https://developers.google.com/ml-kit/genai" target="_blank">documentation</a> and samples on GitHub:</p>
<ul><ul>
<li><a href="https://github.com/android/ai-samples/tree/main/ai-catalog/samples" target="_blank">AI Catalog GenAI API Samples with Compose</a></li>
<li><a href="https://github.com/googlesamples/mlkit/tree/master/android/genai" target="_blank">ML Kit GenAI APIs Quickstart</a></li>
</ul></ul>
<h2><span style="font-size: x-large;">Use cases</span></h2>
<p>Here is some guidance on how to best use the current GenAI APIs:</p>
<p>For <b>Summarization</b>, consider:</p>
<ul><ul>
<li>Conversation messages or transcripts that involve 2 or more users</li></ul><ul>
<li>Articles or documents less than 4000 tokens (or about 3000 English words). Using the first few paragraphs for summarization is usually good enough to capture the most important information.</li>
</ul></ul>
<p>For <b>Proofreading</b> and <b>Rewriting</b> APIs, consider utilizing them during the content creation process for short content below 256 tokens to help with tasks such as:</p>
<ul><ul>
<li>Refining messages in a particular tone, such as more formal or more casual</li></ul><ul>
<li>Polishing personal notes for easier consumption later</li></ul><ul>
</ul></ul>
<p>For the <b>Image Description</b> API, consider it for:</p>
<ul><ul>
<li>Generating titles of images</li></ul><ul>
<li>Generating metadata for image search</li></ul><ul>
<li>Utilizing descriptions of images in use cases where the images themselves cannot be displayed, such as within a list of chat messages</li></ul><ul>
<li>Generating alternative text to help visually impaired users better understand content as a whole</li>
</ul></ul>
<h2><span style="font-size: x-large;">GenAI API in production</span></h2>
<p>Envision is an app that verbalizes the visual world to help people who are blind or have low vision lead more independent lives. A common use case in the app is for users to take a picture to have a document read out loud. Utilizing the GenAI Summarization API, Envision is now able to get a concise summary of a captured document. This significantly enhances the user experience by allowing them to quickly grasp the main points of documents and determine if a more detailed reading is desired, saving them time and effort.</p>
<image><div style="text-align: center;"><img alt="side by side images of a mobile device showing a document on a table on the left, and the results of the scanned document on the right showing details providing the what, when, and where as written in the document" border="0" height="613" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkOrO3R_GVdd26XH3C6XcLCgJ39SYS4z6i4spYGRPo8Z0uJtmwmnzejROH0b__EnZqxQ7rRfZiUCb2qYodgZCUCht43LaC0KCO2VGVtDSqcjc-eJ7Vp6f8U6qToWOakAqhflG0_e2t9fWa7JYdx26ykZZFqbVwTOYOroHmjoDRsxM2KzZmAU7CM2I_fuo/w640-h613/generative-api-in-action-android-envision.png" width="640" /></div></image><br />
<h2><span style="font-size: x-large;">Supported devices</span></h2>
<p>GenAI APIs are available on Android devices using optimized MediaTek Dimensity, Qualcomm Snapdragon, and Google Tensor platforms through AICore. For a comprehensive list of devices that support GenAI APIs, refer to our <a href="https://developers.google.com/ml-kit/genai#device-support" target="_blank">official documentation</a>.</p>
<h2><span style="font-size: x-large;">Learn more</span></h2>
<p>Start implementing GenAI APIs in your Android apps today with guidance from our official <a href="https://developers.google.com/ml-kit/genai" target="_blank">documentation</a> and samples on GitHub: <a href="https://github.com/android/ai-samples/tree/main/ai-catalog/samples" target="_blank">AI Catalog GenAI API Samples with Compose, ML Kit GenAI APIs Quickstart</a>.</p>
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-58257665432832512872025-05-20T10:56:00.000-07:002025-05-22T10:15:07.962-07:00New in-car app experiences<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ch4mDTckRM3NbELIn-7qkAHBZvZePkcVQTaZR1wvjp343urRIkqoKWO2qdULTfdjtX0Tcc20jiyMbP8DiMuEhuuewIEBxSTITgGYo1ZlAI0Ro5AYcJPxQcUTPLxZvKC0gzM7zVTFXEFxA3VIu4cNPhcGjvp9RqIeCccPaLclpfA5_LcSLbBsP_BdG8s/s1600/android-auto-google-io-meta.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5ch4mDTckRM3NbELIn-7qkAHBZvZePkcVQTaZR1wvjp343urRIkqoKWO2qdULTfdjtX0Tcc20jiyMbP8DiMuEhuuewIEBxSTITgGYo1ZlAI0Ro5AYcJPxQcUTPLxZvKC0gzM7zVTFXEFxA3VIu4cNPhcGjvp9RqIeCccPaLclpfA5_LcSLbBsP_BdG8s/s1600/android-auto-google-io-meta.png" style="display: none;" />
<em>Posted by Noam Gefen – Product Manager, Android for Cars, Sole Alborno – Product Manager, Gemini, and Ben Sagmoe – Developer Relations Engineer, Android for Cars</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwMRJDvCDNiqUTb45-PlkPAqKeZUDv4Ew0lFbkWMLy7fPELDQ3nLYAqx6RR2lbFkuTcE-hkdi_pdGQB9_BXTISrkK5xmgj3EQ6UKlCvl0vGHrZj5PxqVK01BuilgyX08Jje5Wl675eu1YfAqNu2jpZg5BmRO65yr_c1FeiecdHSFk_TGIWU_k-LCn89PA/s1600/IO25-SVD-Blog-Banner-01-4209x1253.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwMRJDvCDNiqUTb45-PlkPAqKeZUDv4Ew0lFbkWMLy7fPELDQ3nLYAqx6RR2lbFkuTcE-hkdi_pdGQB9_BXTISrkK5xmgj3EQ6UKlCvl0vGHrZj5PxqVK01BuilgyX08Jje5Wl675eu1YfAqNu2jpZg5BmRO65yr_c1FeiecdHSFk_TGIWU_k-LCn89PA/s1600/IO25-SVD-Blog-Banner-01-4209x1253.png" /></a>
<p>The in-car experience continues to evolve rapidly, and Google remains committed to pushing the boundaries of what's possible. At Google I/O 2025, we're excited to unveil the latest advancements for drivers, car manufacturers, and developers, furthering our goal of a safe, seamless, and helpful connected driving experience.</p>
<p>Today's car cabins are increasingly digital, offering developers exciting new opportunities with larger displays and more powerful computing. <a href="https://www.android.com/auto/" target="_blank">Android Auto</a> is now supported in nearly all new cars sold, with almost 250 million compatible vehicles on the road.</p>
<p>We're also seeing significant growth in cars powered by Android Automotive OS with <a href="https://built-in.google/cars/" target="_blank">Google built-in</a>. Over 50 models are currently available, with more launching this year. This growth is fueled by a thriving app ecosystem, including over 300 apps already available on the Play Store. These include apps optimized for a safe and seamless experience while driving as well as entertainment apps for while you're parked and waiting in your car—many of which are adaptive mobile apps that have been seamlessly brought to cars through the <a href="https://developer.android.com/training/cars/car-ready-mobile-apps" target="_blank">Car Ready Mobile Apps Program</a>.</p>
<p>A vibrant developer community is essential to delivering these innovative in-car experiences utilizing the different screens within the car cabin. This past year, we've focused on key areas to help empower developers to build more differentiated experiences in cars across both platforms, as we embark on the Gemini era in cars.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="ud09zuXHst4" width="100%" height="413" src="https://www.youtube.com/embed/ud09zuXHst4"></iframe>
<h2><span style="font-size: x-large;">Gemini for Cars</span></h2>
<p>Exciting news for in-car experiences: Gemini, Google's advanced AI, is coming to vehicles! This unlocks a new era of safe and helpful interactions on the go.</p>
<p>Gemini enables natural voice conversations and seamless multitasking, empowering drivers to get more done simply by speaking naturally. Imagine effortlessly finding charging stations or navigating to a location pulled directly from an email, all with just your voice.</p>
<p>You can learn how to <a href="https://blog.google/products/android/gemini-for-cars/" target="_blank">leverage Gemini's potential to create engaging in-car experiences in your app</a>.</p>
<p>Navigation apps can integrate with Gemini using <a href="https://developer.android.com/training/cars/apps/navigation#support-navigation-intents" target="_blank">three core intent formats</a>, allowing you to start navigation, display relevant search results, and execute custom actions, such as enabling users to report incidents like traffic congestion using their voice.</p>
<p>Gemini for cars will be rolling out in the coming months. Get ready to build the next generation of in-car AI experiences!</p>
<h2><span style="font-size: x-large;">New developer programs and tools</span></h2>
<image><div style="text-align: center;"><img alt="table of app categories showing availability in android Auto and cars with Google built-in, including media, navigation, point-of-interest, internet of things, weather, video, browsers, games, and communication such as messaging and voip" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjEV15_YeonXC72heQn6EKA7qCmBIWoiZ6zG04KhWUyq9NWCeY6NnG_hdeTPqPy6XxGR7QszUUxC-EnmhZOTE1MaGTi5g76yxUso2S4qCkm4a80ZgNh9z0AntrSPB_vXDYkEq4JyA84G3XNCPy0dDFc8ASboQB2eO60tpYEqwdhyphenhyphenIfMwmqfH8_Ccuxcjw/s16000/app-categories-availability-android-auto-google-io.png" /></div></image><br />
<p>Last year, we introduced car app quality tiers to inspire developers to create high quality in-car experiences. By developing your app in compliance with the Car ready tier, you can bring video, gaming, or browser apps to run while parked in cars with Google built-in with almost no additional effort. <a href="https://developer.android.com/training/cars/car-ready-mobile-apps" target="_blank">Learn more about Car Ready Mobile Apps</a>.
</p><p>Your app can further shine in cars within the Car optimized and Car differentiated tiers to unlock experiences while the car is in motion, and also when transitioning between parked and driving modes, while utilizing the different screens within the modern car cabin. Check the <a href="https://developer.android.com/docs/quality-guidelines/car-app-quality?_gl=1*la8ojm*_up*MQ..*_ga*OTA1MjQ0MjkuMTc0Njc5NDM3NQ..*_ga_6HH9YJMN9M*czE3NDY3OTQzNzUkbzEkZzAkdDE3NDY3OTQzNzUkajAkbDAkaDEwODQ1MjQ2NTE.#car-quality-tiers" target="_blank">car app quality guidelines</a> for details.
</p><p>To start with, across both Android Auto and for cars with Google built-in, we've made some exciting improvements for <a href="https://developer.android.com/training/cars/apps" target="_blank">Car App Library</a>:</p>
<ul><ul>
<li><b>The <a href="https://developer.android.com/training/cars/apps/weather" target="_blank">Weather</a> app category</b> has graduated from beta: any developer can now publish weather apps to production tracks on both Android Auto and cars with Google Built-in. Before you publish your app, check that it meets the <a href="https://developer.android.com/docs/quality-guidelines/car-app-quality?category=weather#app_categories" target="_blank">quality guidelines for weather apps</a>.</li></ul><br /><ul>
<li><b>Designing templated apps</b> is easier than ever with the <a href="https://goo.gle/figma-car-app-design-kit" target="_blank">Car App Templates Design Kit</a> we just published on Figma.</li></ul><br /><ul>
<li>Two new templates, the <span style="color: #0d904f; font-family: courier;">SectionedItemTemplate</span> and <span style="color: #0d904f; font-family: courier;">MediaPlaybackTemplate</span>, are now available in the Car App Library 1.8 alpha release for use on Android Auto. These templates are a great fit for building <a href="https://developer.android.com/training/cars/apps/media" target="_blank">templated media apps</a>, allowing for increased customization in layout and browsing structure.</li></ul><br /><ul>
<image><div style="text-align: center;"><img alt="example of sectioneditemtemplate on the left and mediaplaybacktemplate on the right" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCyBStVeMjLLWDqOGeggueFCuk5MhIMMV5Jxnu7jaWh4bNT6u1jdd6oqG0o3dUNgbkPT3F4WJh6iDqJmNvrUpTXMy0806nnykCU-eQbY1wZ3PNdFYnUDOQkaMWqqHdZlj7ltBh_Z17iiprovpMRDnLnCRllAJ1VR6KpBeyENdEDkgtryw5_iJ7Of7qKZQ/s16000/sectioneditemtemplate-mediaitemtemplate-android-auto-google-io.png" /></div></image><br />
</ul></ul>
<p>On Android Auto, many new app categories and capabilities are now in beta:</p>
<ul><ul>
<li>We are adding support for <b>Building media apps</b> with the Car App Library, enabling media app developers to build both richer and more complete experiences that users are used to on their phones. During beta, developers can build and publish media apps built using the Car App Library to internal testing and closed testing tracks. You can also <a href="https://goo.gle/Media-Comms-EAP" target="_blank">express interest in being an early access partner</a> to publish to production while the category is in beta. See <a href="https://developer.android.com/training/cars/apps/media" target="_blank">Build a templated media app</a> to learn more and get started.</li></ul><br /><ul>
<li><b>The <a href="http://developer.android.com/training/cars/communications" target="_blank">communications</a> category</b> is in beta. We've simplified calling integration for calling apps by utilizing the <a href="https://developer.android.com/reference/androidx/core/telecom/CallsManager" target="_blank"><span style="font-family: courier;">CallsManager</span> Jetpack API</a>. Together with the templates provided by the Car App Library, this enables communications apps to build features like full message history, upcoming meetings list, rich in-call views, and more. During beta, developers can build and publish communications apps to internal testing and closed testing tracks. You can also <a href="http://goo.gle/Media-Comms-EAP" target="_blank">express interest in being an early access partner</a> to publish to production while the category is in beta.</li></ul><br /><ul>
<li><b>Games</b> are now supported in Android Auto, while parked, on phones running Android 15 and above. You can already find some popular titles like Angry Birds 2, Farm Heroes Saga, Candy Crush Soda Saga and Beach Buggy Racing 2. To add support for Android Auto to your own app, see <a href="https://developer.android.com/training/cars/parked/games" target="_blank">Build games for cars</a> and <a href="https://developer.android.com/training/cars/parked/auto" target="_blank">Add support for Android Auto to your parked app</a>. The Games category is in Beta and developers can publish games to internal testing and closed testing tracks. You can also <a href="http://goo.gle/Games-EAP" target="_blank">express interest in being an early access partner</a> to publish to production while the category is in beta.</li></ul><br /><ul>
</ul></ul>
<p>Finally, we have further simplified building, testing and distribution experience for developers building apps for Android Automotive OS cars with Google built-in:</p>
<ul><ul>
<li>Games Category now in Beta for Google Built-In, allowing developers to distribute their adaptive games to cars. You can <a href="http://goo.gle/Games-EAP" target="_blank">express interest to release the production track</a>. <b><a href="https://developer.android.com/training/cars/platforms/automotive-os/google-play/google-services#pgs" target="_blank">Google Play Games Services</a></b> (v2) are now available on Cars with Google built-in, enabling seamless login flows, cross device save states, and more. <a href="https://developer.android.com/games/pgs/start" target="_blank">Get started with Google Play Games Services</a> to learn more.</li></ul><br /><ul>
<li><b>Distribution through Google Play</b> is more flexible than ever. It’s now possible for apps in the <a href="https://developer.android.com/training/cars/parked" target="_blank">parked categories</a> to distribute in the same APK or App Bundle to cars with Google built-in as to phones, including through the mobile release track. Learn more on how to <a href="https://developer.android.com/training/cars/distribute#choose-track-aaos" target="_blank">Distribute to cars</a>.</li></ul><br /><ul>
<li><b><a href="https://developer.android.com/training/cars/testing/aaos-on-pixel" target="_blank">Android Automotive OS on Pixel Tablet</a></b> is now generally available, giving you a physical device option for testing Android Automotive OS apps without buying or renting a car. Additionally, the most recent system images include support for acting as an Android Auto receiver, meaning you can use the same device to test both your app’s experience on Android Auto and Android Automotive OS. <a href="http://goo.gle/Tablet-AAOS" target="_blank">Apply for access to these images</a>.</li>
</ul></ul>
<h2><span style="font-size: x-large;">The road ahead</span></h2>
<p>You can look forward to more updates later this year, including:</p>
<ul><ul>
<li><b>Video apps</b> will be supported on Android Auto, starting with phones running Android 16 on select compatible cars. If your app is already adaptive, enabling your app experience while parked only requires minimal steps to distribute to cars.</li></ul><br /><ul>
<li>For Android Automotive OS cars running Android 14+ with Google built-in, we are working with car manufacturers to add additional app compatibility, to enable thousands of adaptive mobile apps in the next phase of the <b><a href="https://developer.android.com/training/cars/car-ready-mobile-apps" target="_blank">Car Ready Mobile Apps Program</a></b>.</li></ul><br /><ul>
<li><b>Updated design documentation</b> that visualizes car app quality guidelines and integration paths to simplify designing your app for cars.</li></ul><br /><ul>
<li>Google Play Services for cars with Google built-in are expanding to bring them on-par with mobile, including:</li><ul>
a. <b>Passkeys and Credential Manager</b> APIs for a more seamless user sign-in experience.</ul><ul>
b. <b>Quick Share</b>, which will enable easy cross-device sharing from phone to car.</ul></ul><br /><ul>
<li><b>Audio while driving for video apps</b>: For cars with Google built-in, we're working with OEMs to enable audio-only listening for video apps while driving. <a href="http://goo.gle/440dHqw" target="_blank">Sign up to express interest in participating in the early access program</a>.If you’d like to prepare for this feature’s general availability, you can work through the<a href="https://developer.android.com/codelabs/audio-while-driving" target="_blank"> audio while driving codelab</a> or check out the <a href="https://developer.android.com/training/cars/parked/video" target="_blank">Build video apps for Android Automotive OS</a> page</li></ul><br /><ul>
<li><b>Firebase Test Lab</b> is adding Android Automotive OS devices to its device catalog, making it possible to test on real car hardware without needing to buy or rent a car. <a href="http://goo.gle/Firebase-for-cars" target="_blank">Sign up to express interest in becoming an early access partner</a>.</li></ul><br /><ul>
<li><b><a href="https://play.google.com/console/about/pre-launchreports/" target="_blank">Pre-launch reports</a> for Android Automotive OS</b> are coming soon to the Play Console, helping you ensure app quality before distributing your app to cars.</li>
</ul></ul>
<p>Be sure to keep up to date through goo.gle/cars-whats-new on these features and more as we continuously invest in the future of Android in the car. Stay tuned for more resources to help you build innovative and engaging experiences for drivers and passengers.</p>
<p><b>Ready to publish your car app?</b> Check our <a href="https://developer.android.com/training/cars/distribute?_gl=1*7rj7q0*_up*MQ..*_ga*OTA1MjQ0MjkuMTc0Njc5NDM3NQ..*_ga_6HH9YJMN9M*czE3NDY3OTQzNzUkbzEkZzAkdDE3NDY3OTUyMTUkajAkbDAkaDEwODQ1MjQ2NTE." target="_blank">guidance for distributing to cars</a>.</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-74650059279757342492025-05-20T10:55:00.000-07:002025-05-28T15:54:42.540-07:00I/O 2025: What's new in Google Play<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgbUsWApjG8FwIqgCf8yKKJPi5tzzhLbWPZ0J1TmGzI3cNdC3HRzD4wy0WI2a-QGNdsQgfelVe4_s5TCnY7xsgWtySClo3rvGgT0OAuSu8kOT-1ROX1DOHfJl_1npzLTXUnTpM3alzhUOkYmHWL8c-KRqVEZ498rsNh6ziidsQtrgBnKqXdz8HKs4CbuE/s1600/google-io-whats-new-in-play-meta.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgbUsWApjG8FwIqgCf8yKKJPi5tzzhLbWPZ0J1TmGzI3cNdC3HRzD4wy0WI2a-QGNdsQgfelVe4_s5TCnY7xsgWtySClo3rvGgT0OAuSu8kOT-1ROX1DOHfJl_1npzLTXUnTpM3alzhUOkYmHWL8c-KRqVEZ498rsNh6ziidsQtrgBnKqXdz8HKs4CbuE/s1600/google-io-whats-new-in-play-meta.png" style="display: none;" />
<em>Posted by Paul Feng, VP of Product Management, Google Play</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwq-OmkcDbU1aI2R5K-5G_buGNTeuXUiJAfBFZUOLRhdxzLz2LdQWPE76VoouXbOP-qVAj2lDeD15bxlJ0dpzBIwc_Sti2gyBVCkXE6ZQ4mtr6qqhrPE10zgf3MDWFiK4wIpuf1wPb8ZOGUtfktLA2e3ySfZi8deGcwezsdKkgimM9jYY_WOu9y8Y7Q20/s1600/google-io-whats-new-in-play.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwq-OmkcDbU1aI2R5K-5G_buGNTeuXUiJAfBFZUOLRhdxzLz2LdQWPE76VoouXbOP-qVAj2lDeD15bxlJ0dpzBIwc_Sti2gyBVCkXE6ZQ4mtr6qqhrPE10zgf3MDWFiK4wIpuf1wPb8ZOGUtfktLA2e3ySfZi8deGcwezsdKkgimM9jYY_WOu9y8Y7Q20/s1600/google-io-whats-new-in-play.png" /></a>
<p>At Google Play, we're dedicated to helping people discover experiences they'll love, while empowering developers like you to bring your ideas to life and build successful businesses.</p>
<p>At this year’s Google I/O, we unveiled the latest ways we’re empowering your success with new tools that provide robust testing and actionable insights. We also showcased how we’re continuing to build a content-rich Play Store that fosters repeat engagement alongside new subscription capabilities that streamline checkout and reduce churn.</p>
<p>Check out all exciting developments from I/O that will help you grow your business on Google Play. Continue reading or watch the session to dive in.</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="POUqfDBtRbg" width="100%" height="413" src="https://www.youtube.com/embed/POUqfDBtRbg"></iframe>
<h2><span style="font-size: x-large;">Helping you succeed every step of the way</span></h2>
<p>Last month, we introduced our <a href="https://android-developers.googleblog.com/2025/04/play-console-insights.html" target="_blank">latest Play Console updates</a> focused on improving quality and performance. A redesigned app dashboard centered around four developer objectives (Test and release, Monitor and improve, Grow users, Monetize) and new Android vitals metrics offer quick insights and actionable suggestions to proactively improve the user experience.</p>
<h3><span style="font-size: large;">Get more actionable insights with new Play Console overview pages</span></h3>
<p>Building on these updates, we've launched dedicated overview pages for two developer objectives: Test and release and Monitor and improve. These new pages bring together more objective-related metrics, relevant features, and a "Take action" section with contextual, dynamic advice. Overview pages for Grow and Monetize will be coming soon.</p>
<h3><span style="font-size: large;">Halt fully-rolled out releases when needed</span></h3>
<p>Historically, a release at 100% live meant there was no turning back, leaving users stuck with a flawed version until a new update rolled out. Soon, you'll be able to halt fully-live releases, through Play Console and the Publishing API to stop the distribution of problematic versions to new users.</p>
<image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjanjLfiK0VD0n8uZB8ZIid3_AIcnt9Xf0eCn-v9D3HaBBjClnaBteJLf68q56CRsoxilZKes0kFDjuzmCpF_xqsYwyZ1r8SMPhjcaGNgc7Tx8UAtrxKFFLKovZEhL4xREUO-hDqUAci-uw9lFrEfvWYeECzkkVHExD1aHg8pe5KXjruTez3i3FdKF6Wkk/s1600/PlayBlogAssets_Halt_rollout_1600x928.gif"><img alt="a moving screen grab of release manager in Play Console" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjanjLfiK0VD0n8uZB8ZIid3_AIcnt9Xf0eCn-v9D3HaBBjClnaBteJLf68q56CRsoxilZKes0kFDjuzmCpF_xqsYwyZ1r8SMPhjcaGNgc7Tx8UAtrxKFFLKovZEhL4xREUO-hDqUAci-uw9lFrEfvWYeECzkkVHExD1aHg8pe5KXjruTez3i3FdKF6Wkk/s1600/PlayBlogAssets_Halt_rollout_1600x928.gif" /></a></div><imgcaption><center><em>You'll soon be able to halt fully live releases directly from Play Console and the Publishing API, stopping the distribution of problematic versions to new users.</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Optimize your store listings with better management tools and metrics</span></h3>
<p>We launched two tools to enhance your store listings. The asset library makes it easy to upload, edit, and view your visual assets. Upload them from Google Drive, organize with tags, and crop for repurposing. And with new open metrics, you <a href="https://support.google.com/googleplay/android-developer/answer/9859173?hl=en&sjid=14407705712869133246-EU#zippy=%2Cmetrics" target="_blank">gain deeper insights</a> into listing performance so you can better understand how they attract, engage, and re-engage users.</p>
<div id="unlocking-discovery-engagement"><a href="#unlocking-discovery-engagement"></a></div>
<h3><span style="font-size: large;">Stay ahead of threats with the Play Integrity API</span></h3>
<p>We're committed to robust security and preventing abuse so you can thrive on Play’s trusted platform. The <a href="https://developer.android.com/google/play/integrity" target="_blank">Play Integrity API</a> continuously evolves to combat emerging threats, with these recent enhancements:</p>
<ul><ul>
<li><b>Stronger abuse detection for all developers</b> that leverages the latest Android hardware-security with no developer effort required.</li>
<li><b>Device security update checks</b> to safeguard your app’s sensitive actions like transfers or data access.</li>
<li><b>Public beta for device recall</b> which enables you to detect if a device is being reused for abuse or repeated actions, even after a device reset. You can <a href="https://goo.gle/play-device-recall" target="_blank">express interest in this beta</a>.</li>
</ul></ul>
<h2><span style="font-size: x-large;">Unlocking more discovery and engagement for your apps and its content</span></h2>
<p>Last year, we <a href="https://android-developers.googleblog.com/2024/05/io-24-whats-new-in-google-play.html" target="_blank">shared our vision</a> for a content-rich Google Play that has already delivered strong results. Year-over-year, Apps Home has seen over a 25% increase in average monthly visitors with apps seeing a 10% growth in acquisitions and double-digit growth in app spend for those monetizing on Google Play. Building on that vision, we're introducing even more updates to elevate your discovery and engagement, both on and off the store.</p>
<p>For example, <b>curated spaces</b>, launched last year, celebrate seasonal interests like football (soccer) in Brazil and cricket in India, and evergreen interests like comics in Japan. By adding daily content—match highlights, promotions, and editorial articles directly on the Apps Home—these spaces foster discovery and engagement. Curated spaces are a hit with over 920,000 highly engaged users in Japan returning to the comics space monthly. Building on this momentum, we are expanding to more locations and categories this year.</p>
<image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVUyGVGKxjhwCdG89ASNI2eI2naUmMZfe2XuGYurkXybbxrPIhRnLVaMN73kNfHsiKxeLQYvDjvBQlQADAESZ47cWxoflhlvVyio2YNI5SnNLj0-VeSSHOkI2IW4Mi6bE4LgBJnHFrMhxEDQuTHdZLpulIvTPxVFHcEKPD-aA3_CS45qeOBqGtCeNV4zU/s16000/curated-spaces-new-in-play-google-io.gif"><img alt="a moving image of three mobile devices displaying curated spaces on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVUyGVGKxjhwCdG89ASNI2eI2naUmMZfe2XuGYurkXybbxrPIhRnLVaMN73kNfHsiKxeLQYvDjvBQlQADAESZ47cWxoflhlvVyio2YNI5SnNLj0-VeSSHOkI2IW4Mi6bE4LgBJnHFrMhxEDQuTHdZLpulIvTPxVFHcEKPD-aA3_CS45qeOBqGtCeNV4zU/s16000/curated-spaces-new-in-play-google-io.gif" /></a></div><imgcaption><center><em>Our curated spaces add daily content to foster repeat discovery and engagement.</em></center></imgcaption></image><br />
<p>We're launching <b>new topic browse pages</b> that feature timely, relevant, and visually engaging content. Users can find them throughout the Store, including Apps Home, store listing pages, and search. These pages debut this month in the US with Media & Entertainment, showcasing over 100,000 shows, movies, and select sports. More localized topic pages will roll out globally later this year.</p>
<image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyv6pZ9ZiAmQL9NkPKGZwm_tgWsCejXqgMqit7InZX9SYPbMppYCPBA3FeG6ez-mdAVS4RZXJ8aQG8olw_PDi7_KVi75RM9CD4SIrcQRLRstLJkokKURNoZGXz9kOLWaq98deFZhH0vVyAF9xiqsZEZXZXH5ryrg9786xZ-vRzMcXYUTV3TtIZeIaDSL8/w640-h590/new-browse-pages-media-entertainment-new-in-play-google-io.gif"><img alt="a moving image of two mobile devices displaying new browse pages for media and entertainment in the Play Store" border="0" height="590" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyv6pZ9ZiAmQL9NkPKGZwm_tgWsCejXqgMqit7InZX9SYPbMppYCPBA3FeG6ez-mdAVS4RZXJ8aQG8olw_PDi7_KVi75RM9CD4SIrcQRLRstLJkokKURNoZGXz9kOLWaq98deFZhH0vVyAF9xiqsZEZXZXH5ryrg9786xZ-vRzMcXYUTV3TtIZeIaDSL8/w640-h590/new-browse-pages-media-entertainment-new-in-play-google-io.gif" width="65%" /></a></div><imgcaption><center><em>New topic browse pages for media and entertainment are rolling out this month in the US.</em></center></imgcaption></image><br />
<p>We’re expanding <b>Where to Watch</b> to more markets, including the UK, Korea, Indonesia, and Mexico, to help users find and deep-link directly into their subscribed apps for movies and TV. Since launching in the US in November 2024, we've seen promising results: People who view app content through Where to Watch return to Play more frequently and increase their content search activity by 30%.</p>
<p>We're also enhancing how your content is displayed on the Play Store. Starting this July, all app developers can add a <b>hero content carousel</b> and a <b>YouTube playlist carousel</b> to their store listings. These formats will help showcase your best content and drive greater user engagement and discovery.</p>
<p>For apps best experienced through sound, we're launching <b>audio samples</b> on the Apps Home. A simple tap offers users a brief escape into your audio content. In early testing, audio samples made users 3x more likely to install or open an app! This feature is now available for all Health & Wellness app developers with users in the US, with more categories and markets coming soon. You can <a href="https://goo.gle/play-audio-samples" target="_blank">express your interest in promoting audio content</a>.</p>
<image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNeLmRYs6g8B9gGtuXJ9WJjOXWo62idQ9V-F8bqqm1k_29Yiwamy1faBLDd0SJRC0B6HYCiY11iWJjfYZoO7qn4UJY4zU4ckStiG3iSvAXqV76rHpVJj0mkTYs73fyjrOj3SMIkVOU77NLwWx2D-VFO-E9_0qPen1U2owcKq_8jt1Zth5NbX0nnBL4StU/s16000/curated-spaces-new-in-play-google-io.gif"><img alt="a moving image of three mobile devices displaying how content is displayed on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNeLmRYs6g8B9gGtuXJ9WJjOXWo62idQ9V-F8bqqm1k_29Yiwamy1faBLDd0SJRC0B6HYCiY11iWJjfYZoO7qn4UJY4zU4ckStiG3iSvAXqV76rHpVJj0mkTYs73fyjrOj3SMIkVOU77NLwWx2D-VFO-E9_0qPen1U2owcKq_8jt1Zth5NbX0nnBL4StU/s16000/curated-spaces-new-in-play-google-io.gif" /></a></div><imgcaption><center><em>We're enhancing how your content is displayed on the Play Store, </em></center><center><em>offering new ways to showcase your app and drive user engagement.</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Helping you take advantage of deeper engagement on Play, on and off the Store</span></h2>
<p>Last year, we introduced <b><a href="https://goo.gle/play-engagesdk" target="_blank">Engage SDK</a></b>, a unified solution to deliver personalized content and guide users to relevant in-app experiences. Integrating it unlocks surfaces like Collections, our immersive full-screen experience bringing content directly to the user's home screen.</p>
<p>We're rolling out updates to expand your content’s reach even further:</p>
<ul><ul>
<li><b>Engage SDK content is coming to the Play Store this summer</b>, in addition to existing spaces like Collections and Entertainment Space on select Android tablets.</li>
<li><b>New content categories</b> are now supported, starting today with Travel.</li>
<li><b>Collections are rolling out globally</b> to Google Play markets starting today, including Brazil, India, Indonesia, Japan, and Mexico.</li>
</ul></ul>
<p>Integrate with Engage SDK today to take advantage of this new expansion and boost re-engagement. <a href="https://developer.android.com/codelabs/engage-sdk-codelab" target="_blank">Try our codelab</a> to test the ease of publishing content with Engage SDK and <a href="https://support.google.com/googleplay/contact/Engage_SDK_Developer_Preview" target="_blank">express interest in the developer preview</a>.</p>
<image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj14hdv5CphRLJX15uRNT8SQjHZRoHji5s4_sFw04O1PYU2hMwz2vkiDFg34SPDOw2ybQTuz50AWG9BGKdFu5-ZOSGQXLE_gZTYdRmYJ2AwzOvJ7YavND3e7O3s7EZkK44ZDedeZsbKWV9qU41kCOEGseHL4crjuHgANYLjJd8C_Si6N6TR43k4GDyjmWk/s16000/collections-new-in-play.png"><img alt="a mobile device displaying Collections on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj14hdv5CphRLJX15uRNT8SQjHZRoHji5s4_sFw04O1PYU2hMwz2vkiDFg34SPDOw2ybQTuz50AWG9BGKdFu5-ZOSGQXLE_gZTYdRmYJ2AwzOvJ7YavND3e7O3s7EZkK44ZDedeZsbKWV9qU41kCOEGseHL4crjuHgANYLjJd8C_Si6N6TR43k4GDyjmWk/s16000/collections-new-in-play.png" width="30%" /></a></div><imgcaption><center><em>Engage SDK now supports Collections for Travel. </em></center><center><em>Users can find timely itineraries and recent searches, all in one convenient place.</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Maximizing your revenue with subscriptions enhancements</span></h2>
<p>With over a quarter-billion subscriptions, Google Play is one of the world's largest subscriptions platforms. We're committed to helping you turn engaged users into revenue growth by continually enhancing our tools to meet evolving customer needs.</p>
<p>To streamline your purchase flow, we’re introducing <b>multi-product checkout for subscriptions</b>. This lets you sell subscription add-ons alongside base subscriptions, all under a single, aligned payment schedule. Users get a simplified experience with one price and one transaction, while you gain more control over how subscribers upgrade, downgrade, or manage their add-ons.</p>
<image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRfzFpLHDjXsQR7XXv0d1a8QIs8B_ju-yh_5YTGtKat8rysyE3arNBRTn6eLaTQMOF2ZhyphenhyphentnsKM-Q5uJxyjBuUf61pDyk-OhLjhlaFe2K_K81PPwhqzZLecXAZe1EkkCUCZearLxQt_4YCLoL6mqs4hfRtC3dnv5eOY8vX4UYbtTfeokKt9Y1Lh1HFmZM/s16000/subscription-enhancement-new-in-play-google-io.png"><img alt="a mobile devices displaying multi-checkout where a base subscription plus add ons in shown a singluar transaction on the Play Store" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRfzFpLHDjXsQR7XXv0d1a8QIs8B_ju-yh_5YTGtKat8rysyE3arNBRTn6eLaTQMOF2ZhyphenhyphentnsKM-Q5uJxyjBuUf61pDyk-OhLjhlaFe2K_K81PPwhqzZLecXAZe1EkkCUCZearLxQt_4YCLoL6mqs4hfRtC3dnv5eOY8vX4UYbtTfeokKt9Y1Lh1HFmZM/s16000/subscription-enhancement-new-in-play-google-io.png" width="45%" /></a></div><imgcaption><center><em>You can now sell base subscriptions and add-ons together </em></center><center><em>in a single, streamlined transaction.</em></center></imgcaption></image><br />
<p>To help you retain more of your subscribers, we’re now <b>showcasing subscription benefits in more places across Play</b> – including the Subscriptions Center, in reminder emails, and during purchase and cancellation flows. This increased visibility has already reduced voluntary churn by 2%. Be sure to enter your subscription benefits in Play Console so you can leverage this powerful new capability.</p>
<image><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihIu0N3bEzQ5UJzeTa3ze-ClkE4f3z6S5vfWVF26wQsihl7mCtP1X8ubD6j2AxyuMrfgwNearReuDvBw99yzAEleG8ZurG9bqk8vS3-0qmF2ighdxGbIzOzNEYSxTttF8YYF7_aeiY_N5blfLLR0hC7d22MZ3AEuVaXdcfXDQXCSF18WhOweWrYncGglo/s1600/IO25_PAKEY_LS_067-What%27s-new-in-Google-Play-reminders2.png"><img alt="five mobile devices showing subscriptions in Play" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihIu0N3bEzQ5UJzeTa3ze-ClkE4f3z6S5vfWVF26wQsihl7mCtP1X8ubD6j2AxyuMrfgwNearReuDvBw99yzAEleG8ZurG9bqk8vS3-0qmF2ighdxGbIzOzNEYSxTttF8YYF7_aeiY_N5blfLLR0hC7d22MZ3AEuVaXdcfXDQXCSF18WhOweWrYncGglo/s16000/IO25_PAKEY_LS_067-What's-new-in-Google-Play-reminders2.png" /></a></div><imgcaption><center><em>To help reduce voluntary churn, we’re showcasing your subscriptions benefits across Play.
</em></center></imgcaption></image><br />
<p>Reducing involuntary churn is a key factor in optimizing your revenue. When payment methods unexpectedly decline, users might unintentionally cancel. Now, instead of immediate cancellation, you can now choose a <b>grace period</b> (up to 30 days) or an <b>account hold</b> (up to 60 days). Developers who increased the decline recovery period – from 30 to 60 days – saw an average 10% reduction in involuntary churn for renewals.</p>
<p>On top of this, we're expanding <b>our commitment to get more buyers ready for purchases</b> throughout their entire journey. This includes prompting users to set up payment methods and verification right at device setup. After setup, we've integrated prompts into highly visible areas like the Play and Google account menus. And as always, we’re continuously enabling payments in more markets and expanding payment options. Plus, our AI models now help optimize in-app transactions by suggesting the right payment method at the right time, and we're bringing buyers back with effective cart abandonment reminders.</p>
<h2><span style="font-size: x-large;">Grow your business on Google Play</span></h2>
<p>Our latest updates reinforce our commitment to fostering a thriving Google Play ecosystem. From enhanced discovery and robust tools to new monetization avenues, we're empowering you to innovate and grow. We're excited for the future we're building together and encourage you to use these new capabilities to create even more impactful experiences. Thank you for being an essential part of the Google Play community.</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br /><p></p><p></p><p></p><p></p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-41382773486629451082025-05-20T10:54:00.000-07:002025-05-20T12:01:02.697-07:00In-App Ratings and Reviews for TV<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI8u5ef64SB3dtNYxWNaem2LQHIQ6T22U2ZMN1i_GSSxJEYSkjzI4YU4dhRKq6Vd35DBr05KBbUNksNEYKQsoLu2ue1vPqtPm4uyTVV2wYJhnm3gMZki1AVtUniuyi7G1KpkBDkTfVpn3ZvgJi3oavdrDdOHV9NN2iLCWRoBt2DkDEWLrCcBqDZa7Cv64/s1600/In-App%20Ratings%20and%20Reviews%20for%20TV.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgI8u5ef64SB3dtNYxWNaem2LQHIQ6T22U2ZMN1i_GSSxJEYSkjzI4YU4dhRKq6Vd35DBr05KBbUNksNEYKQsoLu2ue1vPqtPm4uyTVV2wYJhnm3gMZki1AVtUniuyi7G1KpkBDkTfVpn3ZvgJi3oavdrDdOHV9NN2iLCWRoBt2DkDEWLrCcBqDZa7Cv64/s1600/In-App%20Ratings%20and%20Reviews%20for%20TV.png" style="display: none;" />
<em>Posted by Paul Lammertsma – Developer Relations Engineer</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Mu2hOT6Ypnj7GLjRXlD0XgJZuVsNNY2KoSOchckvixh8dx70BhizYxxtH2hrjFwUHJhobtjhTz_cBCZJnk-56pn6NbAiI-dOhC6lqgTf5Ug40AKpOi41sOyIJeqoX2H3At6NHi4BPQx9jRvo8nzv_-DgWQopHlkJZFncNMrzozio0cJq0GpUsxVgxdQ/s1600/O25-BHero-Android-8.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Mu2hOT6Ypnj7GLjRXlD0XgJZuVsNNY2KoSOchckvixh8dx70BhizYxxtH2hrjFwUHJhobtjhTz_cBCZJnk-56pn6NbAiI-dOhC6lqgTf5Ug40AKpOi41sOyIJeqoX2H3At6NHi4BPQx9jRvo8nzv_-DgWQopHlkJZFncNMrzozio0cJq0GpUsxVgxdQ/s1600/O25-BHero-Android-8.png" /></a>
<p>Ratings and reviews are essential for developers, offering quantitative and qualitative feedback on user experiences. In 2022, we enhanced the granularity of this feedback by <a href="https://android-developers.googleblog.com/2021/08/making-ratings-and-reviews-better-for.html" target="_blank">segmenting these insights by countries and form factors</a>.</p>
<p>Now, we're extending the In-App Ratings and Reviews API to TV to allow developers to prompt users for ratings and reviews directly from Google TV.</p>
<h2><span style="font-size: x-large;">Ratings and reviews on Google TV</span></h2>
<image><div style="text-align: center;"><img alt="Ratings and reviews entry point forJetStream sample app on TV" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSiCzDyh4d5xTdHAd7qvboZAdTu27jR7vyKNXHDD7RUZRzLOZ6xEDj9t1s_VbMguC8sAS4RXSI188wYxfPhYjGUnY75EfbGdadUIUBDK_s0R7F6VTm7XVyYkrYsXEskVCTHq5S6WB4Cu0T70fctp_bZCiy5-VMDe6UFt4XP5X4PdXnZU5r_OWbJ_KdQfw/s16000/JetStream%20App%20Rating%20Menu%20(1).png" /></div></image><br />
<p>Users can now see rating averages, browse reviews, and leave their own review directly from an app's store listing on Google TV.</p>
<image><div style="text-align: center;"><img alt="Ratings and written reviews input screen on TV" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiiuVwelcN726bFlMZfqEYdObhLFyVVnHbIfB-snHyLOqMtwUUOKq0yjy1j6ANxH8eTcpJtz4G23NENdrJKyl6cMkBKTccf9dxvXIafUgfVHhe_DOFuTM8Cd7yBoGIk3X1SGjybAaJXrikrPwQuZ4UvSSRbWoKAbuMZOn_DWnkenhuWOsimFTVWTIN1Z0/s16000/Apps%20Ratings%20-%20TV.png" /></div></image>
<p>Users can interact with in-app ratings and reviews on their TVs by doing the following:</p>
<ul><ul>
<li>Select ratings using the remote control D-pad.</li>
<li>Provide optional written reviews using Gboard’s on-screen voice input, or by easily typing from their phone.</li>
<li>Send mobile notifications to themselves to complete their TV app review directly on their phone.</li>
</ul></ul><br />
<image><div style="text-align: center;"><img alt="User instructions for submitting TV app ratings and reviews on mobile" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrCl8auQ-xpqFyC6pRATWehnwDlsKDjpA2aPj8YNltlGcxlen_zGj8Q29TMGLEc-eblYMMHp3wZCqnmShyphenhyphenzy2S2FTDXAdZAlYwsoC0hamJvbEm3VRJGrqvs6Wm0aaRqQg702WlPEe5su4fW0hovhBsFDUEi0UdtulpnPUc6E0KWb62j04fQ0SrJGC-TVs/s16000/Apps%20Ratings%20-%20Mobile.png" /></div></image><br />
<p>Additionally, users can leave reviews for other form factors directly from their phone by simply selecting the device chip when submitting an app rating or writing a review.</p>
<p>We've already seen a considerable lift in app ratings on TV since bringing these changes to Google TV, and now, we're making it possible for developers to trigger a ratings prompt as well.</p>
<p>Before we look at the integration, let's first carefully consider the best time to request a review prompt. First, identify optimal moments within your app to request user feedback, ensuring prompts appear only when the UI is idle to prevent interruption of ongoing content.</p>
<h2><span style="font-size: x-large;">In-App Review API</span></h2>
<p>Integrating the <a href="https://developer.android.com/guide/playcore/in-app-review" target="_blank">Google Play In-App Review API</a> is the same as on mobile and it's only a couple of method calls:</p>
<!--Kotlin--><div style="background: rgb(248, 248, 248); border: 0px; overflow: auto; width: auto;"><pre style="line-height: 125%; margin: 0px;"><span style="color: green; font-weight: bold;">val</span> manager = ReviewManagerFactory.create(context)
manager.requestReviewFlow().addOnCompleteListener { task ->
<span style="color: green; font-weight: bold;">if</span> (task.isSuccessful) {
<span style="color: #408080; font-style: italic;">// We got the ReviewInfo object</span>
<span style="color: green; font-weight: bold;">val</span> reviewInfo = task.result
manager.launchReviewFlow(activity, reviewInfo)
} <span style="color: green; font-weight: bold;">else</span> {
<span style="color: #408080; font-style: italic;">// There was some problem, log or handle the error code</span>
@ReviewErrorCode <span style="color: green; font-weight: bold;">val</span> reviewErrorCode =
(task.getException() <span style="color: green; font-weight: bold;">as</span> ReviewException).errorCode
}
}
</pre></div><br />
<p>First, invoke <span style="font-family: courier;"><a href="https://developer.android.com/reference/com/google/android/play/core/review/ReviewManager.html#requestReviewFlow()" target="_blank">requestReviewFlow()</a></span> to obtain a <span style="color: #0d904f; font-family: courier;">ReviewInfo</span> object which is used to launch the review flow. You must include an <span style="color: #0d904f; font-family: courier;"><a href="https://developers.google.com/android/reference/com/google/android/gms/tasks/Task#addOnCompleteListener%28com.google.android.gms.tasks.OnCompleteListener%3CTResult%3E%29" target="_blank">addOnCompleteListener()</a></span> not just to obtain the <span style="color: #0d904f; font-family: courier;">ReviewInfo</span> object, but also to monitor for any problems triggering this flow, such as the unavailability of Google Play on the device. Note that <span style="color: #0d904f; font-family: courier;">ReviewInfo</span> does not offer any insights on whether or not a prompt appeared or which action the user took if a prompt did appear.</p>
<p>The challenge is to identify <i>when</i> to trigger <span style="font-family: courier;"><a href="https://developer.android.com/reference/com/google/android/play/core/review/ReviewManager.html#launchReviewFlow(android.app.Activity,%20com.google.android.play.core.review.ReviewInfo)" target="_blank">launchReviewFlow()</a></span>. Track user actions—identifying successful journeys and points where users encounter issues—so you can be confident they had a delightful experience in your app.</p>
<p>For this method, you may optionally also include an <span style="color: #0d904f; font-family: courier;">addOnCompleteListener()</span> to ensure it resumes when the returned task is completed.</p>
<p>Note that due to throttling of how often users are presented with this prompt, there are no guarantees that the ratings dialog will appear when requesting to start this flow. For best practices, check <a href="https://developer.android.com/guide/playcore/in-app-review#when-to-request" target="_blank">this guide on when to request an in-app review</a>.</p>
<h2><span style="font-size: x-large;">Get started with In-App Reviews on Google TV</span></h2>
<p>You can get a head start today by following these steps:</p>
<ul><ol>
<li>Identify <i>successful journeys</i> for users, like finishing a movie or TV show season.</li>
<li>Identify poor experiences that should be avoided, like buffering or playback errors.</li>
<li>Integrate the <a href="https://developer.android.com/guide/playcore/in-app-review" target="_blank">Google Play In-App Review API</a> to trigger review requests at optimal moments within the user journey.</li>
<li>Test your integration by following <a href="https://developer.android.com/guide/playcore/in-app-review/test" target="_blank">the testing guide</a>.</li>
<li>Publish your app and continuously monitor <a href="https://play.google.com/console/app/user-feedback/ratings-breakdown?dimension=deviceType&ratingsThreshold=ANY_NUMBER&timeRange=LAST_TWENTY_EIGHT_DAYS" target="_blank">your ratings by device type</a> in the Play Console.</li>
</ol></ul>
<p>We're confident this integration enables you to elevate your Google TV app ratings and empowers your users to share valuable feedback.</p>
<image><div style="text-align: center;"><img alt="Play Console Ratings graphic" border="0" height="179" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiogE70JfWQuMkET86-taW7P4o7j_FKD_ylQuMtK5x950waXHyq7B6XaMmElDguXeGy2Ea36euRH0cGNaJjvAJ0ZSYOpFDiGkbmWd6FDZV0j2wniSvc2n8cHir46hCXqLgMX18Nyuj6hkapfKsLAgbL08WXte4jgdxzycjyoQv-RLafwxiVTkc1nMGmAf8/s1600/Play%20Console%20Ratings%20Icon.png" width="20%" /></div></image>
<h3><span style="font-size: large;">Resources</span></h3>
<ul><ul>
<li><a href="https://developer.android.com/guide/playcore/in-app-review" target="_blank">Google Play In-App Review API</a></li>
<li><a href="https://play.google.com/console/app/user-feedback/ratings-breakdown?dimension=deviceType&ratingsThreshold=ANY_NUMBER&timeRange=LAST_TWENTY_EIGHT_DAYS" target="_blank">App ratings by device type</a> in your Play Console</li>
</ul></ul>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p>Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0tag:blogger.com,1999:blog-6755709643044947179.post-13579673315525457712025-05-20T10:53:00.000-07:002025-05-29T10:12:48.493-07:00Google I/O 2025: What’s new in Android development tools<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAOpioaQdivubxYGDYFmFGdwUgSL93ZOD89pFnWFDBEd5xJnbI1yVw4H-lk1HPMVb_hnf-L8JSSLFwawVGGWXSsqfY34ZsIqZAYdLFjbjLSk77LMpA1UuSt3IVJMTc7W0QNlYW7jY2bhyphenhyphenH6mTBRH34JKQ4wUpkM7IhxIPDBgmUOuaXXpkYinDEXndvUIc/s1600/android-development-tools-google-io.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAOpioaQdivubxYGDYFmFGdwUgSL93ZOD89pFnWFDBEd5xJnbI1yVw4H-lk1HPMVb_hnf-L8JSSLFwawVGGWXSsqfY34ZsIqZAYdLFjbjLSk77LMpA1UuSt3IVJMTc7W0QNlYW7jY2bhyphenhyphenH6mTBRH34JKQ4wUpkM7IhxIPDBgmUOuaXXpkYinDEXndvUIc/s1600/android-development-tools-google-io.png" style="display: none;" />
<em>Posted by <a href="https://twitter.com/makuchaku" target="_blank">Mayank Jain</a> – Product Manager, Android Studio</em>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPmG2XrQ2m8_zpYT6Ryy1FkM4p3KWEGgwSlmLuL7AKfDBXjgfPodSwDK4J4EMNK5Z04DOHUGeRZB6HzV9B66133xnCxVHCfe0edzyzuvZPcc9Dmmh-gbX5NdQ8qDcMcYKUNz-YKe8VuVJ70nY_A7CbwaX_gUZMVDtQxiU4v4iDd2CorgJjj1b1jiqMDHE/s1600/O25-BHero-Android-8.png"><img border="0" data-original-height="800" data-original-width="100%" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPmG2XrQ2m8_zpYT6Ryy1FkM4p3KWEGgwSlmLuL7AKfDBXjgfPodSwDK4J4EMNK5Z04DOHUGeRZB6HzV9B66133xnCxVHCfe0edzyzuvZPcc9Dmmh-gbX5NdQ8qDcMcYKUNz-YKe8VuVJ70nY_A7CbwaX_gUZMVDtQxiU4v4iDd2CorgJjj1b1jiqMDHE/s1600/O25-BHero-Android-8.png" /></a>
<p>Android Studio continues to advance Android development by empowering developers to build better app experiences, faster. Our focus has been on improving AI-driven functionality with Gemini, streamlining UI creation and testing, and helping you future-proof apps for the evolving Android ecosystem. These innovations accelerate development cycles, improve app quality, and help you stay ahead in the fast-paced world of mobile development.</p>
<p>You can check out the <a href="https://io.google/2025/explore/pa-keynote-5" target="_blank">What’s new in Android Developer Tools</a> session at Google I/O 2025 to see some of the new features in action or better yet, try them out yourself by downloading <a href="https://developer.android.com/studio/preview" target="_blank">Android Studio Narwhal Feature Drop (2025.2.1) in the preview release channel</a>. Here’s a look at our latest developments:</p>
<iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="KXKP2tDPW4Y" width="100%" height="413" src="https://www.youtube.com/embed/KXKP2tDPW4Y"></iframe>
<h2><span style="font-size: x-large;">Get the latest Gemini 2.5 Pro model in Android Studio</span></h2>
<p>The power of artificial intelligence through Gemini is now deeply integrated into Android Studio, helping you at all stages of Android app development. Now <b>with access to Gemini 2.5 Pro</b>, we're continuing to look for new ways to use AI to supercharge Android development — and help you build better app experiences, faster.</p>
<h3><span style="font-size: large;">Journeys for Android Studio</span></h3>
<p>We’re also introducing agentic AI with Gemini in Android Studio.Testing your app is now much easier when you create journeys - just describe the actions and assertions in natural language for the user journeys you want to test, and Gemini performs the tests for you. Creating journeys lets you test your app’s critical user journeys across various devices without writing extensive code. You can then run these tests on local physical or virtual Android devices to validate that the test worked as intended by reviewing detailed results directly within the IDE. Although the feature is experimental, the goal is to increase the speed that you can ship high-quality code, while significantly reducing the amount of time you spend manually testing, validating, or reproducing issues.</p>
<image><div style="text-align: center;"><img alt="moving image of Gemini testing an app in Android Studio" border="0" height="396" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmLs3FPYZ7Dd3NwG70D-o-y9MJ4RBqHw4s5fDBTuoP085m57llJoOcJq25u1bBguqtUcsSavNpuPP7P3QJ9m7jbOuqoD5-CJjEKMWMRr1sS4-SzMqh9C4StpFJyzl_2aXE16sdwpQfBaUd9ybQN3xursQIoJJDWO4RibWm5rJ8Va2DE5sGmPxQR_n4Fss/w640-h396/journeys-android-studio-google-io.gif" width="100%" /></div><imgcaption><center><em>Journeys for Android Studio uses Gemini to test your app.</em></center></imgcaption></image><br />
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/mP1tlIKK0R4" width="100%" youtube-src-id="mP1tlIKK0R4"></iframe><br />
<h3><span style="font-size: large;">Suggested fixes for crashes with Gemini</span></h3>
<p>The App Quality Insights panel has a great new feature. The crash insights now analyzes your app's source code referenced from the crash, and not only offers a comprehensive analysis and explanation of the crash, in some cases it even offers a source fix! With just a few clicks, you are able to review the changes, accept the code suggestions, and push the changes to your source control. Now you can determine the root cause of a crash and fix it much faster!</p>
<image><div style="text-align: center;"><img alt="screenshot of crash analysis with Gemini in Android Studio" border="0" height="327" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCqdLnKdLCdxf-yJ2_im4cD8rw-jfnjCHRdfEPbZY11R6n9yL2SM7KC8ojBiDYkNx43-EO1L4A5MT7YHTOqZoWDaCYcjPuTtO6V2RGACvZxDETYy3nJcTM1clvGZLJt1lxGKpej9If2FAKJS15wvE7gS43OZATP0RJbsisFveIEL2JekCPFPk5klOptJw/w640-h327/crash-analytics-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>Crash analysis with Gemini</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">AI features in Studio Labs (stable releases only)</span></h3>
<p>We’ve heard feedback that developers want to access AI features in stable channels as soon as possible. You can now discover and try out the latest AI experimental features through the <b>Studio Labs</b> menu in the Settings menu starting with Narwhal stable release. You can get a first look at AI experiments, share your feedback, and help us bring them into the IDE you use everyday. Go to the Studio Labs tab in Settings and enable the features you would like to start using. These AI features are automatically enabled in canary releases and no action is required.</p>
<image><div style="text-align: center;"><img alt="screenshot of AI features in Studio Labs" border="0" height="555" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpFpl5UaO1QIhu9h_Tqd_l6hkAB8_hDfmTw0X_c9VL4OJx9m-D0suwi8zAorBBRkMjeJ1RiGQjMTJudm_SRuiAZZS5AeqhNYeitm-L7tNx58juYrOE0_RC226L6Ap0lxJv-JOijHBE28OOFg9JReOs7oW9DaG7Q_3d5fge2EA1mtl6eNiHfLsmG9xyS28/w640-h555/ai-features-studio-labs-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>AI features in Studio Labs</em></center></imgcaption></image><br />
<ul><ul>
<li><h4><span style="font-size: medium;"><b>Compose preview generation with Gemini</b></span></h4></li>
<p>Gemini can automatically generate Jetpack Compose preview code saving you time and effort. You can access this feature by right-clicking within a composable and navigating to <b>Gemini > Generate Compose Preview</b> or <b>Generate Compose Preview for this file</b>, or by clicking the link in an empty preview panel. The generated preview code is presented in a diff view that enables you to quickly accept, edit, or reject the suggestions, providing a faster way to visualize your composables.</p>
<image><div style="text-align: center;"><img alt="moving image of compose preview generation with gemini in Android Studio" border="0" height="411" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj37jNhB8Vl4-EIpqBid_xqnwpgo5RNM7O4FzQIA3XXYjYNMR6Zj6wS06zV2bX2MH-qVDIcNQeZASqXXI-z71ZKkIHlFoiJ9wZ-HZ1r5swc6ze_xeOu1MaVMjA_dP9mKvnsb1MUCqOPZ0trN8WuPl-oVDw8PtnjuQiiCRs3xdJtbkEjKgbn_K7Z_MlC7hc/w640-h411/compose-preview-generation.gif" width="640" /></div><imgcaption><center><em>Compose Preview generation with Gemini</em></center></imgcaption></image><br />
<li><h4><span style="font-size: medium;"><b>Transform UI with Gemini</b></span></h4></li>
<p>You can now transform UI code within the Compose Preview environment using natural language directly in the preview. To use it, right click in the Compose Preview and select "Transform UI With Gemini". Then enter your natural language requests, such as "Center align these buttons," to guide Gemini in adjusting your layout or styling, or select specific UI elements in the preview for better context. Gemini will then edit your Compose UI code in place, which you can review and approve, speeding up the UI development workflow.</p>
<image><div style="text-align: center;"><img alt="side by side screenshots showing transforming UI with Gemini in Android Studio" border="0" height="495" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyhSZP_j5Im1YPNF1Kds9IAGITa3TXWrRlqG_J41XzA67GNoCscWoNNSC0kFgP7yPkWWkIxsq5aFlB_67yVZ32Cg-Sd9nqpJsH5EVc81fkNstJtWlOd12vIJ43e360emr8iY9Z1CZhcBPicOjM0fcxXQ25_yWwHu67DNtxHlLcUt1XL6ThyJPUouqFIGU/w640-h495/transform-ui-gemini-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>Transform UI with Gemini</em></center></imgcaption></image><br />
<li><h4><span style="font-size: medium;"><b>Image attachment in Gemini</b></span></h4></li>
<p>You can now attach image files and provide additional information along with your prompt. For example: you can attach UI mock-ups or screenshots to tell Gemini context about your app’s layout. Consequently, Gemini can generate Compose code based on a provided image, or explain the composables and data flow of a UI screenshot. </p>
<image><div style="text-align: center;"><img alt="screenshot of image atteachment and preview generation via Gemini in Android Studio" border="0" height="504" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt_eW2ziPQM9lJf3KYzs9MF7IWb7AFh6AyeXYry852Pc0TSnrRbR_Ytx86M7R3PARYIeF9qPvIv0jacNyHIFErPCTF4CGspihCEQGt-sv8sYd-O3dHKA48oPUUz5s2lntuWDFE29aCeNuxu1IWzXRMGHQEco2cAW1TAgQj-6VV3-Fq0bHH-9WTES-Nk44/w640-h504/image-attachment-preview-generation-gemini-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>Image attachment and preview generation via Gemini in Android Studio</em></center></imgcaption></image><br />
<li><h4><span style="font-size: medium;"><b>@File context in Gemini</b></span></h4></li>
<p> You can now attach your project files as context in chat interactions with Gemini in Android Studio. This lets you quickly reference files in your prompts for Gemini. In the Gemini chat input, type @ to bring up a file completion menu and select files to attach. You can also click the <b>Context</b> drop-down to see which files were automatically attached by Gemini. This gives you more control over the context sent to Gemini.</p>
<image><div style="text-align: center;"><img alt="screenshot of @File context in Gemini in Android Studio" border="0" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBC6AYTG6302XHxeCytk63_Ur28Qs_OE23ve0Kim83TLKpapVORYrZw-Im9qD2VPsfL-PqVvDDfuEXqIa7hyzL7xW39iJhI2ijZfpG3yXgcpYD_p3j62OPYagzVRHvNhkI0ezzyNScvT6xT0s2WlCGwtechOdGJFfHMQ_w2_8TcdMvf7W2LmkVAjJJ4l4/s1600/screenshot-file-context-android-studio-google-io.png" width="100%" /></div><imgcaption><center><em>@File context in Gemini</em></center></imgcaption></image><br />
</ul></ul>
<h3><span style="font-size: large;">Rules in Prompt Library</span></h3>
<p><b>Rules in Gemini</b> let you define preferred coding styles or output formats within the Prompt Library. You can also mention your preferred tech stack and languages. When you set these preferences once, they are automatically applied to all subsequent prompts sent to Gemini. Rules help the AI understand project standards and preferences for more accurate and tailored code assistance. For example, you can create a rule such as “Always give me concise responses in Kotlin.”</p>
<image><div style="text-align: center;"><img alt="prompt library in Android Studio" border="0" height="453" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVAHsw5qrEhl69OeETHW72xlnWtdRO_x924nqETwWO6DCcO3rp4xNHU37voeUqfrLpWfCz2V3Sre8WRQeAbufLqd_RyljsJIv8uUd96htZ_kLAKZU9AvjAQBZZ2NbOfQlDG3VPlfzwMzGNhAnDZ48ZUwWEjVOqL9YeFnPuh0dtyV-kwL0xYkOLsD9J2Dc/w640-h453/image19.png" width="640" /></div><imgcaption><center><em>Prompt Library Improvements</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Gemini in Android Studio for businesses</span></h3>
<p><a href="https://developer.android.com/gemini-for-businesses" target="_blank">Gemini in Android Studio for businesses</a> is now available. It provides all the benefits of Gemini in Android Studio, plus <b>enterprise-grade privacy and security features</b> backed by Google Cloud — giving your team the confidence they need to deploy AI at scale while keeping their data protected.</p>
<p>Developers and admins can unlock these features and benefits by subscribing to <a href="https://codeassist.google/products/business" target="_blank">Gemini Code Assist</a> Standard or Enterprise editions. Discover the <a href="https://android-developers.googleblog.com/2025/04/gemini-in-android-studio-for-business.html" target="_blank">full list of Gemini in Android for business features available for your organization</a>.</p>
<h2><span style="font-size: x-large;">Improved tools for creating great user experiences</span></h2>
<p>Elevate your Compose UI development with the latest Android Studio enhancements.</p>
<h3><span style="font-size: large;">Compose preview improvements</span></h3>
<p>Compose preview interaction is now more efficient with the latest navigation improvements. Click on the preview name to jump to the preview definition or click the individual component to jump to the function where it’s defined. Hover states provide immediate visual feedback as you mouse over a preview frame. Improved keyboard arrow navigation eases movement through multiple previews, enabling faster UI iteration and refinement. Additionally, the Compose preview picker is now also available in the stable release.</p>
<image><div style="text-align: center;"><img alt="moving image of compose preview navigation improvements in Android Studio" border="0" height="508" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIwDfj3R5TPO2OT-Im0buqjXfW9lqiBb7x2jSqfmspdjJlmQwQ3-3qwXcHaTZ5mxXY3qxuveNzlrBeC542Snf_soBpwGF3nLuCBtKB-tIt9_cQLlTadTKjaFyXmvZw2vVSyi33Z10QpJEFJSx9enuCmt-xxpu4F7G3kT3wOoHRv_58Mn0CUHl01gJy05o/w640-h508/compose-preview-navigation-improvements.gif" width="100%" /></div><imgcaption><center><em>Compose preview navigation improvements</em></center></imgcaption></image><br />
<image><div style="text-align: center;"><img alt="Compose preview picker in Android Studio" border="0" height="400" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVVd8m-L4dACjPgLLVhrQKcBywDcDzg-SJk82v72u-qVMzOYrgZMpNXDW2BjGITnbDv8r7rfTmFkHK827Sd4D0ks5mHViNDhasyYCAbqYpTNYwsmRj0Y74Wrxh07aWetgoUBhyphenhyphenG_CgfxpSoS1buG4tmu0bbGu2fSD_TZtgCNC-QulAutdBuPxyJoRqWl8/w289-h400/image25.png" width="50%" /></div><imgcaption><center><em>Compose preview picker </em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Resizable Previews</span></h3>
<p>While in Compose Preview’s focus mode in Android Studio, you can now resize the preview window by dragging its edges. This gives you instant visual feedback on how your UI adapts to different screen sizes, ensuring responsiveness and visual consistency. This rapid iteration helps create UIs that look great on any Android device.</p>
<image><div style="text-align: center;"><img alt="ALT TEXT" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJONnzdnMnQ8u4pqXScboFWmBspU9bAb0tfSteoBpaSweB9mPpRjeMfbRh4cqhBNBr9SIeo_vyruEhRVjhB1MMYrScUWTun4dZXIAvacWIYrWIxVY1GeXRELNq9HJcS8t8gZX3Nz62WJHLH-FGgmKv2fioAVMPFCU11DSS8hnAX-h6AI90_hH1vXyzB88/w568-h640/image8.gif" width="100%" /></div><imgcaption><center><em>Resizable Preview</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Embedded Android XR Emulator</span></h3>
<p>The Android XR Emulator now launches by default in the embedded state. You can now deploy your application, navigate the 3D space and use the Layout Inspector directly inside Android Studio, streamlining your development flow.
</p>
<image><div style="text-align: center;"><img alt="Embedded XR emulator in Android Studio" border="0" height="379" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAL7VlmgyLuu6SV6tFb9VdFeFjrHIS4MOKwoSHGmFYUWYPLCAFKoNmyZbZ7jqmqDnm5L2LvtO-e4VXRdjilUCZ6tYrqFFAk-iiQz4jl-gaZPQC1s6MrPFjHNI3XNibiU55TblxlMrPVayTl_FeV6r5M9k0SajURa734SMlrq7-AXr5h13pvW2cxEbso-g/w640-h379/image4.gif" width="100%" /></div><imgcaption><center><em>Embedded XR Emulator</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">Improved tools for future-proofing and testing your Android apps</span></h2>
<p>We’ve enhanced some of your favorite features so that you can test more confidently, future-proof your apps, and ensure app compatibility across a wide range of devices and Android versions.</p>
<h3><span style="font-size: large;">Streamlined testing with Backup and Restore support</span></h3>
<p>Android Studio offers built-in Backup and Restore support by letting you trigger app backups on connected devices directly from the <b>Running Devices</b> window. You can also configure your <b>Run/Debug</b> settings to automatically restore from a previous backup when launching your app. This simplifies the process of validating your app's Backup and Restore implementation and speeds up development by reducing manual setup for testing.</p>
<image><div style="text-align: center;"><img alt="Streamlined testing with backup and restore support in Android Studio" border="0" height="436" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7hjAnLkiJb5u7Cxl8KEWjUTFxtu_oKQi9JxvqO0ZzKVmbnYZInFrdp8FjytTYrTno3msd__tU85mqDqGibzPacFuE4X9iDCrv8C2WYmSo9VfXuo4tjyGdEa9_LGpSoq5CTVVG0qyJq0emtfDvOaOumvW1cY-jaLVj7kYnBcmc1YTUmPBLG4uye82A9Ek/w640-h436/image18.png" width="100%" /></div><imgcaption><center><em>Streamlined testing with Backup and Restore support</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Android’s transition to 16 KB Page Size</span></h3>
<p>The underlying architecture of Android is evolving, and a key step forward is the transition to <b>16 KB page sizes</b>. This fundamental change requires all Android apps with native code or dependencies to be recompiled for compatibility. To help you navigate this transition smoothly, Android Studio now offers proactive warnings when building APKs or Android App Bundles that are incompatible with 16 KB devices. Using the APK Analyzer, you can also find out which libraries are incompatible with 16 KB devices. To test your apps in this new environment, a dedicated 16 KB emulator target is also available in Android Studio alongside existing 4 KB images.</p>
<image><div style="text-align: center;"><img alt="Android’s transition to 16 KB page size in Android Studio" border="0" height="318" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhddRGMI2OUAwfmYlPHEVqnnS3Tmwajd30ZKOID7dZqz2g1DgBbkFP7i4mh-DM9TrgZy2WxGZXK69n1xpGFPRBMNrO-hFWrOYZ8doKyUgwqDsIUGop2ZZ4TZfUwX3mhbWVl0J0LcFMexiHib-2r-tA_Mi99oTKMBuS0cX7WwunaMUAClDfJ9NwOrQAdsfs/w640-h318/image12.png" width="100%" /></div><imgcaption><center><em>Android’s transition to 16 KB page size</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Backup and Sync your Studio settings</span></h3>
<p>When you sign in with your Google account or a JetBrains account in Android Studio, you can now sync your customizations and preferences across all installs and restore preferences automatically on remote Android Studio instances. Simply select “Enable Backup and Sync” while you’re logging in to Android Studio, or from the Settings > Backup and Sync page, and follow the prompts.</p>
<image><div style="text-align: center;"><img alt="Backup and sync settings in Android Studio" border="0" height="498" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUMnQu0LMKu7Xt7qFPTDKnT4iwWws4syX81stVC6Xf4fAeQg1uDnUzqNGQKbNUxfMLgiZRVamsZqlX6aqqQp_9xMTFEZNJ6mZXvKBwksmby53L7LCdprYeSp4cF0ufw8qjC5xAHRcfzm4whGnpQtTbNOkBQHj-Z5gSJyYy-8qFOxL68xo6DVfK64aWIk/w640-h498/image13.png" width="100%" /></div><imgcaption><center><em>Backup and Sync your Studio settings</em></center></imgcaption></image><br />
<h3><span style="font-size: large;">Increasing developer productivity with Android’s Kotlin Multiplatform improvements</span></h3>
<p>Kotlin Multiplatform (KMP) enables teams to reach new audiences across Android and iOS with less development time. Usage has been growing in the developer community, with apps such as Google Docs now using it in production. We’ve released new Android Studio <a href="https://developer.android.com/kotlin/multiplatform/migrate" target="_blank">KMP project templates</a>, updated <a href="https://developer.android.com/kotlin/multiplatform" target="_blank">Jetpack libraries</a> and new codelabs (<a href="https://developer.android.com/codelabs/kmp-get-started" target="_blank">Get Started with KMP</a> and <a href="https://developer.android.com/codelabs/kmp-migrate-room" target="_blank">Migrate Existing Apps to Room KMP</a>) to help developers who are looking to get started with KMP.</p>
<h2><span style="font-size: x-large;">Experimental and features that are coming soon to Android Studio</span></h2>
<h3><span style="font-size: large;">Android Studio Cloud (experimental)</span></h3>
<p><a href="https://developer.android.com/studio/preview/android-studio-cloud" target="_blank">Android Studio Cloud</a> is now available as an experimental public preview, accessible through <a href="https://studio.firebase.google.com/?e=MonospaceEnabledFeaturesCapraBuild::Launch::Enrolled,DeploymentAndObservabilityFeatureLaunch::Launch::Enrolled,MonospaceEnabledFeaturesProPlan::Launch::Enrolled" target="_blank">Firebase Studio</a>. This service streams a Linux virtual machine running Android Studio directly to your web browser, enabling Android application development from anywhere with an internet connection. Get started quickly with dedicated workspaces featuring pre-downloaded Android SDK components. Explore sample projects or seamlessly access your existing Android app projects from GitHub without a local installation. Please note that Android Studio Cloud is currently in an experimental phase. Features and capabilities are subject to significant change, and users may encounter known limitations.</p>
<image><div style="text-align: center;"><img alt="Android Studio Cloud" border="0" height="422" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBE1YlhOqDCBwITUzNVeRPfh6ejl-BcVeepSAzyY4aEHDU8WfcENYeOWz8LMCVUen05PMlFf67ClsOX9DtgcNbQKhqiViy7mnbHutFi_l9XzPNPT8y0vH5fTsW7wbUW1cENSTQI4ORKW5tuUX1EUr9ETzqrymzwwVBU7pY0k96oZEagBNj0tNk9fK_2mc/w640-h422/image10.png" width="100%" /></div></image><br />
<h3><span style="font-size: large;">Version Upgrade Agent (coming soon)</span></h3>
<p>The <b>Version Upgrade Agent</b>, as part of Gemini in Android Studio, is designed to save you time and effort by automating your dependency upgrades. It intelligently analyzes your Android project, parses the release notes for included libraries, and proposes updates directly from your <span style="color: #0d904f; font-family: courier;">libs.versions.toml</span> file or the refactoring menu (<b>right-click > Refactor > Update dependencies</b>). The agent automatically updates dependencies to the latest compatible version, builds the project, fixes any errors, and repeats until all errors are fixed. Once the dependencies are upgraded, the agent generates a report showing the changes it made, as well as a high level summary highlighting the changes included in the updated libraries.</p>
<image><div style="text-align: center;"><img alt="Version updgrade agent in Android Studio" border="0" height="400" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvvIkyCZZ3dUK7f7zU9wYiggkexmnRMwMUuQTMdeoajLRCtD8_QzCsUXAQRBzVBLDYuhLvbb6UALUtvoL2rYRkfijVxcdiFTmqu_3QhYkkYhCaDqFZONVTiOzp-hzXLy5UEgIVanhSYx_-ETYBDWi8BESwEMgREl2w-tJsaLZt8NJxJgiBhKbJsmqeQyQ/w336-h400/image22.png" width="50%" /></div><imgcaption><center><em>Version Upgrade Agent</em></center></imgcaption></image><br />
<iframe allowfullscreen="" class="BLOG_video_class" height="413" src="https://www.youtube.com/embed/ubyPjBesW-8" width="100%" youtube-src-id="ubyPjBesW-8"></iframe>
<h3><span style="font-size: large;">Agent Mode (coming soon)</span></h3>
<p>Agent Mode is a new autonomous AI feature using Gemini, designed to handle complex, multi-stage development tasks that go beyond typical AI assistant capabilities, invoking multiple tools to accomplish tasks on your behalf.</p>
<p>You can describe a complex goal, like integrating a new API, and the agent will formulate an execution plan that spans across files in your project — adding necessary dependencies, editing files, and iteratively fixing bugs. This feature aims to empower all developers to tackle intricate challenges and accelerate the building and prototyping process. You can access it via the Gemini chat window in Android Studio.</p>
<a href="#play-policy-insights-beta"></a><image><div style="text-align: center;"><img alt="Agent Mode in Android Studio" border="0" height="640" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikxStCRE3UZXJGWppDQrXSpCav71jJs3Zzy81B401RGn0j8NuWM3rUtziYNn8AQWPP25D407fUcH-82AsU0jTLezlV1uK_0zsXrhUm7ym6fi_gqOgGpjWIjDgGXQcCKK_L1Nlm9FwEl-ZC2-geujiu22G4oramkZfpM1c7h3LQtAeQ8IWbxM38HabQDZQ/w367-h640/image1.png" width="50%" /></div><imgcaption><center><em>Agent Mode</em></center></imgcaption></image><br />
<h3 id="play-policy-insights-beta"><span style="font-size: large;">Play Policy Insights beta in Android Studio (coming soon)</span></h3>
<p>Android Studio now includes richer insights and guidance on Google Play policies that might impact your app. This information, available as lint checks, helps you build safer apps from the start, preventing issues that could disrupt your launch process and cost more time and resources to fix later on. These lint checks will present an overview of the policy, do and don’ts, and links to Play policy pages where you can find more information about the policy.</p>
<image><div style="text-align: center;"><img alt="Play Policy Insights beta in Android Studio" border="0" height="427" id="imgCaption" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3KlOHZKCu-bIGrD8eTDWz9fFsllVK2eofP67vbMv_GIPSBOHyeWb8IpHXjSJmVbnZ0YJVn_06A9sZZIjLy3KW89-D_Rhi3Kw9cImg-AVvukA0D2X70FuJ0Dn3TsnI82xCuTjt4i5GDWd78jDxjYaQlAiiZ8-YwEqIl1sMFs4ET1Cukr-2d_06aWuF-z4/w640-h427/play-policy-insights-beta-android-studio.png" width="100%" /></div><imgcaption><center><em>Play Policy Insights beta in Android Studio</em></center></imgcaption></image><br />
<h2><span style="font-size: x-large;">IntelliJ Platform Update (2025.1)</span></h2>
<p>Here are some important IDE improvements in the IntelliJ IDEA 2025.1 platform release</p>
<ul><ul>
<li><b>Kotlin K2 mode:</b> Android Studio now supports Kotlin K2 mode in Android-specific features requiring language support such as Live Edit, Compose Preview and many more</li></ul><br /><ul>
<li><b>Improved dependency resolution in Kotlin build scripts:</b> Makes your Kotlin build scripts for Android projects more stable and predictable</li></ul><br /><ul>
<li><b>Hints about code alterations by Kotlin compiler plugins:</b> Gives you clearer insights into how plugins used in Android development modify your Kotlin code</li></ul><br /><ul>
<li><b>Automatic download of library sources for Gradle projects:</b> Simplifies debugging and understanding your Android project dependencies by providing immediate access to their source code</li></ul><br /><ul>
<li><b>Support for Gradle Daemon toolchains:</b> Helps prevent potential JVM errors during your Android project builds and ensures smoother synchronization</li></ul><br /><ul>
<li><b>Automatic plugin updates:</b> Keeps your Android development tools within IntelliJ IDEA up-to-date effortlessly</li>
</ul></ul>
<h2><span style="font-size: x-large;">To Summarize</span></h2>
<p>Android Studio Narwhal Feature Drop (2025.2.1) is now available in the Android Studio canary channel with some amazing features to help your Android development</p>
<h3><span style="font-size: large;">AI-powered development tools for Android</span></h3>
<ul><ul>
<li><b>Journeys for Android Studio:</b> Validate app flows easily using tests and assertions in natural language</li>
<li><b>Suggested fixes for crashes with Gemini:</b> Determine the root cause of a crash and fix it much faster with Gemini</li>
<li><b>AI features in Studio Labs</b></li>
<ul><ul>
<li><b>Compose preview generation with Gemini:</b> Generate Compose previews with Gemini's code suggestions</li>
<li><b>Transform UI with Gemini:</b> Transform UI in Compose Preview with natural language, speeding development</li>
<li><b>Image attachment in Gemini:</b> Attach images to Gemini for context-aware code generation</li>
<li><b>@File context in Gemini:</b> Reference project files in Gemini chats for quick AI prompts</li>
</ul></ul>
<li><b>Rules in Prompt Library:</b> Define preferred coding styles or output formats within the Prompt Library
</li></ul></ul>
<h3><span style="font-size: large;">Improved tools for creating great user experiences</span></h3>
<ul><ul>
<li><b>Compose preview improvements:</b> Navigate the Compose Preview using clickable names and components</li>
<li><b>Resizable preview:</b> Instantly see how your Compose UI adapts to different screen sizes</li>
<li><b>Embedded XR Emulator:</b> XR Emulator now launches by default in the embedded state</li>
</ul></ul>
<h3><span style="font-size: large;">Improved tools for future-proofing and testing your Android apps</span></h3>
<ul><ul>
<li><b>Streamlined testing with Backup and Restore support:</b> Effortless app testing, trigger backups, auto-restore for faster validation</li>
<li><b>Android’s transition to 16 KB Page Size:</b> Prepare for Android's 16KB page size with Studio's early warnings and testing</li>
<li><b>Backup and Sync your Studio settings:</b> Sync Android Studio settings across devices and restore automatically for convenience</li>
<li><b>Increasing developer productivity with Android’s Kotlin Multiplatform improvements:</b> simplified cross-platform Android and iOS development with new tools</li>
</ul></ul>
<h3><span style="font-size: large;">Experimental and features that are coming soon to Android Studio</span></h3>
<ul><ul>
<li><b>Android Studio Cloud (experimental):</b> Develop Android apps from any browser with just an internet connection</li>
<li><b>Version Upgrade Agent (coming soon):</b> Automated dependency updates save time and effort, ensuring projects stay current</li>
<li><b>Agent Mode (coming soon):</b> Empowering developers to tackle multistage complex tasks that go beyond typical AI assistant capabilities</li>
<li><b>Play Policy Insights beta in Android Studio (coming soon):</b> Insights and guidance on Google Play policies that might impact your app</li>
</ul></ul>
<h2><span style="font-size: x-large;">How to get started</span></h2>
<p>Ready to try the exciting new features in Android Studio?</p>
<p>You can download the canary version of <a href="https://developer.android.com/studio/preview" target="_blank"><b>Android Studio Narwhal</b></a> Feature Drop (2025.1.2) today to incorporate these new features into your workflow or try the latest AI features using Studio Labs in the stable version of <a href="https://developer.android.com/studio" target="_blank"><b>Android Studio Meerkat</b></a>. You can also <a href="https://developer.android.com/studio/preview/install-preview" target="_blank">install them side by side by following these instructions</a>.</p>
<p>As always, your feedback is important to us – <a href="https://developer.android.com/studio/known-issues" target="_blank">check known issues</a>, <a href="https://developer.android.com/studio/report-bugs" target="_blank">report bugs</a>, <a href="https://developer.android.com/studio/report-bugs" target="_blank">suggest improvements</a>, and be part of our vibrant community on <a href="https://www.linkedin.com/showcase/androiddev/posts/?feedView=all" target="_blank">LinkedIn</a> <a href="https://medium.com/androiddevelopers" target="_blank">Medium</a>, <a href="https://www.youtube.com/c/AndroidDevelopers/videos" target="_blank">YouTube</a>, or <a href="https://twitter.com/androidstudio" target="_blank">X</a>. Let's build the future of Android apps together!</p>
<p>Explore this announcement and all Google I/O 2025 updates on <a href="https://io.google/2025/?utm_source=blogpost&utm_medium=pr&utm_campaign=event&utm_content=" target="_blank">io.google</a> starting May 22.</p><br />
Android Developershttp://www.blogger.com/profile/08588467489110681140noreply@blogger.com0