tag:blogger.com,1999:blog-4663744219983942222024-03-19T04:42:48.216-03:00Código GoogleBlog oficial para desenvolvedores que falam portuguêsUnknownnoreply@blogger.comBlogger475125tag:blogger.com,1999:blog-466374421998394222.post-39931834431830543442022-11-17T14:58:00.006-03:002022-11-17T15:14:03.345-03:00O novo Google Play Indie Games Fund<p> <span color="windowtext" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="font-size: 12pt; white-space: pre-wrap;"> </span></p><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{66}" paraid="690" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: center; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun EmptyTextRun SCXW197805020 BCX0" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 18.4px; margin: 0px; padding: 0px; user-select: text;"></span></p><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0UdRqYnHmOhYBVw-LhG2me0C2Brn1iQmNMKE0DrDDDdcK4Hk60Fj6Kb5HjDL3qAwgnd3IS1Gz8nutLJUUxAy6SyoQZx_pR75aR9fgLogK8Tp8Eqcdy-3XShu1e0e6ARRP8EViH51HislXkJjBdbokxsfP5PvJR_sI-j6tYKgIYcQGNrbJuVDdIC6lLA/s2096/IGFund_KeywordHeader_Recipients%20announcement%20(1).gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1182" data-original-width="2096" height="365" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0UdRqYnHmOhYBVw-LhG2me0C2Brn1iQmNMKE0DrDDDdcK4Hk60Fj6Kb5HjDL3qAwgnd3IS1Gz8nutLJUUxAy6SyoQZx_pR75aR9fgLogK8Tp8Eqcdy-3XShu1e0e6ARRP8EViH51HislXkJjBdbokxsfP5PvJR_sI-j6tYKgIYcQGNrbJuVDdIC6lLA/w650-h365/IGFund_KeywordHeader_Recipients%20announcement%20(1).gif" width="650" /></a></div><br /><br /><p></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{71}" paraid="691" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun CommentStart CommentHighlightPipeRest CommentHighlightRest SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; border-left-color: var(--clrCommentsHighlightPipeRest, #424242); border-left-style: solid; border-left-width: 1px; margin: 0px; padding: 0px; user-select: text;">A<span style="font-variant-ligatures: none;">uthor: Patricia Correa, </span></span></span><span class="TrackChangeTextInsertion TrackedChange SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun CommentHighlightRest SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Senior </span></span></span><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun CommentHighlightRest SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Director, Global Developer Marketing</span></span></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{91}" paraid="693" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"></span></span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{95}" paraid="694" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Em toda a América Latina, </span></span><span class="TrackChangeTextInsertion TrackedChange SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">há enorme</span></span></span><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"> talento </span></span><span class="TrackChangeTextInsertion TrackedChange SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">e</span></span></span><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"> </span><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">potencial entre os desenvolvedores de jogos. O novo<span color="rgba(0, 0, 0, 0)"> </span></span></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: windowtext; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;" target="_blank"><span class="TextRun Highlight Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Google Play Indie Games Fund</span></span></a><span class="TextRun Highlight SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"> foi criado para ajudar estúdios de jogos na América Latina, um dos mercados de crescimento mais rápido para videogames. O fundo oferece ajuda e </span><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">suporte técnico a estúdios selecionados, para expandir seus negócios no Google Play, e não exige capital ou participação acionária em troca.</span></span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{95}" paraid="694" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><br /></p><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{95}" paraid="694" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS3G9qze29xxVVU44bS2lsNb6GUzyZRzT6dQ-rS1Q7iTi-qLqblj8fJisIUMHWHiyVNT5a6vIVsNrBjYCP-Lmr8jmzgVY2DC0hsoaA5IOVVF1MsdcJWvNcxYbGPBu4j_1Y_QeLxNZweP_Az6XL_px1S7x9CoWL8O07cj1Pvl142fWlc5gzkbqQ8rQfmg/s1200/IGFund_AndroidDevsBlog_AllRecipients_PT.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="380" data-original-width="1200" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS3G9qze29xxVVU44bS2lsNb6GUzyZRzT6dQ-rS1Q7iTi-qLqblj8fJisIUMHWHiyVNT5a6vIVsNrBjYCP-Lmr8jmzgVY2DC0hsoaA5IOVVF1MsdcJWvNcxYbGPBu4j_1Y_QeLxNZweP_Az6XL_px1S7x9CoWL8O07cj1Pvl142fWlc5gzkbqQ8rQfmg/w643-h203/IGFund_AndroidDevsBlog_AllRecipients_PT.png" width="643" /></a></div><p></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{126}" paraid="697" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; text-align: center; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><br /></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{c79bff39-ac7e-496a-993f-782abd66f061}{135}" paraid="699" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Hoje, estamos anunciando os </span></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;" target="_blank"><span class="TextRun Highlight Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 12pt; font-variant-ligatures: none; font-weight: bold; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">10 estúdios selecionados</span></span></a><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"> e seus jogos independentes:</span></span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="ListContainerWrapper SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; padding: 0px; position: relative; text-align: left; user-select: text;"><ul style="text-align: left;"><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">AgonaleaGames,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Beat Arena</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Argentina)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559738":240,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">Aoca Game Lab,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">ARIDA: Backland’s Awakening</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Brazil)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">Asantee Games,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Magic Rampage</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Brazil)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">AVIX,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Hidden Lands</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Argentina)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">Boomware Studio,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Cafe Panic</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Peru)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">Cafundo E Criativo,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Tetragon</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Brazil)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">Glitch Factory,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">No Plac</span><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">e for Bravery</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Brazil)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">Orube Game Studio,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Super Mombo Quest</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Brazil)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;">Selva Interactive,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-size: 11pt; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text; white-space: pre-wrap;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Illuminaria</span></span></a><span class="TextRun SCXW197805020 BCX0" color="windowtext" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> (Guatemala)</span><span class="EOP SCXW197805020 BCX0" color="windowtext" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></li><li><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;">Somber Pixel,</span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;" target="_blank"><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; font-weight: bold; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></a><span class="TextRun EmptyTextRun SCXW197805020 BCX0" data-contrast="auto" face="Arial, Arial_EmbeddedFont, Arial_MSFontService, sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;" target="_blank"><span class="TextRun Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Night Reverie</span></span></a><span class="TextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; font-variant-ligatures: none; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> (Peru) </span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559739":240,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 11pt; line-height: 19.55px; margin: 0px; padding: 0px; user-select: text;"> </span></li></ul><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{28}" paraid="709" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-family: "Google Sans", "Google Sans_MSFontService", sans-serif; font-kerning: none; font-size: 11pt; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{43}" paraid="710" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"></span></span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{47}" paraid="711" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Além do fundo, o Google Play oferece uma variedade de programas para ajudar desenvolvedores independentes a atingir todo o seu potencial.</span></span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{53}" paraid="712" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><br /></p><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{53}" paraid="712" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Até agora, 29 est</span></span><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-size: 12pt; font-variant-ligatures: none; line-height: 24.15px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">údios latino-americanos também participaram do</span></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;" target="_blank"><span class="TextRun Highlight Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"> Indie Games Accelerator</span></span></a><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">, um programa global que oferece treinamento e orientação. </span></span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{70}" paraid="714" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><br /></p><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{70}" paraid="714" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><br /></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{74}" paraid="715" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Para mais notícias sobre os nossos programas e recursos para desenvolvedores de jogos independ</span><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">entes, siga-nos no </span></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;" target="_blank"><span class="TextRun Highlight Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Twitter @GooglePlayBiz</span></span></a><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"> e no </span></span><a class="Hyperlink SCXW197805020 BCX0" href="http://about:blank/" rel="noreferrer noopener" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; text-decoration-line: none; user-select: text;" target="_blank"><span class="TextRun Highlight Underlined SCXW197805020 BCX0" data-contrast="none" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: #1155cc; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; text-decoration-line: underline; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">LinkedIn.</span></span></a><span class="TextRun Highlight EmptyTextRun SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"></span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="OutlineElement Ltr SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW197805020 BCX0" paraeid="{63c1c67d-e4ed-4b3c-8351-8054c76399da}{90}" paraid="716" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;"><span class="TextRun Highlight SCXW197805020 BCX0" data-contrast="auto" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; font-variant-ligatures: none; line-height: 20.7px; margin: 0px; outline: transparent solid 1px; padding: 0px; user-select: text;"><span class="NormalTextRun SCXW197805020 BCX0" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"></span></span><span class="EOP SCXW197805020 BCX0" data-ccp-props="{"134245417":false,"201341983":0,"335559740":276}" face=""Google Sans", "Google Sans_EmbeddedFont", "Google Sans_MSFontService", sans-serif" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 12pt; line-height: 20.7px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com12tag:blogger.com,1999:blog-466374421998394222.post-57038710537421928802022-10-06T14:23:00.001-03:002022-10-06T14:23:05.272-03:00Inscreva-se agora mesmo no Firebase Summit 2022
<html>
<head>
<meta charset='utf-8' />
<meta name="original_url" content="https://firebase.blog/posts/2022/08/register-firebase-summit-2022"/>
<style>
img {max-width:100%}
.article-image__thin-aspect-image {
background-position: 50%;
background-size: contain;
background-repeat: no-repeat;
height: 50%;
}
</style>
</head><body>
<div class="_headline_1o14o_71"><h2><a id="skip-destination" href="/posts/2022/08/register-firebase-summit-2022" class="_headlineSmaller_1o14o_194" aria-label="Register now for Firebase Summit 2022!, authored by Grace Lopez Product Marketing Manager, published on August 24, 2022">Inscreva-se agora mesmo no Firebase Summit 2022</a></h2><div class="_bylinelist_1o14o_228"><div class="_byline_1oopl_1" aria-hidden="true"><img class="_img_1oopl_18" src="https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/authors%2Fgrace-lopez_466x466.webp?alt=media" alt="Grace Lopez"><div class="_bylineMeta_1oopl_51"><div class="_name_1oopl_25">Grace Lopez</div><div class="_role_1oopl_30">Gerente de marketing de produtos</div></div></div></div></div>
<article class="content "><div class="_date_1ahq3_96 post-date">24 de agosto de 2022</div><p>Um dos melhores aspectos do Firebase é a comunidade. Depois de três longos anos, temos o prazer de anunciar que o sétimo <strong>Firebase Summit</strong> anual está retornando como um evento híbrido com <em>experiências</em> presenciais <em>e</em> virtuais. O evento presencial com duração de um dia ocorrerá no <strong>Pier 57 na cidade de Nova York em 18 de outubro de 2022</strong>. Será divertido nos reunirmos para aprender, fazer networking e compartilhar ideias. Caso você não possa viajar, não se preocupe. Você poderá participar das atividades on-line em seu escritório/espaço de trabalho/sofá onde quer que você esteja.</p><p>Junte-se a nós para saber como o Firebase pode ajudar a acelerar o desenvolvimento de apps, executar apps com confiança e dimensionar seu negócio. <strong><a href="https://rsvp.withgoogle.com/events/firebase-dev-summit/forms/registration">As inscrições estão abertas</a></strong> para os eventos presenciais e virtuais. Continue lendo para saber mais sobre o que vem por aí.</p><click-card><div class="_hoverCard_yg9b6_39 _assetCard_yg9b6_1"><div class="_imgFrame_yg9b6_29"><img class="_mainImg_yg9b6_43" src="https://firebasestorage.googleapis.com/v0/b/first-class-blog.appspot.com/o/posts%2Ffirebase.svg?alt=media" alt="Logotipo do Firebase"><img class="_hoverImg_yg9b6_55" src="https://firebase.blog/img/logo-cutout.svg" alt="Logotipo do Firebase"></div><div class="_info_yg9b6_24"><div class="_details_yg9b6_25"><div class="_title_yg9b6_69">Inscreva-se no Firebase Summit.</div><p></p></div><a rel="noreferer" target="_blank" href="https://rsvp.withgoogle.com/events/firebase-dev-summit/forms/registration">rsvp.withgoogle.com</a></div></div></click-card><h3 id="keynote-full-of-product-updates">Palestra sobre diversas atualizações de produtos</h3><p><strong>Presencial e com transmissão ao vivo</strong></p><p>Daremos o pontapé inicial no dia com uma palestra de nossos líderes, que destacarão todos os anúncios e as novidades mais recentes do Firebase. Com as atualizações, nosso objetivo é proporcionar uma experiência segura e contínua para que você possa se concentrar em criar o melhor app possível.</p><h3 id="askfirebase-live">Live #AskFirebase</h3><p><strong>Presencial e com transmissão ao vivo</strong></p><p>Você tem alguma pergunta importante a nos fazer? Receberemos perguntas dos participantes virtuais/presenciais e as responderemos no palco durante uma edição especial do aclamado <code>#AskFirebase</code>.</p><h3 id="new-ignite-talks"><span class="label-new">Novidade!</span> Ignite Talks</h3><p><strong>Presencial e com transmissão ao vivo</strong></p><p>No Firebase Summit deste ano, apresentaremos as Ignite Talks, que serão palestras de 7 a 15 minutos sobre temas em alta, bem como dicas e sugestões para ajudar você a aproveitar nossos produtos ao máximo.</p><h3 id="new-expert-led-classes"><span class="label-new">Novidade!</span> Aulas ministradas por especialistas</h3><p><strong>Presencial e com lançamento virtual posterior</strong></p><p>Vocês nos pediram mais informações técnicas detalhadas; por isso, teremos aulas ministradas por especialistas no Firebase Summit. Essas aulas sobre plataformas específicas são projetadas com o objetivo de fornecer conhecimentos extensivos e experiências práticas com os produtos do Firebase. Inicialmente, elas serão exclusivas para os participantes presenciais. Entretanto, estamos adaptando o conteúdo para aprendizado individual e as disponibilizaremos aos participantes virtuais mais tarde.</p><h3 id="we-cant-wait-to-see-you">Estamos ansiosos para receber você</h3><p>Além disso, o Firebase Summit estará recheado com aquilo que você mais gosta: demonstrações interativas, diversas oportunidades de networking, conversas interessantes com a comunidade, além de algumas surpresas. Compartilharemos mais detalhes sobre o Firebase Summit 2022 nas próximas semanas. Fique ligado! Enquanto isso, <a href="https://rsvp.withgoogle.com/events/firebase-dev-summit/forms/registration">inscreva-se para o evento</a>, assine o <a href="https://www.youtube.com/user/Firebase">canal do Firebase no YouTube</a> e siga-nos no <a href="https://twitter.com/firebase">Twitter</a> e no <a href="https://www.linkedin.com/company/firebase/">LinkedIn</a> para participar da conversa usando <code>#FirebaseSummit</code>.</p></article>
<link rel="stylesheet" href="https://firebase.blog/assets/d62f3bda.a8010339.css">
<link rel="stylesheet" href="https://firebase.blog/assets/b796c6c5.3a8fb5cc.css">
<link rel="stylesheet" href="https://firebase.blog/assets/aa3e8d41.b0c00c29.css">
<link rel="stylesheet" href="https://firebase.blog/assets/5a07a966.82d9b9a7.css">
</body></html>
DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com11tag:blogger.com,1999:blog-466374421998394222.post-20033723481104845152022-07-15T15:13:00.000-03:002022-07-15T15:13:23.649-03:00Notas do Google Play: Play para todos
<html>
<head>
<meta charset='utf-8' />
<style>
img {max-width:100%}
.article-image__thin-aspect-image {
background-position: 50%;
background-size: contain;
background-repeat: no-repeat;
height: 50%;
}
</style>
</head><body>
<h2 class="title" itemprop="name">
<a href="https://android-developers.googleblog.com/2022/06/notes-from-google-play-making-play-work.html" itemprop="url" title="Notes from Google Play: making Play work for everyone"> </a>
</h2>
<div class="post-header">
<div class="published">
<span class="publishdate" itemprop="datePublished"> 22 de junho de 2022 </span>
</div>
</div>
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9NXOkaUCvb2KLyrnCp4DWpr2dyryXzHsqvX94Dcrw3r_5znwMZFy6PwmaHJj25D0DKYcZlF8Jac5C0KhM1s2j_mEc0VULf-eiCpT3JGbYgI_jg105SyUEwNG7w2dvF-60npxBgZidqgXqx7A1iWRftv9lOZrM9OAfc4f105met0ZauGQ5hRQC0_wE/s1024/image3.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="332" data-original-width="1024" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9NXOkaUCvb2KLyrnCp4DWpr2dyryXzHsqvX94Dcrw3r_5znwMZFy6PwmaHJj25D0DKYcZlF8Jac5C0KhM1s2j_mEc0VULf-eiCpT3JGbYgI_jg105SyUEwNG7w2dvF-60npxBgZidqgXqx7A1iWRftv9lOZrM9OAfc4f105met0ZauGQ5hRQC0_wE/s16000/image3.jpg" style="width:100%"></a></div><br>Olá, <br><br>Como líder de Parcerias de apps para o Google Play, tenho a incrível oportunidade de conhecer muitas empresas que compartilham ótimas ideias e feedback sobre como podemos dar suporte à criação e expansão de negócios de sucesso. <br><br>Nesta nova edição do Notas do Google Play, quero falar sobre alguns trabalhos que nos inspiraram e também sobre o que é prioridade para mim e para nossa equipe. Acredito que tudo se resume ao nosso foco para criar um Google Play para todos. Trata-se de fazer com que o Play funcione melhor para todos vocês, que são as pessoas por trás dos apps e jogos, facilitando a expansão das empresas e ajudando vocês a atender melhor a todos os usuários, em qualquer lugar.<div><br></div><div><div style="text-align: center;"><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="475" src="https://www.youtube.com/embed/e1XWgW0uyWM" width="600" youtube-src-id="e1XWgW0uyWM"></iframe></div></div><div style="text-align: center;"><br></div>Começarei compartilhando a história do <a href="https://play.google.com/store/apps/details?id=com.olioex.android" target="_blank">OLIO</a>, um dos muitos apps que foram uma inspiração para mim este ano. O OLIO é um app direcionado para a comunidade, com o propósito de reduzir o desperdício de alimentos. Com ele, as pessoas podem facilmente doar alimentos para os vizinhos. As fundadoras, Tessa Clarke e Saasha Celestial-One, tinham o objetivo de criar redes locais de compartilhamento de alimentos ao redor do mundo e de garantir que nada que tivesse algum valor fosse desperdiçado. Após o lançamento inicial do app no Reino Unido, a convicção de Tessa e Saasha quanto à sua missão principal as ajudou a expandir o app para 62 países, um número que aumenta cada dia mais com as parcerias com lojas globais que as ajudam a atingir a meta do desperdício zero. <br><br>O sucesso do app OLIO se deve a duas mulheres com diferentes formações e um mesmo sonho: o desejo de beneficiar todas as pessoas e o planeta. Para mim, este é o objetivo final: <b>garantir que todos tenham a oportunidade de criar empresas de sucesso e capazes de beneficiar pessoas em todo o mundo.</b><div> <div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTzKxGt4mXKTz2S5SpJTT18pKRwlyiz9vVVnSBp0w56FAhpbpVEP18lJ1eH2GeCSE1HLnMsT26tGNcTQ32jpJ8FwQzXjIE_xh4U8hrLpRZsrUhmBF2aQorFLSGNGbBeg5nkQ_IoSpAvc8aS1LL5QgZvhzjfB35CmkM6ffj_UJIk-nM5yRyzPbHLens/s1999/image1.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1999" data-original-width="1333" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTzKxGt4mXKTz2S5SpJTT18pKRwlyiz9vVVnSBp0w56FAhpbpVEP18lJ1eH2GeCSE1HLnMsT26tGNcTQ32jpJ8FwQzXjIE_xh4U8hrLpRZsrUhmBF2aQorFLSGNGbBeg5nkQ_IoSpAvc8aS1LL5QgZvhzjfB35CmkM6ffj_UJIk-nM5yRyzPbHLens/s320/image1.jpg" width="213"></a> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3pluxUZzzff_UMMSaVOh_-0gSImWLUiBArSxtLOQ4-tRIP_ndfZ-IdkiEatPUxKNS4srXMGAdHa-5N2UfXMjrJwuEfOy09zeSaH1zB25BLL-PPVJ9rqqQLKi53oCCXaIc-z3b1SN4H9n-rCH6-S2WmzXJZFtfXdNkN6-uPuofPIbqC65-z7V_YDYR/s1440/image2.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="1440" data-original-width="1132" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3pluxUZzzff_UMMSaVOh_-0gSImWLUiBArSxtLOQ4-tRIP_ndfZ-IdkiEatPUxKNS4srXMGAdHa-5N2UfXMjrJwuEfOy09zeSaH1zB25BLL-PPVJ9rqqQLKi53oCCXaIc-z3b1SN4H9n-rCH6-S2WmzXJZFtfXdNkN6-uPuofPIbqC65-z7V_YDYR/s320/image2.png" width="252"></a></div>Agora, gostaria de falar um pouco mais sobre alguns de meus programas e ferramentas favoritos que foram lançados recentemente com esse objetivo como ponto central. <br><br><h3 style="text-align: left;">Apps e jogos de todos <i></i></h3><div style="text-align: left;">Seja qual for o tamanho da empresa, queremos garantir que você tenha os insights e as ferramentas para tomar decisões mais informadas e para facilitar a criação e a expansão de sua empresa de apps ou jogos. Vejamos a privacidade e a segurança como exemplos, já que esse é um tópico fundamental.</div><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: left;"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihISL6zAMi5B4mYEMBry1yBmbAOPPn2jD_OnM2y6BTCX3kyBF9F3ZY3Deya5ktI7Ez_NCgkTdPjAuvzWmFrruf8-yYKHSS-PA3tMzdpIzvBmEpRk8QjEWo3GSSlPJjARHXE1WqwiQHuSPwSwzU87I5STa0U5iHFARmTjGYzfYYnfFViRDbqHvEmbfF/s320/blog_asset_1.png" style="margin-left: 0px; margin-top: 0px;" width="384">
</div><div style="text-align: left;"><br></div><div style="text-align: left;"> Temos várias ferramentas e<b> </b>programas para ajudar você a criar experiências seguras para todos e a proteger sua empresa, incluindo a <a href="https://developer.android.com/google/play/integrity" target="_blank">API Play Integrity</a>, a <a href="https://support.google.com/googleplay/android-developer/answer/10787469?hl=en" target="_blank">seção Data safety</a>, o <a href="https://blog.google/products/android/introducing-privacy-sandbox-android/" target="_blank">Sandbox de privacidade no Android</a> e o recém-lançado <a href="https://developer.android.com/distribute/sdk-index" target="_blank">SDK Index do Google Play</a>. O índice fornece dados e insights sobre mais de 100 dos SDKs comerciais mais utilizados. Isso pode ajudar você a navegar por SDKs de terceiros e a manter o alinhamento com as políticas do Google Play a fim de tomar decisões mais informadas em relação ao seu negócio e aos seus usuários.</div></div><div><br></div><br><div>Também temos programas projetados para <b>empresas com necessidades variadas</b>, de <a href="https://play.google.com/console/about/programs/mediaprogram/" target="_blank">empresas de mídia que criam experiências para vários tipos de dispositivos</a> até startups que estão solucionando problemas locais na primeira coorte do <a href="https://blog.google/intl/en-in/products/platforms/announcing-100-promising-startups-of-appscale-academys-class-of-2022-with-meity-startup-hub/" target="_blank">Appscale Academy</a>, na Índia. Esses 100 inovadores de apps promissores já nos inspiraram com sua energia e criatividade para criar apps de alta qualidade que atendem e ajudam pessoas em toda a Índia e no mundo.</div><div><br><br>Também estamos muito empolgados com a continuidade dos investimentos em programas projetados para ajudar a <b>expandir empresas de todos os portes</b>. Eles incluem o <a href="https://play.google.com/console/about/programs/partnerprogram/" target="_blank">Programa de parcerias do Google Play</a>, que foi lançado em março e criado para ajudar empresas de jogos de grande porte a atingir suas metas de expansão e desempenho. Além disso, acabamos de abrir as inscrições para os programas <a href="https://developersonair.withgoogle.com/events/playindies" target="_blank">Indie Games Accelerator e Indie Games Festival</a>. Fomos particularmente inspirados pelos ex-alunos da edição de 2021, e você pode saber tudo diretamente da Jimjum Studios de Israel, que cria jogos que incentivam a gentileza, a construção de comunidades e a generosidade, no primeiro episódio do Google Play Coffee breaks:<br><br><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="475" src="https://www.youtube.com/embed/6cKCFYzBuwY" width="600" youtube-src-id="6cKCFYzBuwY"></iframe></div><br>Independentemente do tamanho da empresa, os apps e jogos são criados e mantidos por pessoas. Por isso, investimos continuamente em <b>programas que promovem a diversidade</b> dentro do ecossistema e capacitam as próximas gerações de criadores de apps e jogos. Programas como o <a href="https://play.google.com/about/changethegame/" target="_blank">Change the Game</a> e nossos investimentos em <a href="https://www.youtube.com/watch?v=1oc75GQFKvg&t=310s" target="_blank">organizações que promovem mudanças positivas no setor de jogos</a> são apenas dois dos programas dos quais tenho orgulho em particular.</div><div><br></div><div><br></div><h3 style="text-align: left;">Apps e jogos para todos</h3><div>Acreditamos que todos devem ter acesso fácil a ótimas experiências de apps e jogos. Isso permite que as pessoas vivam melhor e ajuda você a expandir seus negócios.<br><br>Para auxiliar nisso, fizemos algumas atualizações que facilitam para todos o acesso a apps e jogos por um <b>preço igualmente justo</b>, o que, por sua vez, ajuda você a monetizar melhor os apps ou jogos. Por exemplo: vocês nos pediram mais flexibilidade e menos complexidade na forma de vender assinaturas, por isso nós lançamos os novos <a href="https://android-developers.googleblog.com/2022/05/new-ways-to-sell-subscriptions-on-google-play_0530335598.html" target="_blank">recursos de assinatura</a>. Agora, você pode criar vários planos de base e várias ofertas para cada assinatura, tudo isso com uma redução significativa do custo e da complexidade do gerenciamento de um número cada vez maior de SKUs. Seja para se conectar melhor às pessoas que ainda não conhecem sua empresa ou para reter usuários fiéis, você tem a capacidade de criar ofertas para todos.<br><br>Também investimos em novas ferramentas que ajudam as pessoas a pagarem por apps e jogos usando os métodos mais apropriados para elas, o que ajuda a melhorar a monetização. O Google Play Commerce oferece suporte a compradores em mais de 170 países, e melhoramos ainda mais o acesso com a adição de nossa biblioteca de métodos de pagamento, que agora inclui mais de 300 métodos locais de 70 países. Também fizemos mudanças para ajudar você a se adaptar ao poder de compra de cada local com a adição da opção de redução de preços, começando com o equivalente a cinco centavos de dólar em qualquer mercado.<br><br></div><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: left;"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh4KE6NGozYQrqkAGEugLKNzivMiIv44fxTN0JDW3_SCMHfClScOjoscn_5Do6RyBfRmMBiz52DDN1WAimuVskXckTks1QT0n_U7nOtZov58TUtoR5kVj7FoRgqNZH217cotFE196mTVU2FNDkqqUiCgPEQxQ51psJsOozbHOU3xEpidY_orcezz40s/s1600/blog_asset_2.png" style="margin-left: 0px; margin-top: 0px;" width="384">
</div><div style="text-align: left;"><br></div><div style="text-align: left;"> Atender melhor as pessoas não significa apenas adaptar os preços, mas também otimizar os apps e jogos para os dispositivos que elas usam, a fim de oferecer a melhor experiência possível, seja em smartphones, wearables, tablets ou TVs. Introduzimos novas ferramentas e recursos para ajudar você a criar <b>experiências melhores em telas grandes</b> e lançamos o <a href="https://developer.android.com/games/playgames" target="_blank">Google Play Games Beta</a> para que você possa expandir o alcance dos jogos para os computadores.</div><div><br></div><div><br></div><div><h3 style="text-align: left;">Queremos celebrar vocês </h3>Eu comecei destacando a OLIO como uma empresa que nasceu pelas mãos de pessoas ainda novas no espaço dos apps e que, mesmo assim, conseguiram ter um impacto positivo em todo o mundo. Esse é apenas um de muitos exemplos inspiradores. Acabamos de lançar o <a href="//g.co/play/weareplay" target="_blank">#WeArePlay</a>, uma nova campanha que celebra vocês, da comunidade global de pessoas por trás dos apps e jogos, e suas histórias singulares. Ele apresenta equipes de todos os tamanhos: algumas fundadas por desenvolvedores altamente experientes e outras por recém-chegados no setor de tecnologia; algumas sediadas em grandes cidades e outras em localidades menores. Trata-se de histórias breves que falam sobre jornadas pessoais de criação de apps ou jogos que estão solucionando problemas ou levando alegria a pessoas em todo o mundo.<br><br><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="475" src="https://www.youtube.com/embed/T7ckvawdL-w" width="600" youtube-src-id="T7ckvawdL-w"></iframe></div><div style="text-align: center;"><br></div><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: left;"><img height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi49zonaeaiLH7bfFxPojmBjc-5ju_IQZIR3RFd2RcouEwXOqp8zz43IrKJUtWzKgW_HkJ8OfzV6WFy9WU1WmYzPGY1WDKA6nm6Fbi2PxEfN8LFCq7MyIJTg5mK-x84SJ30b5XBBO8bJgi5-onTM4O9MMsOz7hteo8FQKIzzNWLYCbGYIdvueXBz5Tt/s1600/blog_asset_3.png" style="margin-left: 0px; margin-top: 0px;" width="384">
</div><div style="text-align: left;"><br></div><div style="text-align: left;"> Espero poder ver todos vocês continuando a criar experiências incríveis de apps e jogos, a expandir suas empresas e a encantar os usuários. Um brinde a todos vocês e às suas conquistas! Vamos continuar celebrando cada avanço e cada pequena vitória. É isso o que nos faz crescer.<br><br><br></div><div style="text-align: left;"><br></div><div style="text-align: left;">Cuidem bem de si mesmos e das pessoas ao seu redor,<br><br>Sarah Karam<br><br><i>Diretora de parcerias globais de apps do Google Play</i></div></div></div>
</body></html>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com9tag:blogger.com,1999:blog-466374421998394222.post-49403698611000486822022-07-15T14:52:00.002-03:002022-07-15T14:52:50.752-03:00Como um único desenvolvedor Android melhorou em 21% o tempo de inicialização do app Lyft Driver em um mês<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-edmiprRTINSNbIvwkfNg9BhBqq29ICAQQjdGV7OxvZgT8jpxY-fuoh7kA_VBtjVaZf0dfceAW6I23-VPnfCj-LkWXUzPezduogNdWmpX_2Rzikep1VXIr3v0RYVVnjSdu7iqAcJBYLnQYVxryS8uOKjUUQibsHfguTFHcq24NGtu_A8DYL24Hr8/s1600/image1.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-edmiprRTINSNbIvwkfNg9BhBqq29ICAQQjdGV7OxvZgT8jpxY-fuoh7kA_VBtjVaZf0dfceAW6I23-VPnfCj-LkWXUzPezduogNdWmpX_2Rzikep1VXIr3v0RYVVnjSdu7iqAcJBYLnQYVxryS8uOKjUUQibsHfguTFHcq24NGtu_A8DYL24Hr8/s1600/image1.png">
<p><em>Postado por Mauricio Vergara, gerente de marketing de produtos, com contribuições da Thousand Ant.</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-edmiprRTINSNbIvwkfNg9BhBqq29ICAQQjdGV7OxvZgT8jpxY-fuoh7kA_VBtjVaZf0dfceAW6I23-VPnfCj-LkWXUzPezduogNdWmpX_2Rzikep1VXIr3v0RYVVnjSdu7iqAcJBYLnQYVxryS8uOKjUUQibsHfguTFHcq24NGtu_A8DYL24Hr8/s1600/image1.png" imageanchor="1"><img style="width:100%" alt="Lyft" id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjS-edmiprRTINSNbIvwkfNg9BhBqq29ICAQQjdGV7OxvZgT8jpxY-fuoh7kA_VBtjVaZf0dfceAW6I23-VPnfCj-LkWXUzPezduogNdWmpX_2Rzikep1VXIr3v0RYVVnjSdu7iqAcJBYLnQYVxryS8uOKjUUQibsHfguTFHcq24NGtu_A8DYL24Hr8/s1600/image1.png" data-original-width="1058" data-original-height="714" /></a> </center>
<p>
A <a href="www.lyft.com">Lyft</a> tem um compromisso singular com a excelência em apps. Para uma empresa de transporte de passageiros por aplicativo que fornece a dezenas de milhões de passageiros e centenas de milhares de motoristas um serviço vital, no qual o fator tempo é crucial, esse compromisso é obrigatório. Nessa escala, cada momento de lentidão, frame congelado ou falha do app pode desperdiçar o tempo de milhares de usuários. Até mesmo uma pequena flutuação pode significar uma enxurrada de pessoas mudando para a concorrência para solicitar corridas ou trabalhar como motorista. Felizmente, a equipe de desenvolvimento da Lyft está sempre de olho no desempenho de seu app. Foi assim que eles notaram pela primeira vez uma lentidão no tempo de inicialização do app Android de seus motoristas.
</p>
<p>
Eles precisavam chegar rapidamente à origem do problema e descobrir o que seria necessário para resolvê-lo e, depois, justificar tal investimento para a liderança. Isso significava responder a uma série de perguntas difíceis. Onde estava o gargalo? Como isso estava afetando a experiência do usuário? Qual deveria ser a prioridade disso para a equipe, naquele momento? Por sorte, eles tinham à sua disposição uma ferramenta poderosa e capaz de ajudá-los a encontrar respostas. Com a ajuda do <a href="https://play.google.com/console/about/vitals/">Android Vitals</a>, uma ferramenta do Google Play para melhorar a estabilidade e o desempenho de apps em dispositivos Android, eles localizaram o problema, criaram um caso para justificar a prioridade para a liderança e dedicaram a quantidade certa de recursos para resolvê-lo. Veja como eles fizeram isso.
</p>
<br>
<h3>Novas prioridades</h3>
<p>
A primeira coisa que a equipe de desenvolvimento da Lyft precisava fazer era descobrir se esse era um problema urgente o suficiente para convencer a liderança a dedicar recursos a ele. Como qualquer proposta de melhoria de qualidade de um app, a aceleração do tempo de inicialização do Lyft Driver precisava ser ponderada em relação a outras demandas que concorriam pelo tempo dos desenvolvedores: a introdução de novos recursos de produto e as melhorias arquitetônicas e de ciência dos dados. Em geral, um dos desafios para convencer a liderança a investir na qualidade de apps é a dificuldade de correlacionar melhorias de desempenho e métricas de negócios.
</p>
<p>
Eles escolheram o Android Vitals para obter uma imagem exata do que estava em jogo. O Vitals dá aos desenvolvedores acesso a dados sobre o desempenho de apps, incluindo erros de falta de resposta, consumo excessivo de bateria, renderização e <a href="https://support.google.com/googleplay/android-developer/answer/9844486">tempo de inicialização</a>. O desempenho atual e histórico de cada métrica é rastreado em dispositivos reais e pode ser comparado ao desempenho de outros apps da categoria. Com a ajuda dessa ferramenta poderosa, a equipe de desenvolvimento descobriu que o tempo de inicialização do app Lyft Driver era de 15% a 20% mais lento do que o de outros 10 apps da mesma categoria, o que era uma questão urgente.
</p>
<p>
Em seguida, a equipe precisava estabelecer o escopo certo para o projeto, um escopo que fosse proporcional ao impacto da lentidão sobre os objetivos de negócios e a experiência do usuário. Os dados do Android Vitals confirmaram a urgência, especialmente porque proporcionaram uma comparação direta com a concorrência na área de transporte de passageiros por aplicativo. A equipe de desenvolvimento estimou que um único desenvolvedor trabalhando no problema por um mês seria suficiente para fazer uma melhoria mensurável no tempo de inicialização do app.
</p>
<p>
Ao fazer uso dessa diversidade de dados, e apelar para o compromisso da Lyft com a excelência em apps, a equipe apresentou o caso à liderança. Ao demonstrarem uma oportunidade óbvia de melhorar a experiência do cliente, um escopo viável definido de forma lógica e dados muito claros sobre a concorrência, eles conseguiram a aprovação.
</p>
<br>
<h3>Como eles trabalharam</h3>
<p>
A Lyft usa o "tempo até a interação" como métrica principal de inicialização (algo também conhecido como <a href="https://developer.android.com/topic/performance/vitals/launch-time#time-full">tempo para exibição total</a>). Para entender os fatores que impactavam esse tempo, a equipe da Lyft traçou o perfil de cada uma das fases de inicialização do app para procurar pelo impasse. O aplicativo Lyft Driver é inicializado em quatro fases. 1) Primeiro, é iniciado o processo de solicitação. 2) "Activity" dá início à renderização da IU. 3) "Bootstrap" envia solicitações de rede para obter os dados necessários para renderizar a tela inicial. 4) Finalmente, "Display" abre a interface do motorista. A definição rigorosa do perfil revelou que a lentidão ocorria na terceira fase, de bootstrap. Com o gargalo identificado, a equipe tomou várias medidas para resolvê-lo.
</p>
<br>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcP6CM4cp88xOZpV_COmbsLkmN3JPbhg5w3tRHCqj4lDbrcaIeVn90CN2TLCoP-JPyHHHf4c10pzS8RNak-yHqahPS3q4_0qZvEQqqtxK_CRDHu3MSJZNLbiI61ebvFXJdjLi5zuZ0xwJoCj5eeuyLEb31Z9_goQY1Kjn5BFAMCq-GdGW5MZuexSjD/s1600/image2.png" imageanchor="1"><img style="width:100%" alt="Tempo até a interação do Lyft" id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcP6CM4cp88xOZpV_COmbsLkmN3JPbhg5w3tRHCqj4lDbrcaIeVn90CN2TLCoP-JPyHHHf4c10pzS8RNak-yHqahPS3q4_0qZvEQqqtxK_CRDHu3MSJZNLbiI61ebvFXJdjLi5zuZ0xwJoCj5eeuyLEb31Z9_goQY1Kjn5BFAMCq-GdGW5MZuexSjD/s1600/image2.png" data-original-width="1058" data-original-height="714" /></a> </center>
<br>
<p>
Primeiro, eles reduziram as chamadas de rede desnecessárias no caminho crítico de inicialização. Após a decomposição dos serviços de back-end, eles conseguiram remover totalmente, e com segurança, algumas chamadas de rede no caminho de inicialização. Quando possível, eles também optaram por executar chamadas de rede de forma assíncrona. Nos casos em que alguns dados ainda eram necessários para que o app funcionasse, mas não durante a inicialização, essas chamadas foram transformadas em chamadas sem bloqueio para permitir que a inicialização prosseguisse sem elas. As chamadas de rede com bloqueio puderam ser movidas com segurança para o segundo plano. Por fim, eles optaram por armazenar os dados em cache entre as sessões.
</p>
<br>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiniY3dWginx_a5wKgedFAzfTMqDgQsu3mRkZLftmlaxW7Jqo5Br7_2k7shvsQsNcCklvPqpbkLGM5Nd8dnlTsBVUuLxerxiLogk_E4lVSiFLaqYxsctqE83rfVG1Dv-ZsEQxO5bzu5TiohdhuMJP5uDooywRZXlCoJp-pPUsKnZcIxwxbqMDZP1xJM/s1600/image3.png" imageanchor="1"><img style="width:100%" alt="Inicialização 21% mais rápida 5% mais sessões de motoristas" id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiniY3dWginx_a5wKgedFAzfTMqDgQsu3mRkZLftmlaxW7Jqo5Br7_2k7shvsQsNcCklvPqpbkLGM5Nd8dnlTsBVUuLxerxiLogk_E4lVSiFLaqYxsctqE83rfVG1Dv-ZsEQxO5bzu5TiohdhuMJP5uDooywRZXlCoJp-pPUsKnZcIxwxbqMDZP1xJM/s1600/image3.png" data-original-width="1058" data-original-height="714" /></a> </center>
<br>
<p>
Essas podem parecer mudanças relativamente pequenas, mas o resultado foi uma redução drástica de 21% no tempo de inicialização do app. Isso levou a um aumento de 5% nas sessões de motoristas no Lyft Driver. Com os resultados em mãos, a equipe conseguiu adesão suficiente da liderança para criar um fluxo de trabalho de desempenho dedicado a dispositivos móveis e adicionar um engenheiro ao esforço sem deixar de trabalhar em outras melhorias. O sucesso da iniciativa se estendeu a toda a organização, e vários gerentes começaram a buscar formas de fazer outros investimentos na qualidade do app.
</p>
<br>
<h3>Aprendizados</h3>
<p>
O sucesso desses esforços traz várias lições mais amplas, que são aplicáveis a qualquer organização.
</p>
<p>
À medida que um app se expande e a equipe aumenta com ele, a excelência do app se torna mais importante do que nunca. Os desenvolvedores geralmente são os primeiros a reconhecer problemas de desempenho porque trabalham diretamente com o app, mas podem achar difícil gerar conscientização sobre isso em toda a organização. O Android Vitals é uma ferramenta poderosa para isso. Ele fornece uma maneira direta de sustentar as observações dos desenvolvedores com dados, facilitando a conciliação de métricas de desempenho e casos de negócios.
</p>
<p>
Ao criar sua própria iniciativa de excelência em apps, é útil visar primeiro os pequenos ganhos e progredir a partir daí. Tenha o cuidado de selecionar projetos que sejam viáveis e gerem resultados significativos com um investimento adequado de recursos.
</p>
<p>
Também é importante a comunicação ágil e frequente para envolver o restante da organização nos esforços de qualidade da equipe de desenvolvimento. Essas atualizações constantes de objetivos, planos e resultados ajudam a manter o envolvimento de toda a equipe.
</p>
<br>
<h3>Outros recursos</h3>
<p>
O Android Vitals é apenas uma das muitas ferramentas do ecossistema Android projetadas para ajudar a entender e melhorar o tempo de inicialização de apps e o desempenho em geral. Outra ferramenta complementar, o <a href="https://developer.android.com/studio/profile/macrobenchmark#startup">Jetpack Macrobenchmark</a><span style="text-decoration:underline;">,</span> pode ajudar a fornecer dados sobre uma variedade de métricas nas fases de desenvolvimento e testes. Ao contrário do Android Vitals, que fornece dados usando dispositivos reais de usuário, o Macrobenchmark permite comparar e testar localmente áreas específicas do código, incluindo o tempo de inicialização de apps.
</p>
<p>
A <a href="https://developer.android.com/topic/libraries/app-startup">biblioteca App Startup do Jetpack</a> oferece uma forma direta e eficiente de iniciar componentes na inicialização de um app. Os desenvolvedores podem usar essa biblioteca para otimizar sequências de inicialização e definir explicitamente a ordem de inicialização. Enquanto isso, o <a href="https://play.google.com/console/about/reachanddevices/">Alcance e dispositivos</a> pode ajudar a entender a distribuição de usuários e problemas para tomar decisões melhores sobre as especificações segundo as quais você deve criar, os locais de lançamento e os elementos a serem testados. Os dados da ferramenta permitem que sua equipe priorize os esforços de qualidade e determine onde as melhorias terão o maior impacto para a maioria dos usuários. O <a href="http://perfetto.dev">Perfetto</a> é mais um recurso inestimável: uma ferramenta de rastreamento de sistema de código aberto que pode ser usada para instrumentar o código e diagnosticar problemas de inicialização. Em conjunto, essas ferramentas podem ajudar a manter o app funcionando sem problemas, os usuários satisfeitos e toda a organização apoiando os esforços de qualidade.
</p>
<p>
Caso tenha interesse em envolver a sua equipe na busca da excelência em apps (<a href="https://www.lyft.com/careers">ou por ingressar no Lyft</a>), confira <a href="https://developer.android.com/stories/apps/lyft">aqui</a> nosso estudo de caso resumido para proprietários e executivos de produtos.
</p>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com8tag:blogger.com,1999:blog-466374421998394222.post-43530046082640782052022-07-15T14:39:00.001-03:002022-07-15T14:39:33.976-03:00#WeArePlay | Conheça as pessoas que estão construindo empresas de apps e jogos <html>
<head>
<meta charset='utf-8' />
<style>
img {max-width:100%}
.article-image__thin-aspect-image {
background-position: 50%;
background-size: contain;
background-repeat: no-repeat;
height: 50%;
}
</style>
</head><body>
<div class="post-header">
<div class="published">
<span class="publishdate" itemprop="datePublished"> 22 de junho de 2022 </span>
</div>
</div>
<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibzTPuBecIhrvSRESNFvFFVVu3ReRRpKUERCpR7Uhx-2C_ieiqWt9bvPXFJlJiBrNbrp1XuY_b-5Rj8J0LenXkUJHt0HmpcZYCcDreG4jR0Ziwm_8vS3FTxInKle9AEljDvdPIFooUHSlmPfIwVG5ixLoQpG5VWQfKT9laK9df27RKlL-QKKhdxMJv/s1600/image5.jpg" name="twitter:image">
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibzTPuBecIhrvSRESNFvFFVVu3ReRRpKUERCpR7Uhx-2C_ieiqWt9bvPXFJlJiBrNbrp1XuY_b-5Rj8J0LenXkUJHt0HmpcZYCcDreG4jR0Ziwm_8vS3FTxInKle9AEljDvdPIFooUHSlmPfIwVG5ixLoQpG5VWQfKT9laK9df27RKlL-QKKhdxMJv/s1600/image5.jpg" style="display: none;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjUChjxBntwZiXgK6LlNX6KBWqMXXWdPUl1s0go2-_TL8p_Sxh_rhPYDqIMOoCzWU_sjFKcPuRyk7Z8JlGOkCn6xaDxJ4MkO7QaTj5U_R0GYsgEVGbqpXgNaM3QNhP9gvsa4-1a5yFRGk4eJzvT6sXvkFJQnlKiLQamdV10SBlCzN9Wn8NJAUwGK5/s1600/Android%20Devs%20_%20Google%20Devs%20-Blog_Header_1200x600.jpg"><img border="0" data-original-height="800" data-original-width="1058" id="imgFull" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitjUChjxBntwZiXgK6LlNX6KBWqMXXWdPUl1s0go2-_TL8p_Sxh_rhPYDqIMOoCzWU_sjFKcPuRyk7Z8JlGOkCn6xaDxJ4MkO7QaTj5U_R0GYsgEVGbqpXgNaM3QNhP9gvsa4-1a5yFRGk4eJzvT6sXvkFJQnlKiLQamdV10SBlCzN9Wn8NJAUwGK5/s1600/Android%20Devs%20_%20Google%20Devs%20-Blog_Header_1200x600.jpg"></a>
<p><em>Postado por Patricia Correa, diretora de marketing global para desenvolvedores</em></p><p>
</p><a name="more"></a><p></p>
<p>
Mais de 2,5 bilhões de pessoas acessam o Google Play todos os meses para encontrar apps e jogos criados por milhões de empresas em todo o mundo.
</p>
<p>
O <strong><a href="//g.co/play/weareplay">#WeArePlay</a></strong> celebra todos vocês, que fazem parte da comunidade global de pessoas por trás dessas empresas.
</p>
<p>
Cada pessoa que cria apps ou jogos tem uma história diferente para contar. Alguns são codificadores desde a infância, e outros chegaram à tecnologia na idade adulta. Alguns estão em grandes metrópoles, enquanto outros vivem em cidades menores. Independentemente das identidades e histórias, todos têm uma característica em comum: a paixão por transformar ideias em negócios que impactam as pessoas em todo o mundo.
</p>
<p>
Hoje, e ao longo dos próximos meses, o #WeArePlay celebra vocês compartilhando as suas histórias.</p><p><br></p>
<div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="475" src="https://www.youtube.com/embed/T7ckvawdL-w" width="600" youtube-src-id="T7ckvawdL-w"></iframe></div><div class="separator" style="clear: both; text-align: center;"><br></div><br>A série começa com a história de Yvonne e Alyssa, uma mãe e sua filha que residem em Londres e criaram o <a href="https://play.google.com/store/apps/details?id=com.frobelles.dressupgame&hl=en&gl=US">Frobelles</a>, um jogo de vestir que promove a representação de estilos de cabelos africanos e caribenhos.<div><br><div><br></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="475" src="https://www.youtube.com/embed/KwbUAYtDUO0" width="600" youtube-src-id="KwbUAYtDUO0"></iframe></div><div><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><br></div><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">Agora, você também pode conhecer as histórias dos amigos Ronaldo, Carlos e Thadeu, do Hand Talk Tradutor (do Brasil, meu país natal!), da amante de arte Zuzanna, do DailyArt (da Polônia), e do casal de viajantes Ina e Jonas, do TravelSpend (da Alemanha).</div><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyeN8eL2Px_opepl21wekucNO-0QVEPIk6JSEJiuIT5LMLxF8tilb_dQEpduIkwu__KBcLpoKGTSe2BDmnOA7M-YGgnRgzrsyT4iyn7nIIdXzZk_3KTzdgPrE0GmsAjRFxJoZdlUMcO0xnR-KvrYNTrRC-KBqEh-1fZLL6GhA4Vo-e9nVTjydkA1rY/s512/image3.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="512" data-original-width="512" height="475" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyeN8eL2Px_opepl21wekucNO-0QVEPIk6JSEJiuIT5LMLxF8tilb_dQEpduIkwu__KBcLpoKGTSe2BDmnOA7M-YGgnRgzrsyT4iyn7nIIdXzZk_3KTzdgPrE0GmsAjRFxJoZdlUMcO0xnR-KvrYNTrRC-KBqEh-1fZLL6GhA4Vo-e9nVTjydkA1rY/w474-h474/image3.gif" width="475"></a><p style="text-align: left;">
Nossos agradecimentos a todas as empresas de apps e jogos por fazerem parte da comunidade do Google Play. Sua dedicação e ambição estão ajudando milhões de pessoas a aprender, se conectar, relaxar, se exercitar, encontrar empregos, ajudar a sociedade, rir, se divertir, conhecer destinos de sonho e muito mais.
</p>
<p style="text-align: left;">
Leia mais e fique por dentro para conhecer muitas outras histórias em <a href="https://play.google.com/console/about/weareplay/" target="_blank">g.co/play/weareplay</a>
</p><p style="text-align: left;"><br></p>
<p>
Esta postagem do blog foi útil para você?
</p>
<p>
<a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&entry.2056663615&entry.646747778=changeme-mm/yy">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=2%E2%98%85+%E2%80%93+Not+very&entry.2056663615&entry.646747778=changeme-mm/yy">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&entry.2056663615&entry.646747778=changeme-mm/yy">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=4%E2%98%85+%E2%80%93+Very&entry.2056663615&entry.646747778=changeme-mm/yy">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=5%E2%98%85+%E2%80%93+Extremely&entry.2056663615&entry.646747778=changeme-mm/yy">★</a></p><p><a href="http://developers.android.com/distribute" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="177" data-original-width="498" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvf5kGTxyfrduDllKddzFneVgHYEaVq1xJcG4HY93xSQUQn8PM61q0msFO4hRJua82OeRjnB8qZyzQ_PRuWbYkqGeYPq_DqjSIwEhd6xjMO9M8WIIoo_3yQeFMRxaQdH57L6Oo4hHl_TCoDx-2AuxlrQeTGUiOtc0fTXK_rOi_ddYVgVYxEqFTUFbd/s16000/image7%20copy.png"></a></p></div></div></div></div>
</body></html>
DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com3tag:blogger.com,1999:blog-466374421998394222.post-33595412748435483402022-07-11T13:43:00.000-03:002022-07-11T13:43:28.201-03:00O progresso das iniciativas para manter o Google Play seguro<html>
<head>
<meta charset='utf-8' />
<style>
img {max-width:100%}
.article-image__thin-aspect-image {
background-position: 50%;
background-size: contain;
background-repeat: no-repeat;
height: 50%;
}
</style>
</head><body>
<div class="post-header">
<div class="published">
<span class="publishdate" itemprop="datePublished"> 7 de junho de 2022 </span>
</div>
</div>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSw8TuS7W-2QexWuci_D6K40Wxca4tW2OiQrvMDCggBSFbloly17_IjMwHMDn0OqCNYcM22PNZ8UNjLQMQjmTMk1ATDt-0ecQiWW-37pzg9p8y_KG4IUw63K9yvETtjz5hFsessddJ3Y6BKecZPMll6Mlj2VfzV4Gt6E65RpznlnFz1YKar9RLXCj/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png">
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSw8TuS7W-2QexWuci_D6K40Wxca4tW2OiQrvMDCggBSFbloly17_IjMwHMDn0OqCNYcM22PNZ8UNjLQMQjmTMk1ATDt-0ecQiWW-37pzg9p8y_KG4IUw63K9yvETtjz5hFsessddJ3Y6BKecZPMll6Mlj2VfzV4Gt6E65RpznlnFz1YKar9RLXCj/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png" style="display:none">
<p><em>Postado por Krish Vitaldevara, diretor de confiança e segurança do gerenciamento de produtos do Google Play e do Android</em></p><p>
</p><center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSw8TuS7W-2QexWuci_D6K40Wxca4tW2OiQrvMDCggBSFbloly17_IjMwHMDn0OqCNYcM22PNZ8UNjLQMQjmTMk1ATDt-0ecQiWW-37pzg9p8y_KG4IUw63K9yvETtjz5hFsessddJ3Y6BKecZPMll6Mlj2VfzV4Gt6E65RpznlnFz1YKar9RLXCj/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png" imageanchor="1"><img alt="Privacidade do Google Play" border="0" data-original-height="714" data-original-width="1058" id="imgFull" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQSw8TuS7W-2QexWuci_D6K40Wxca4tW2OiQrvMDCggBSFbloly17_IjMwHMDn0OqCNYcM22PNZ8UNjLQMQjmTMk1ATDt-0ecQiWW-37pzg9p8y_KG4IUw63K9yvETtjz5hFsessddJ3Y6BKecZPMll6Mlj2VfzV4Gt6E65RpznlnFz1YKar9RLXCj/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png" style="width:100%"></a> </center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
Queremos manter você <a href="https://android-developers.googleblog.com/2022/06/privacy-security-google-io-22.html">atualizado</a> sobre as iniciativas de privacidade e segurança que <a href="https://android-developers.googleblog.com/2022/03/privacy-and-security-direction.html">compartilhamos</a> este ano, para que você possa se planejar e usar novas ferramentas para criar seu negócio com segurança. Nos últimos meses, lançamos:
</p>
<ul>
<li>O <a href="https://developer.android.com/distribute/sdk-index">SDK Index do Google Play</a> para ajudar a <strong>avaliar a confiabilidade e segurança de um SDK</strong> e tomar decisões informadas quanto à adequação de um SDK a seu negócio e seus usuários. Veja insights e dados de uso sobre 100 dos SDKs comerciais mais utilizados no Google Play.
</li><li>A <a href="https://blog.google/products/google-play/data-safety/">seção Data safety</a> no Google Play, que ajuda os usuários a entender melhor as práticas de segurança dos apps. Os desenvolvedores nos disseram que esse novo recurso os ajuda a <strong>explicar as práticas de privacidade para seus usuários</strong> e a gerar confiança. Caso ainda não tenha feito isso, preencha o <a href="https://support.google.com/googleplay/android-developer/answer/10787469?hl=en">formulário de Segurança dos dados</a> até 20 de julho.
</li><li><a href="https://android-developers.googleblog.com/2022/05/whats-new-in-google-play.html">Melhorias em ferramentas de integridade de apps</a>, como a <a href="https://play.google.com/console/about/keymanagement/">Assinatura de apps do Google Play</a>, para assinar, com segurança, milhões de apps no Google Play e ajudar a garantir que as atualizações dos apps sejam confiáveis. Use a Assinatura de apps do Google Play para ajudar a proteger chaves de assinatura de apps contra perda ou comprometimento com o serviço seguro de gerenciamento de chaves do Google.
</li><li>A <a href="https://developer.android.com/google/play/integrity">API Play Integrity</a>, para ajudar a <strong>proteger apps, IPs e usuários</strong> contra pirataria e atividades maliciosas. Use essa API para ajudar a detectar interações fraudulentas e arriscadas, como tráfego de versões de apps modificadas ou pirateadas e dispositivos comprometidos ou com acesso root.
</li><li>E uma nova <a href="https://android-developers.googleblog.com/2022/04/expanding-plays-target-level-api-requirements-to-strengthen-user-security.html">política de nível de API de destino</a> para <strong>reforçar a segurança dos usuários</strong> protegendo-os contra a instalação de apps que podem não ter os recursos esperados de privacidade e segurança.
</li>
</ul>
<br>
<h3>
O que vem por aí
</h3>
<ul>
<li>Como parte de nosso trabalho no setor para criar soluções de publicidade mais privadas, lançamos as primeiras <a href="https://developer.android.com/design-for-safety/privacy-sandbox/program-overview">visualizações do desenvolvedor</a> do <a href="https://developer.android.com/design-for-safety/privacy-sandbox">Sandbox de privacidade no Android</a>. Temos <strong>mais visualizações do desenvolvedor chegando em breve</strong> e uma versão Beta ainda para este ano.
</li><li>Continuamos ajudando os desenvolvedores a atualizar apps antes que sejam tomadas medidas de aplicação de políticas. Prolongamos o tempo limite para as mudanças, esclarecemos melhor as respostas e adicionamos novos materiais de treinamento. Testes recentes de avisos avançados do Play Console também demonstraram resultados sólidos. À medida que forem refinados, esses recursos serão expandidos para mais desenvolvedores ainda este ano.
</li>
</ul>
<p>
Agradecemos a parceria para tornar o Google Play uma plataforma segura e confiável para todos.
</p>
</body></html>
DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com6tag:blogger.com,1999:blog-466374421998394222.post-83099119222004420222022-06-27T11:11:00.000-03:002022-06-27T11:11:08.371-03:00Visualização do desenvolvedor 3 do Sandbox de privacidade: suporte para medição de conversão, segmentos personalizados e seleção de anúncios<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJtTKEaaohJa7b5H5mkmCNu1LbQ3FPrPv0hSVWdEacemvtEHRWhk-DCi5aEartYwL0OMg6NOHJ1Vnn1fqeJ5cMc7Bl08SY7JcEBpKp5Vde-y_VDIPoVNlhb5VZbyv4PlauW_xpvnf6iS8yszMOnuo5w0Rw5NmYZ45reEvulY2KgGoPaG9NZ6H8hO2b/s1600/Android_SandboxPreview_V2_1024x512.jpg">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJtTKEaaohJa7b5H5mkmCNu1LbQ3FPrPv0hSVWdEacemvtEHRWhk-DCi5aEartYwL0OMg6NOHJ1Vnn1fqeJ5cMc7Bl08SY7JcEBpKp5Vde-y_VDIPoVNlhb5VZbyv4PlauW_xpvnf6iS8yszMOnuo5w0Rw5NmYZ45reEvulY2KgGoPaG9NZ6H8hO2b/s1600/Android_SandboxPreview_V2_1024x512.jpg">
<p><em>Postado por Fred Chung, relacionamento com o desenvolvedor Android </em><p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_fCyEfZ2ACPHDuqK6EY3uW52V2C5gTGXNJwt3MxgY4AllMjxQn7QrfPuaCfqq4GWGY-vYeIKSBMmhNWmmAqhBYskkMIR5G-VI9fsgJbN3Nf1x0e0z3yRbO-5I2vvwq3xu9KvO7_PPNzYQlwoRhyojSQ-Phb6LumHQTBXin52sruLs8KFKafYKe1_d/s1600/Android_SandboxPreview_V2_4209x1253.jpg" imageanchor="1"><img style="width:100%" alt="Visualização do desenvolvedor 3 do Sandbox de privacidade" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_fCyEfZ2ACPHDuqK6EY3uW52V2C5gTGXNJwt3MxgY4AllMjxQn7QrfPuaCfqq4GWGY-vYeIKSBMmhNWmmAqhBYskkMIR5G-VI9fsgJbN3Nf1x0e0z3yRbO-5I2vvwq3xu9KvO7_PPNzYQlwoRhyojSQ-Phb6LumHQTBXin52sruLs8KFKafYKe1_d/s1600/Android_SandboxPreview_V2_4209x1253.jpg" data-original-width="1058" data-original-height="714" /></a> </center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
O objetivo do Sandbox de privacidade no Android é desenvolver novas soluções que preservem a privacidade do usuário e proporcionem experiências eficientes e personalizadas com a publicidade em apps. Desde a <a href="https://android-developers.googleblog.com/2022/04/first-preview-privacy-sandbox-android.html">primeira visualização do desenvolvedor</a>, temos compartilhado <a href="https://developer.android.com/design-for-safety/privacy-sandbox/progress-updates/latest">atualizações de progresso</a> e continuamos envolvendo o setor em tudo, do <a href="https://developer.android.com/design-for-safety/privacy-sandbox/progress-updates/latest#timeline-update">cronograma da Visualização do desenvolvedor</a> e da taxonomia da API Topics ao gerenciamento de versões de SDK. Agradecemos seu feedback!
</p>
<p>
Hoje, estamos lançando a Visualização do desenvolvedor 3, que inclui APIs e recursos para desenvolvedores para a medição de conversão e casos de uso de remarketing. Além da prévia do <a href="https://developer.android.com/design-for-safety/privacy-sandbox/guides/sdk-runtime">SDK Runtime</a> e das APIs <a href="https://developer.android.com/design-for-safety/privacy-sandbox/guides/topics">Topics</a> lançados anteriormente, você pode, pela primeira vez, começar a testar e avaliar o impacto em todas as principais APIs do Sandbox de privacidade no Android.
</p>
<br>
<h2>APIs de relatórios de atribuição agregada e em nível de evento</h2>
<p>
Com essas APIs, os desenvolvedores conseguem fazer a medição de quando um clique em um anúncio ou em um evento de visualização leva a uma conversão, como o download de um novo jogo. Elas dão suporte a casos de uso essenciais de atribuição em apps e na Web, além de elevarem a privacidade dos usuários eliminando a dependência de identificadores de usuários entre partes.
</p>
<p>
Esta versão inclui um <a href="https://developer.android.com/design-for-safety/privacy-sandbox/guides/attribution/">guia do desenvolvedor</a> e <a href="https://github.com/android/privacy-sandbox-samples">amostras de apps</a> para ajudar na compreensão da configuração no lado do cliente e no lado do servidor e das interações das partes principais do fluxo de trabalho de relatórios de atribuição, incluindo:
</p>
<ul>
<li>Registro de fonte de atribuição e de eventos de gatilho.
<li>Recebimento de relatórios de eventos e relatórios não criptografados que podem ser agregados.</li>
<br>(Observe que a criptografia de relatórios que podem ser agregados ainda não foi implementada. Veja mais detalhes nas <a href="https://developer.android.com/design-for-safety/privacy-sandbox/release-notes">notas da versão</a>.) </ul>
<p>
Para facilitar os testes, a versão também dá suporte a <a href="https://developer.android.com/design-for-safety/privacy-sandbox/guides/attribution#force-reporting-jobs">comandos ADB</a> para substituir janelas de tempo de relatórios. Consulte a <a href="https://developer.android.com/design-for-safety/privacy-sandbox/reference/adservices/measurement/package-summary">Referência da API</a> para saber mais sobre as APIs de clientes Android.
</p>
<br>
<h2>APIs de segmentos personalizados e seleção de anúncios</h2>
<p>
Estas APIs fazem parte do FLEDGE para Android e fornecem os elementos essenciais para a veiculação de anúncios personalizados para os usuários com base no engajamento anterior com o app, sem o compartilhamento de dados de terceiros. Você será capaz de:
</p>
<ul>
<li>Gerenciar assinaturas de segmentos personalizados e observar como os valores dos parâmetros podem afetar resultados de leilão
<li>Buscar códigos de leilão do JavaScript em endpoints remotos
<li>Configurar e iniciar leilões de anúncios no dispositivo
<li>Usar relatórios de impressões
</li>
</ul>
<p>
Para saber mais, acesse as páginas de referência das APIs <a href="https://developer.android.com/design-for-safety/privacy-sandbox/reference/adservices/customaudience/package-summary">Custom Audience</a> e <a href="https://developer.android.com/design-for-safety/privacy-sandbox/reference/adservices/adselection/package-summary">Ad Selection</a> e as <a href="https://developer.android.com/design-for-safety/privacy-sandbox/release-notes">notas da versão</a>.
</p>
<br>
<h2>Outros recursos importantes</h2>
<p>
Se você está apenas começando a explorar a Visualização do desenvolvedor, revise também os recursos com suporte descritos nos guias do desenvolvedor para o <a href="https://developer.android.com/design-for-safety/privacy-sandbox/guides/sdk-runtime">SDK Runtime</a> e a <a href="https://developer.android.com/design-for-safety/privacy-sandbox/guides/topics">API Topics</a>.
</p>
<p>
Caso você precise se atualizar a respeito das principais tecnologias do Sandbox de privacidade no Android, recomendamos assistir a este <a href="https://youtu.be/pQdzFbmlvOo">vídeo de visão geral</a> e a revisar as <a href="https://developer.android.com/design-for-safety/privacy-sandbox#proposed-solutions">propostas de design</a>.
</p>
<center><iframe width="560" height="315" src="https://www.youtube.com/embed/pQdzFbmlvOo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
<h2>Primeiros passos com a Visualização do desenvolvedor</h2>
</p>
<p>
O lançamento da Visualização do desenvolvedor de hoje fornece os recursos necessários para começar o teste antecipado de recursos e <a href="https://issuetracker.google.com/issues/new?component=1116743&template=1629474">compartilhar feedback</a>. Para começar a desenvolver, <a href="https://developer.android.com/design-for-safety/privacy-sandbox/setup">consulte as instruções</a> para configurar o SDK e as <a href="https://developer.android.com/design-for-safety/privacy-sandbox/download">imagens do sistema</a> no emulador ou nos dispositivos Pixel com suporte.
</p>
<p>
Para obter mais informações sobre a Visualização do desenvolvedor do Sandbox de privacidade no Android, visite o <a href="https://developer.android.com/design-for-safety/privacy-sandbox/program-overview">site para desenvolvedores</a> e <a href="https://services.google.com/fb/forms/privacysandbox/">inscreva-se para receber nossa newsletter</a> sobre atualizações periodicamente.
</p>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com4tag:blogger.com,1999:blog-466374421998394222.post-24958364820914156582022-06-27T11:08:00.000-03:002022-06-27T11:08:42.613-03:00 Android 13 Beta 3 e estabilidade da plataforma<html>
<head>
<meta charset='utf-8' />
<style>
img {max-width:100%}
.article-image__thin-aspect-image {
background-position: 50%;
background-size: contain;
background-repeat: no-repeat;
height: 50%;
}
</style>
</head><body>
<h2 class="title" itemprop="name">
</h2>
<div class="post-header">
<div class="published">
<span class="publishdate" itemprop="datePublished"> 8 de junho de 2022 </span>
</div>
</div>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjolHnYXFnb81t2qu38Z8BPxU0QNitCVulwRwgZlijGDwCbcSSPETvSVr9apTSV_eDknzPDs1BwccZU_lYr15czYU_ddiXete76bVxWWIhNE29-PfOCxMzvashjOwvGWrzZ4rynym-k4aNQ4c-tmN7v4O5vh0iaRpFZTMuYTFqjFLrNpHNlOwSyZyf6/s1600/unnamed_%281%29.png.jpeg">
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjolHnYXFnb81t2qu38Z8BPxU0QNitCVulwRwgZlijGDwCbcSSPETvSVr9apTSV_eDknzPDs1BwccZU_lYr15czYU_ddiXete76bVxWWIhNE29-PfOCxMzvashjOwvGWrzZ4rynym-k4aNQ4c-tmN7v4O5vh0iaRpFZTMuYTFqjFLrNpHNlOwSyZyf6/s1600/unnamed_%281%29.png.jpeg" style="display:none">
<p><em>Postado por Dave Burke, vice-presidente de engenharia</em></p><p>
</p><p><img alt="Logotipo do Android 13" height="300" src="https://blogger.googleusercontent.com/img/a/AVvXsEjnrShXcFkBmErmhgdmx82vJbaKBIxU6p2Yz2Vr1V7AlFkD2tGwRmx_a7tWcInPmiUh8VpPmEEqXut-EjP23lFYG9wiMO4sKBDEwbZ3MNppZOy_HW54OXO4SkdQVH08cWdi7QnTMMwGELFoPq_r7_cyaGU8fx2InJG2R-NfkqF1IRt7rKOfA8M1GhUy" style="float: right; margin-bottom: 0.3px; margin-right: 10px;" width="300px"></p>
<p>
Hoje estamos lançando a terceira versão Beta do Android 13, chegando à fase final do ciclo em que o foco está no aperfeiçoamento e desempenho. Com o Android 13, aprimoramos nossos <a href="https://android-developers.googleblog.com/2022/02/first-preview-android-13.html">temas principais</a> de privacidade e segurança, produtividade do desenvolvedor e suporte a tablets e telas grandes.
</p>
<p>
Há muito a explorar no Android 13, desde recursos de privacidade, como a nova permissão de notificação e o seletor de fotos, até recursos de produtividade, como os ícones temáticos de apps e o suporte a idiomas por app, além de padrões modernos, como vídeo HDR, áudio Bluetooth de baixa energia (LE) e MIDI 2.0 por USB. Além disso, estendemos as <a href="https://android-developers.googleblog.com/2021/10/12L-preview-large-screens.html">atualizações mais recentes feitas no 12L</a>, oferecendo <a href="https://developer.android.com/large-screens">ferramentas melhores</a> para aproveitar os mais de 270 milhões de tablets e dispositivos de tela grande em uso ativo.
</p>
<p>
Com a versão Beta 3, o Android 13 entra na fase de <a href="https://developer.android.com/preview/overview#timeline">estabilidade da plataforma</a>, o que significa que, agora, as APIs de desenvolvedor e todos os comportamentos voltados para os apps estão finalizados. Agradecemos todo o feedback que vocês compartilharam para nos ajudar a chegar a esse ponto! Para os desenvolvedores, o foco agora está na qualidade e nos testes de compatibilidade à medida que os apps são preparados para o lançamento oficial no final do ano!
</p>
<p>
É possível obter a versão Beta 3 para dispositivos Pixel <a href="https://www.google.com/android/beta">registrando-se aqui</a> para obter atualizações OTA. Se você já tiver feito o registro, receberá automaticamente a atualização de hoje. Você também pode experimentar o Android 13 Beta em alguns dispositivos de vários de nossos parceiros. Saiba mais em <a href="https://android.com/beta">android.com/beta</a>. Continue lendo para ter uma visão geral rápida de como preparar os apps e visite o <a href="https://developer.android.com/about/versions/13">o site para desenvolvedores Android 13</a> para ver mais detalhes.
</p>
<br>
<h2>Estabilidade da plataforma</h2>
<p>
Com a Beta 3, o Android 13 chega à fase de <a href="https://developer.android.com/preview/overview#platform_stability">estabilidade da plataforma</a>, um marco que indica que todas as APIs e todos os comportamentos voltados para os apps, inclusive o SDK de API nível 33 e as APIs do NDK, agora estão finalizados. Portanto, a partir da versão Beta 3, você pode desenvolver e lançar atualizações de compatibilidade com segurança, sabendo que a plataforma não sofrerá mudanças.
</p>
<center><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpmPI9On1IVI6OwlbI1T0sQrc04wM6dH2svnhmNOvzO6CDxAN5EPgGz6PceunmK3pMZRITjyGoLiLRAX-_jsOB4Wg6M9q1kiPqExmkvZ-aHPRnjEL56cDoa28nmuUBkAJe-TWRywLjEdBnGMg_LJ1kYtDhZNcMuXHRIwDYXv8Kc8rrbJW1TDnAy-6V/s1600/unnamed4rgthy.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="Cronograma de estabilidade da plataforma com a fase estável em junho" border="0" data-original-height="360" data-original-width="1578" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpmPI9On1IVI6OwlbI1T0sQrc04wM6dH2svnhmNOvzO6CDxAN5EPgGz6PceunmK3pMZRITjyGoLiLRAX-_jsOB4Wg6M9q1kiPqExmkvZ-aHPRnjEL56cDoa28nmuUBkAJe-TWRywLjEdBnGMg_LJ1kYtDhZNcMuXHRIwDYXv8Kc8rrbJW1TDnAy-6V/s1600/unnamed4rgthy.png" style="width:100%"></a></div></center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
Estamos solicitando a todos os desenvolvedores de jogos e apps que <strong>comecem agora os testes finais de compatibilidade</strong> e se preparem para publicar as atualizações de compatibilidade assim que possível, antes do lançamento final.
</p>
<p>
No caso dos desenvolvedores de SDKs, bibliotecas, ferramentas e mecanismos de jogos, é ainda mais importante começar os testes agora e lançar as atualizações de compatibilidade o mais rápido possível. É importante lembrar que o desenvolvimento de downstream de apps e jogos pode ser bloqueado até que você receba as atualizações. Então, ao lançar uma atualização de compatibilidade, não deixe de avisar os desenvolvedores.
</p>
<br>
<h2>Compatibilidade de apps</h2>
<p>
Compatibilidade de apps significa que o app funciona como esperado em uma nova versão da plataforma. Em cada versão, fazemos mudanças essenciais na plataforma que melhoram a privacidade e segurança e também a experiência geral do usuário no SO. Como isso pode afetar os apps, é importante testá-los agora, fazer as atualizações necessárias e publicar uma atualização de compatibilidade para os usuários antes do lançamento final. Os usuários desfrutarão de um nível de qualidade básico, porém essencial, quando explorarem as novidades no Android 13.
</p>
<p>
Para testar a compatibilidade de apps, basta instalar o app de produção em um dispositivo com o Android 13 Beta 3 usando o Google Play ou outra fonte. Passe por todos os fluxos do app e fique de olho em possíveis problemas funcionais ou de IU. Revise as <a href="https://developer.android.com/about/versions/13/behavior-changes-all">mudanças de comportamento</a> para concentrar os testes nesses pontos. Estas são algumas das mudanças em que você deve ficar de olho:
</p>
<ul>
<li><strong>Permissão em tempo de execução para notificações</strong> - O Android 13 introduz uma nova permissão em tempo de execução para o envio de notificações de um app. Certifique-se de entender como funciona a nova permissão e planeje-se para segmentar o Android 13 (API 33) o mais rápido possível. <a href="https://developer.android.com/about/versions/13/changes/notification-permission">Saiba mais aqui</a>.
</li><li><strong>Visualização da área de transferência</strong> - Certifique-se de que o app oculte os dados confidenciais na nova visualização da área de transferência do Android 13, como senhas e informações de cartão de crédito. <a href="https://developer.android.com/about/versions/13/behavior-changes-all#copy-sensitive-content">Saiba mais aqui</a>.
</li><li><strong>Pré-busca do JobScheduler</strong> - O <a href="https://developer.android.com/reference/android/app/job/JobScheduler">JobScheduler</a> agora tenta prever quando ocorrerá o próximo lançamento do app e executa todas as tarefas de pré-busca associadas antes desse lançamento. Se você usa tarefas de pré-busca, faça o teste para confirmar se elas estão funcionando conforme o esperado. <a href="https://developer.android.com/about/versions/13/behavior-changes-all#prefetch-job-handling">Saiba mais aqui</a>.
</li>
</ul>
<p>
Além disso, lembre-se de testar a compatibilidade de bibliotecas e SDKs nos apps. Caso você encontre algum problema, tente atualizar para a versão mais recente do SDK e da biblioteca ou peça ajuda ao desenvolvedor.
</p>
<p>
Depois de publicar a versão compatível de um app atual, você pode dar início ao <a href="https://developer.android.com/preview/migration#setup_sdk">processo</a> de <a href="https://developer.android.com/distribute/best-practices/develop/target-sdk">atualização do targetSdkVersion do app</a>. Revise as <a href="https://developer.android.com/about/versions/13/behavior-changes-13">mudanças de comportamento para apps segmentados para o Android 13</a> e use o <a href="https://developer.android.com/guide/app-compatibility/test-debug">framework de compatibilidade</a> para ajudar na detecção rápida de problemas. Estas são algumas das mudanças que você deve testar (aplicáveis apenas aos apps com targetSdkVersion definido como API 33 ou posterior):
</p>
<ul>
<li><strong>Permissões para dispositivos nas proximidades para Wi-Fi</strong> - Os apps que gerenciam as conexões de um dispositivo a pontos de acesso próximos devem usar uma nova permissão em tempo de execução <code>NEARBY_WIFI_DEVICES</code> para operações de Wi-Fi, como busca, sem a necessidade de acessar a localização do dispositivo. Algumas APIs de Wi-Fi exigem que o app tenha essa nova permissão. <a href="https://developer.android.com/about/versions/13/features/nearby-wifi-devices-permission">Saiba mais aqui</a>.
</li><li><strong>Permissões granulares de mídia</strong> - Para apps segmentados para o Android 13 que leem arquivos de mídia em armazenamento de dados comum, você deve solicitar uma ou mais das novas permissões granulares, em vez da permissão <code>READ_EXTERNAL_STORAGE</code>. <a href="https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions">Saiba mais aqui</a>.
</li><li><strong>Mudanças de permissão para sensores corporais</strong> - O Android 13 introduz o acesso "durante o uso" para sensores corporais. Os apps que precisam acessar informações de sensores corporais em segundo plano devem declarar uma nova permissão <code>BODY_SENSORS_BACKGROUND</code>. <a href="https://developer.android.com/about/versions/13/behavior-changes-13#body-sensors-background-permission">Saiba mais aqui</a>.
</li><li><strong>Filtros de intents que bloqueiam intents não correspondentes</strong> - Os apps que enviam um intent para um componente exportado de outro app segmentado para o Android 13 (API 33) ou posterior agora devem fazer a correspondência com um filtro de intent no app receptor. <a href="https://developer.android.com/about/versions/13/behavior-changes-13#intent-filters">Saiba mais aqui</a>.
</li><li><strong>Controles de mídia derivados do PlaybackState</strong> - O Android 13 deriva mais controles de mídia de ações <a href="https://developer.android.com/reference/android/media/session/PlaybackState">PlaybackState</a> para apresentar um conjunto mais completo de controles consistentes nos vários tipos de dispositivo. Certifique-se de que os apps possam lidar com essas mudanças. <a href="https://developer.android.com/about/versions/13/behavior-changes-13#playback-controls">Saiba mais aqui</a>.
</li>
</ul>
<br>
<h2>Suporte a tablets e telas grandes </h2>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
O Android 13 aprimora as otimizações para tablets introduzidas no <a href="https://android-developers.googleblog.com/2021/10/12L-preview-large-screens.html">12L</a>. Portanto, como parte do processo de teste, garanta que a aparência do app seja a melhor possível em tablets e outros dispositivos de tela grande. Para testar o app com os recursos para telas grandes, <a href="https://developer.android.com/about/versions/13/get#on_emulator">configure um emulador Android</a> no Android Studio ou use um dispositivo de tela grande de nossos <a href="https://developer.android.com/about/versions/13/devices">parceiros do Android 13 Beta</a>. Veja algumas áreas que você deve analisar:
</p>
<ul>
<li><strong>Interação da barra de tarefas</strong> - Verifique a resposta do app ao visualizá-lo com a nova barra de tarefas em telas grandes. Verifique se a IU do app não é cortada nem bloqueada pela barra de tarefas. <a href="https://developer.android.com/about/versions/13/features/large-screens#multitasking">Saiba mais aqui</a>.
</li><li><strong>Modo de várias janelas</strong> - O modo de várias janelas agora é ativado por padrão para todos os apps, seja qual for a configuração, para garantir que o app consiga lidar com a tela dividida de maneira apropriada. Você pode fazer um teste arrastando e soltando o app no modo de tela dividida e ajustando o tamanho da janela. <a href="https://developer.android.com/about/versions/13/features/large-screens#dev-test-splitscreen">Saiba mais aqui</a>.
</li><li><strong>Melhor experiência de compatibilidade</strong> - Se o app ainda não for otimizado para uso em tablets, por exemplo, se usar uma orientação fixa ou não for redimensionável, verifique como ele reage aos ajustes no modo de compatibilidade, como o letterboxing. <a href="https://developer.android.com/about/versions/13/features/large-screens#compatibility">Saiba mais aqui</a>.
</li><li><strong>Projeção de mídia</strong> - Verifique como os apps que usam projeção de mídia respondem durante a reprodução, o streaming ou a transmissão de mídia em telas grandes. Não se esqueça de considerar também as mudanças de postura nos dispositivos dobráveis. <a href="https://developer.android.com/about/versions/13/features/large-screens#media-projection">Saiba mais aqui</a>.
</li><li><strong>Visualização da câmera</strong> - Nos apps de câmera, verifique como a IU de visualização da câmera responde a telas grandes quando o app fica limitado a uma parte da tela no modo de tela dividida ou de várias janelas. Verifique também a resposta do app diante de uma mudança na postura de um dispositivo dobrável. <a href="https://developer.android.com/training/camera2/camera-preview">Saiba mais aqui</a>.
</li>
</ul>
<p>
Leia mais a respeito dos recursos para tablets no Android 13 e dos testes a serem feitos <a href="https://developer.android.com/about/versions/13/features/large-screens">aqui</a>.
</p>
<br>
<h2>Primeiros passos com o Android 13!</h2>
<p>
A versão Beta de hoje tem tudo o que você precisa para testar apps e experimentar os recursos do Android 13. Basta <a href="https://www.google.com/android/beta">registrar seu dispositivo Pixel</a> para receber a atualização OTA. Para começar, <a href="https://developer.android.com/about/versions/13/setup-sdk">configure o SDK do Android 13</a>.
</p>
<p>
Você também pode testar apps com o Android 13 Beta nos dispositivos de vários de nossos parceiros. Visite <a href="https://developer.android.com/about/versions/13/devices">android.com/beta</a> para ver a lista completa de parceiros, com links para os respectivos sites, que fornecem detalhes dos dispositivos com suporte e das versões Beta, começando com a Beta 1. Os parceiros serão responsáveis por seus próprios registros e pelo suporte e fornecerão as atualizações Beta diretamente a você. Para testes ainda mais abrangentes, você pode experimentar o Android 13 Beta 3 em <a href="https://developer.android.com/about/versions/13/gsi-release-notes">imagens GSI do Android</a> e, se não tiver um dispositivo, pode testar no <a href="https://developer.android.com/about/versions/13/get#on_emulator">Android Emulator</a>.
</p>
<p>
Veja todos os detalhes sobre o Android 13 no <a href="https://developer.android.com/13">site para desenvolvedores Android 13</a>.
</p>
</body></html>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com6tag:blogger.com,1999:blog-466374421998394222.post-73914312581481651922022-06-14T16:51:00.001-03:002022-06-15T09:16:30.778-03:00Apresentação do Flutter 3<style>
.flutter3post h2 {
font-size: 30px;
line-height: 120%;
}
.flutter3post h3 {
font-size: 30px;
line-height: 120%;
}
.flutter3post h4 {
font-size: 16px;
line-height: 120%;
}
.flutter3post p {
margin-bottom: 40px;
}
</style>
<section class="flutter3post">
<p style="margin-bottom: 20px;">O ápice de nossa jornada para o desenvolvimento de IU multiplataforma para telefones, computadores e a Web.</p>
<h4>É com grande prazer que anunciamos o lançamento do Flutter 3 como parte da palestra de abertura do Google I/O. O Flutter 3 completa nosso roteiro de transformação de um framework para dispositivos móveis para um framework multiplataforma, com a disponibilidade do suporte a apps para computadores com macOS e Linux, além de melhorias na integração com o Firebase, novos recursos de produtividade e desempenho e suporte ao Apple Silicon.</h4>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyHRKqB1206wiBkq8Q7ZgUT4nMWIfgUdXdBl-qVwOosnn5w9c8l7LvvqfSPGzJ4WKbPu-x3lt6tALblKCth0Jk2YyFwxsjiZIkUfc92WtqX4dSRMjl8u-5mpVZoDNWwsxNDnWnUEJIet5J39CJIqqaqELmyblQKw0Jpw9LT2_T_ekkzru7PjLoCqFyxg/s1840/image-flutter3.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1035" data-original-width="1840" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjyHRKqB1206wiBkq8Q7ZgUT4nMWIfgUdXdBl-qVwOosnn5w9c8l7LvvqfSPGzJ4WKbPu-x3lt6tALblKCth0Jk2YyFwxsjiZIkUfc92WtqX4dSRMjl8u-5mpVZoDNWwsxNDnWnUEJIet5J39CJIqqaqELmyblQKw0Jpw9LT2_T_ekkzru7PjLoCqFyxg/s600/image-flutter3.png"/></a></div>
<h2>A jornada até o Flutter 3</h2>
<p>O Flutter começou como uma tentativa de revolucionar o desenvolvimento de apps, combinando o modelo de desenvolvimento iterativo da Web com a renderização gráfica acelerada por hardware e o controle no nível do pixel, que antes eram uma exclusividade dos jogos. Nos últimos quatro anos desde o Flutter 1.0 Beta, temos expandido gradualmente essas bases, adicionando novas funcionalidades ao framework e novos widgets, uma integração maior com as plataformas subjacentes, uma biblioteca completa de pacotes e muitas melhorias de desempenho e ferramentas.</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Fh4JEvJQG9215igWmy5aKfZg_15ZqLdD5p2Va7yumOk8nnMQtwX-AcGBa2YJ9xrQMzgns_c5I4w08HwL3ci8z-TGhJ1ru3nMGv1nkHRG-EKTEU2NqrOjQMJLWegiZAwaM8E1W2v5BmA4Nlp0JoQMCPHTTNLYSomhlBTJ9PDQr4UGtPJJWq0rMhFWgQ/s1963/image-timeline.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="412" data-original-width="1963" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-Fh4JEvJQG9215igWmy5aKfZg_15ZqLdD5p2Va7yumOk8nnMQtwX-AcGBa2YJ9xrQMzgns_c5I4w08HwL3ci8z-TGhJ1ru3nMGv1nkHRG-EKTEU2NqrOjQMJLWegiZAwaM8E1W2v5BmA4Nlp0JoQMCPHTTNLYSomhlBTJ9PDQr4UGtPJJWq0rMhFWgQ/s600/image-timeline.png"/></a></div>
<p>À medida que o produto amadureceu, mais de vocês começaram a criar apps com ele. Hoje, já são mais de 500 mil apps publicados com o Flutter. Análises de empresas de pesquisa, como a <a target="_blank" href="https://www.data.ai/en/">data.ai</a>, e depoimentos públicos mostram que o Flutter é usado por uma <a target="_blank" href="https://flutter.dev/showcase">ampla lista de clientes</a> em muitos segmentos: de apps sociais, como o <a target="_blank" href="https://play.google.com/store/apps/details?id=com.tencent.mm&hl=en_US&gl=US">WeChat</a>, até os financeiros e bancários, como o <a target="_blank" href="https://apps.apple.com/us/app/betterment-investing-saving/id393156562">Betterment</a> e o <a target="_blank" href="https://play.google.com/store/apps/details?id=com.nu.production&hl=en_US&gl=US">Nubank</a>; de apps de comércio, como o <a target="_blank" href="https://play.google.com/store/apps/details?id=com.zzkko&hl=en_US&gl=US">SHEIN</a> e o <a target="_blank" href="https://apps.apple.com/us/app/trip-com-hotels-flights-trains/id681752345">trip.com</a>, até os de estilo de vida, como o <a target="_blank" href="https://fastic.com/">Fastic</a> e o <a target="_blank" href="https://auspreneur.com.au/tabcorp-adopts-googles-flutter-platform/">Tabcorp</a>; de aplicativos Companion, como o <a target="_blank" href="https://www.press.bmwgroup.com/global/article/detail/T0328610EN/the-my-bmw-app:-new-features-and-tech-insights-for-march-2021?language=en">My BMW</a>, a instituições públicas, como o <a target="_blank" href="https://apps.apple.com/app/id1506827551">governo brasileiro</a>.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/8RmsstcNE1Y" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>Os desenvolvedores nos dizem que o Flutter ajuda a criar apps lindos com mais rapidez e para mais plataformas. Em nosso estudo mais recente com os usuários:</p>
<ul>
<li>91% dos desenvolvedores concordaram que o Flutter reduziu o tempo de criação e publicação de apps.</li>
<li>85% dos desenvolvedores concordaram que o Flutter tornou seus apps mais bonitos do que antes.</li>
<li>85% concordaram que ele lhes permitiu publicar apps para mais plataformas do que antes.</li>
</ul>
<p>Em uma <a target="_blank" href="https://tech-blog.sonos.com/posts/renovating-setup-with-flutter/">postagem recente de blog da Sonos</a> sobre sua experiência de configuração reformulada, eles enfatizaram o segundo desses itens.</p>
<p>"Não é um exagero dizer que o [Flutter] desbloqueou um nível premium diferente de qualquer coisa que nossa equipe já havia criado. O mais importante para nossos projetistas é que a facilidade com que novas IUs podem ser criadas significa que nossa equipe gasta menos tempo dizendo "não" a especificações e mais tempo iterando sobre elas. Se isso parecer útil, recomendamos experimentar o Flutter. Nós estamos felizes por termos feito isso."</p>
<h2>Apresentação do Flutter 3</h2>
<p>Hoje, apresentamos o Flutter 3, que é o ápice de nossa jornada para preencher as plataformas suportadas pelo Flutter. Com o Flutter 3, você pode criar lindas experiências para seis plataformas a partir de uma única base de código, o que dá aos desenvolvedores uma produtividade inigualável e permite que as startups tragam novas ideias para o mercado como um todo desde o primeiro dia.</p>
<p>Nas versões anteriores, complementamos o iOS e o Android com <a target="_blank" href="https://medium.com/flutter/flutter-web-support-hits-the-stable-milestone-d6b84e83b425">suporte à Web</a> e ao <a target="_blank" href="https://medium.com/flutter/announcing-flutter-for-windows-6979d0d01fed">Windows</a>, e agora o <strong>Flutter 3 adiciona o suporte estável a apps para o macOS e o Linux</strong>. A adição de suporte a plataformas requer mais do que a renderização de pixels: ela inclui novos modelos de entrada e interação, suporte à compilação e criação, acessibilidade e internacionalização e integração específica de plataforma. Nosso objetivo é dar a você a flexibilidade para tirar o máximo proveito do sistema operacional subjacente e, ao mesmo tempo, compartilhar toda a IU e a lógica que você quiser.</p>
<p>No macOS, investimos no suporte ao Intel e ao Apple Silicon com o suporte a <a target="_blank" href="https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary">binários universais</a>, que permite que os apps incluam executáveis nativos nas duas arquiteturas. No Linux, a Canonical e a Google colaboraram para oferecer uma opção altamente integrada e sofisticada para o desenvolvimento.</p>
<p>Um ótimo exemplo de como o Flutter habilita experiências lindas em computadores é o <a target="_blank" href="https://superlist.com/">Superlist</a>, cuja versão Beta está sendo lançada hoje. O Superlist oferece colaboração turbinada por meio de um novo app que combina listas, tarefas e conteúdo livre em uma nova abordagem de lista de tarefas e planejamento pessoal. A equipe do Superlist escolheu o Flutter por sua capacidade de proporcionar uma experiência de marca avançada e rápida para computadores, e achamos que o progresso deles até o momento demonstra por que essa foi uma ótima escolha.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/YRuQj7mlH2I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>O Flutter 3 também aprimora muitos dos recursos básicos, com desempenho melhor, suporte ao Material You e atualizações de produtividade. </p>
<p>Além do trabalho mencionado acima, nesta versão o Flutter é totalmente nativo no <a target="_blank" href="https://support.apple.com/en-us/HT211814">Apple Silicon</a> para desenvolvimento. Embora seja compatível com dispositivos Apple com tecnologia M1 desde seu lançamento, o Flutter agora tira total proveito do <a target="_blank" href="https://medium.com/dartlang/announcing-dart-2-14-b48b9bb2fb67">suporte do Dart ao Apple Silicon</a>, permitindo uma compilação muito mais rápida em dispositivos M1 e o suporte a <a target="_blank" href="https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary">binários universais</a> para apps macOS. </p>
<p>Nosso trabalho para o <a target="_blank" href="https://m3.material.io/">Material Design 3</a> está praticamente concluído nesta versão, permitindo que os desenvolvedores se beneficiem de um sistema de design adaptável e multiplataforma que oferece esquemas de cores dinâmicos e componentes visuais atualizados:</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj95_l_G7HwOFiTJEvEbZ1aU4OjGayti4-qnRWjl5zdF-5UACbxYOhmpyyeHY442Uob5HfF5qefOAd5u3cShXBLqJNP5oheVNue9Tqp-j3C2KK-Lq6LWsgavMUIbA5kGEqA3YnHO4MMz11CD6cgedRRGLxLNzqTvr075_3ffqL4FDV-DT-2sGseWi3tsg/s1958/image-material-design3.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="1017" data-original-width="1958" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj95_l_G7HwOFiTJEvEbZ1aU4OjGayti4-qnRWjl5zdF-5UACbxYOhmpyyeHY442Uob5HfF5qefOAd5u3cShXBLqJNP5oheVNue9Tqp-j3C2KK-Lq6LWsgavMUIbA5kGEqA3YnHO4MMz11CD6cgedRRGLxLNzqTvr075_3ffqL4FDV-DT-2sGseWi3tsg/s600/image-material-design3.png"/></a></div>
<p>Nossa postagem do blog técnico detalhado fala mais sobre essas e muitas outras novidades do Flutter 3. </p>
<p>O Flutter conta com o Dart, uma linguagem portável de alta produtividade para o desenvolvimento multiplataforma. Nosso trabalho no Dart neste ciclo inclui novos recursos de linguagem que reduzem o código boilerplate e auxiliam com capacidade de leitura, suporte experimental a RISC-V, uma ferramenta de inspeção atualizada e nova documentação. Para saber mais detalhes sobre todas as novas melhorias do Dart 2.17, confira o <a target="_blank" href="https://medium.com/dartlang">blog dedicado</a>.</p>
<h2>Firebase e Flutter</h2>
<p>É claro que a criação de um app requer mais do que um framework de IU. Os editores de apps precisam de um pacote abrangente de ferramentas para ajudá-los a criar, lançar e operar os apps, incluindo serviços como autenticação, armazenamento de dados, funções de nuvem e testes de dispositivos. Vários serviços dão suporte ao Flutter, incluindo <a target="_blank" href="https://docs.sentry.io/platforms/flutter/">Sentry</a>, <a target="_blank" href="https://appwrite.io/docs/getting-started-for-flutter">AppWrite</a> e <a target="_blank" href="https://docs.amplify.aws/start/q/integration/flutter/">AWS Amplify</a>. </p>
<p>A oferta da Google para serviços de apps é o Firebase, e <a href="https://www.slashdata.co/developer-program-benchmarking/?">estudos comparativos com desenvolvedores realizados pela SlashData</a> demonstram que 63% dos desenvolvedores Flutter usam o Firebase em seus apps. Por isso, nas últimas versões, temos trabalhado com o Firebase para expandir e integrar o Flutter com perfeição. Isso incluiu levar os plug-ins do Firebase para Flutter até a versão 1.0, adicionando documentação e ferramentas melhores e novos widgets, como o <a target="_blank" href="https://pub.dev/packages/flutterfire_ui">FlutterFire UI</a>, que fornece aos desenvolvedores uma IU reutilizável para telas de autorização e perfil.</p>
<p>Hoje, anunciamos a evolução da integração Flutter/Firebase como uma peça central e totalmente suportada da oferta do Firebase. Estamos transferindo o código-fonte e a documentação para o repositório e o site principais do Firebase, e você pode ter certeza de que evoluiremos o suporte do Firebase para o Flutter lado a lado com o Android e o iOS.</p>
<p>Além disso, fizemos grandes melhorias para dar suporte a apps Flutter usando o Crashlytics, o conhecido serviço de relatórios de erros em tempo real do Firebase. Com as atualizações do <a target="_blank" href="https://firebase.google.com/docs/crashlytics">plug-in Flutter Crashlytics</a>, você agora pode rastrear erros fatais em tempo real e usar o mesmo conjunto de recursos disponível para outros desenvolvedores iOS e Android. Isso inclui importantes alertas e métricas, como "usuários livres de falhas", que ajudam você a estar sempre a par da estabilidade de um app. O pipeline de análise do Crashlytics foi atualizado para melhorar o armazenamento em cluster de falhas do Flutter, agilizando a triagem, a priorização e a correção de problemas. E, por último, otimizamos o processo de configuração do plug-in para que ele exija apenas algumas etapas para funcionar com o Crashlytics diretamente pelo código do Dart.</p>
<h3>Casual Games Toolkit do Flutter</h3>
<p>Para a maioria dos desenvolvedores, o Flutter é um framework de apps. Mas há também uma comunidade cada vez maior voltada para o desenvolvimento de jogos casuais que se beneficia do suporte gráfico acelerado por hardware fornecido pelo Flutter, juntamente com mecanismos de jogos de código aberto, como o <a target="_blank" href="https://flame-engine.org/">Flame</a>. Queremos facilitar as coisas para os desenvolvedores de jogos casuais e, por isso, anunciamos hoje no I/O o Casual Games Toolkit, que fornece um starter kit de modelos e práticas recomendadas, além de créditos para anúncios e serviços em nuvem.</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV3xjTWjLlYb08rWOjokqVzw2xL3sOt2XKrm6HzL79Jlf5W7Q2H96V0Wngr-zuPWEK6u4jh9GkiPNvCmsNJWuM2Rq-z6PZnH8CHz-Ez54LPoxYpAzh_EKT1NJ93ieWpJSr_xiz_7W_u3Q8Pt-KR-1_WVqWq5B6dv1oU2m8jpcjs0Ro2nf8K2e8JS5p9w/s1342/image-casual-games.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="Casual Games Toolkit" border="0" width="600" data-original-height="537" data-original-width="1342" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiV3xjTWjLlYb08rWOjokqVzw2xL3sOt2XKrm6HzL79Jlf5W7Q2H96V0Wngr-zuPWEK6u4jh9GkiPNvCmsNJWuM2Rq-z6PZnH8CHz-Ez54LPoxYpAzh_EKT1NJ93ieWpJSr_xiz_7W_u3Q8Pt-KR-1_WVqWq5B6dv1oU2m8jpcjs0Ro2nf8K2e8JS5p9w/s600/image-casual-games.png"/></a></div>
<p>Embora o Flutter não seja projetado para jogos de ação em 3D de alta intensidade, até mesmo alguns desses jogos se voltaram para o Flutter para a IU fora do jogo, incluindo títulos populares como o <a target="_blank" href="https://play.google.com/store/apps/details?id=com.tencent.ig">PUBG Mobile</a>, que têm centenas de milhões de usuários. E, para o I/O, queríamos ver até onde podíamos levar a nossa tecnologia. Por isso, criamos um jogo de fliperama divertido, habilitado pelo Firebase e com o suporte à Web do Flutter. O I/O Pinball traz uma mesa personalizada, criada com base em quatro dos mascotes favoritos do Google, o Dash do Flutter, o Sparky do Firebase, o robô Android e o dinossauro do Chrome, e que permite competir com outros usuários. Achamos que essa é uma maneira divertida de demonstrar a versatilidade do Flutter.</p>
<div class="separator" style="clear: both;"><a target="_blank" href="https://ashehwkdkdjruejdnensjsjdne.web.app/" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" width="600" data-original-height="863" data-original-width="1533" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU7frNjmDdeopb5y0ZKa-mxO5VTyCeP5tl_ij-y11zOL3NR6AGnTasmvIYbh0UyZ_6v3XHiyAh_N5F8c2axMykkkGGdR5VYqgheVVkfQ-6vsHhkqOKZMAZhHkI60LgQxrl8LBbPt_qmRgRt5NUoW-h_f8fMq886wZhw0Rrk1jxjZ3OdcyYMMlMvGRFuw/s600/image-pinball.png"/></a></div>
<h3>Comunidade</h3>
<p>Algo que amamos no Flutter é que ele não é um produto apenas do Google. É um produto "de todos". Código aberto significa que todos podemos participar e ter interesse no sucesso, seja contribuindo com novo código ou documentação, criando pacotes que dão novos superpoderes ao framework central, escrevendo livros e cursos de treinamento que ensinam outras pessoas ou ajudando a organizar eventos e grupos de usuários. </p>
<p>Para mostrar o melhor da comunidade, patrocinamos recentemente um desafio Puzzle Hack em colaboração com o DevPost, oferecendo aos desenvolvedores a chance de demonstrar suas habilidades com a repaginação do quebra-cabeça deslizante clássico com o Flutter. Essa acabou sendo uma demonstração fantástica de como a Web, os computadores e os dispositivos móveis se unem: agora, todos podemos jogar on-line ou por meio das lojas. </p>
<p>Elaboramos este vídeo para mostrar algumas de nossas participações favoritas e os ganhadores dos prêmios, e achamos que você vai gostar:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/l6hw4o6_Wcs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<p>Agradecemos o seu apoio ao Flutter, e damos a você as boas-vindas ao Flutter 3!</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-CD_RLjNZ8P49pN4iChaxducmmbaVWDW_ysMGI6oI1FMj_8dXrb5zQG5xFuw-Y4xOmtVrKoTUK0BSxVxLIkycTTluPgGQ4HZ80lv4pXneG4xFQW74sIWDL2D1Aky69osmERZhcSWX76JvyKuH69ZVPXWdk5y8US8w20phP1yeA3iSd5U4mzbNm1_5bg/s1963/image-flutter3-footer.png" style="display: block; padding: 1em 0; text-align: center; clear: right; float: right;"><img alt="" border="0" width="600" data-original-height="477" data-original-width="1963" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-CD_RLjNZ8P49pN4iChaxducmmbaVWDW_ysMGI6oI1FMj_8dXrb5zQG5xFuw-Y4xOmtVrKoTUK0BSxVxLIkycTTluPgGQ4HZ80lv4pXneG4xFQW74sIWDL2D1Aky69osmERZhcSWX76JvyKuH69ZVPXWdk5y8US8w20phP1yeA3iSd5U4mzbNm1_5bg/s600/image-flutter3-footer.png"/></a></div>
</section>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com5tag:blogger.com,1999:blog-466374421998394222.post-82893154509402069202022-05-30T14:12:00.003-03:002022-05-30T14:12:55.011-03:00Queremos ajudar você a criar para vários dispositivos e plataformas e para o mundo<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinYXV5BKM2aMut-SCjKlcEhhBYLGLKU2jxyf84y4BT7HpL9sUYbPjiRg0Ed5W4_f9FWxXTfoLfdi9_t8A520bSBIQ0a-f-nNlw-6vFKNS1QW7wh2Ut_IcaLM5-wg9DwrTYNfDscpG-0_3xyjG22r0pUf8_OJz-BJ0MPa0KeUfJh4g2TMLgxi_7W0ao/s1600/GoogleIO-Recap_1024x512.png" name="twitter:image"></meta>
<img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinYXV5BKM2aMut-SCjKlcEhhBYLGLKU2jxyf84y4BT7HpL9sUYbPjiRg0Ed5W4_f9FWxXTfoLfdi9_t8A520bSBIQ0a-f-nNlw-6vFKNS1QW7wh2Ut_IcaLM5-wg9DwrTYNfDscpG-0_3xyjG22r0pUf8_OJz-BJ0MPa0KeUfJh4g2TMLgxi_7W0ao/s1600/GoogleIO-Recap_1024x512.png" style="display: none;" />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhAvBz7-w0hRYvAGiJTeY9Low20CoSk0W-vrtlxF2ItJbA2EhFDKvi5tMyJy2gZ9V4Dzwx1_GQBZe-q3ArwYA7oqPjo_e8A1rUzbTLG1u4JEcgGhfSbDg61CgZKr0Ij6KHYVd_bfDyS2xU6KQT1tsM4s6edo-CWW235_zdYVDp_USNfeVFxxoR6nYQ/s1600/GoogleIO-Recap_4209x1253.png"><img border="0" data-original-height="800" data-original-width="1058" id="imgFull" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhAvBz7-w0hRYvAGiJTeY9Low20CoSk0W-vrtlxF2ItJbA2EhFDKvi5tMyJy2gZ9V4Dzwx1_GQBZe-q3ArwYA7oqPjo_e8A1rUzbTLG1u4JEcgGhfSbDg61CgZKr0Ij6KHYVd_bfDyS2xU6KQT1tsM4s6edo-CWW235_zdYVDp_USNfeVFxxoR6nYQ/s1600/GoogleIO-Recap_4209x1253.png" /></a>
<p><em>Postado por Jeanine Banks, VP e gerente geral do Developer X e líder de relações com o desenvolvedor</em></p><p>
</p><a name="more"></a><p></p>
<p>
É uma grande alegria estar de volta ao Shoreline Amphitheatre para o Google I/O, esta semana. E é um prazer poder estar com todos vocês, de várias partes do mundo, tanto virtual quanto presencialmente.
</p>
<p>
O I/O é a nossa declaração de amor para vocês, desenvolvedores. Os desenvolvedores são o motor que ativa a revolução da informação. Mas, mais do que isso, são os desenvolvedores que transformam a informação em ideias e códigos que mudam para melhor a forma como aprendemos, trabalhamos, nos comunicamos e nos divertimos.
</p>
<p>
Algumas décadas atrás, criar uma experiência digital era publicar um site estático e alcançar milhares de pessoas nos computadores delas. Hoje, isso significa uma experiência extremamente rápida e interativa em vários navegadores, computadores, telefones, tablets, assistentes virtuais, TVs, consoles de jogos, carros, relógios e muito mais. As pessoas querem receber novos recursos mais rápido do que nunca, e sempre com a certeza de que estamos respeitando e mantendo os mais altos padrões de privacidade e segurança.
</p>
<p>
Para ajudar você a lidar com a complexidade e as expectativas cada vez mais altas, queremos levar a simplicidade para os desafios que você enfrenta. Esta semana, no I/O, compartilhamos o início de um longo trabalho para conectar nossos produtos para desenvolvedores de forma que eles funcionem ainda melhor juntos e também para fornecer mais orientações e melhores práticas que ajudem a otimizar todo o fluxo de trabalho de vocês. Estes são apenas alguns destaques dos anúncios feitos na palestra de abertura para desenvolvedores:
</p><ul><blockquote>
<li>A nova <a href="https://developers.google.com/ar/" target="_blank">API ARCore Geospatial</a>, que permite inserir conteúdo de RA em locais do mundo real em 87 países sem a necessidade estar fisicamente presente.
</li>
<li>O <a href="https://developer.android.com/modern-android-development" target="_blank">Modern Android Development</a> para as melhores experiências em qualquer tela, incluindo o novo suporte do Jetpack Compose ao WearOS e a tablets, um upgrade para o Android Studio com o LiveEdit e muito mais.</li>
<li>O novo painel Performance Insights do <a href="https://developer.chrome.com/docs/devtools/performance-insights/" target="_blank">Chrome DevTools</a> e o suporte do WebAssembly a linguagens de programação gerenciadas, como Dart, Java e Kotlin, que chega em breve.</li>
<li>O <a href="https://medium.com/flutter/introducing-flutter-3-5eb69151622f" target="_blank">Flutter 3</a>, nosso framework de IU multiplataforma de código aberto, agora dá suporte a seis plataformas para a criação de aplicativos lindos com uma única base de código.</li>
<li>O <a href="https://firebase.google.com/products/crashlytics" target="_blank">Firebase Crashlytics</a> totalmente integrado ao Android Studio, ao Flutter e ao Google Play para geração de relatórios de erros consistentes e acionáveis.</li>
<li>Os <a href="https://cloud.google.com/run/" target="_blank">Jobs do Cloud Run</a> para executar a transformação de dados em lote, tarefas administrativas ou jobs programados, e o <a href="https://cloud.google.com/alloydb" target="_blank">AlloyDB para PostgreSQL</a>, nosso novo banco de dados relacional totalmente gerenciado que é quatro vezes mais rápido do que o PostgreSQL padrão para cargas de trabalho transacionais.</li>
<li>Uma ótima pesquisa sobre codificação assistida por IA e o <a href="https://www.kaggle.com/competitions/AI4Code" target="_blank">desafio AI for Code (AI4Code)</a> no Kaggle em parceria com a <a href="https://x.company/" target="_blank">X, the moonshot factory</a>.</li>
</blockquote></ul>
<p>Assista à <a href="https://youtu.be/qBkyU1TJKDg" target="_blank">palestra de abertura para desenvolvedores</a> ou este vídeo de resumo para saber mais sobre as novidades deste ano em muitas de nossas plataformas, incluindo <a href="https://android-developers.googleblog.com/2022/05/13-things-to-know-for-android-developers-at-google-io.html" target="_blank">Android</a>, <a href="https://developers.googleblog.com/2022/05/Make-the-world-your-canvas-ARCore-Geospatial-API.html" target="_blank">ARCore</a>, <a href="http://chromeos.dev/en/posts/io-2022" target="_blank">Chrome OS</a>, <a href="https://cloud.google.com/blog/products/application-modernization/google-cloud-at-io-2022-news-roundup" target="_blank">Cloud</a>, <a href="https://medium.com/flutter/introducing-flutter-3-5eb69151622f" target="_blank">Flutter</a>, <a href="https://firebase.blog/posts/2022/05/whats-new-at-google-io" target="_blank">Firebase</a>, <a href="https://android-developers.googleblog.com/2022/05/whats-new-in-google-play.html" target="_blank">Google Play</a>, <a href="https://www.kaggle.com/" target="_blank">Kaggle</a>, <a href="https://blog.tensorflow.org/2022/05/ai-and-machine-learning-io-recap.html" target="_blank">aprendizado de máquina</a> e <a href="https://www.youtube.com/watch?v=KqAIFjwKQX8" target="_blank">plataforma Web</a>:</p>
<p><strong></strong></p><div class="separator" style="background-color: white; clear: both; text-align: center;"><strong><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/htG27DW5ju4" width="320" youtube-src-id="htG27DW5ju4"></iframe></strong></div><p></p>
<p>
Seja para criar seu criar seu primeiro app, expandir as capacidades de seus produtos ou utilizar o aprendizado de máquina com mais facilidade e responsabilidade, esperamos que você se inspire com o amplo espaço à sua frente para transformar ideias em realidade e melhorar as vidas das pessoas.DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com0tag:blogger.com,1999:blog-466374421998394222.post-88115628811012194512022-05-30T14:11:00.000-03:002022-05-30T14:11:02.149-03:00Assista agora mesmo! #TheAndroidShow: Tablets, Jetpack Compose e Android 13<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/a/AVvXsEg3O8_2G3pguZGPXewnQ3dyTGd9SNujE0IMv62eR63eKRoqXT0PW3ddnTl9xPgsNA2b6_lydv-BoHjzLmLq_NgjwWhW4eGO4Dhn-L5Lmmt6iM4sCQJPZ7BalOHVroXHDSxDgfuIJRzjpPwpTHXSJ34DdygNjOMBU6DMsXtIiGcMxvHOrQIEXkLGh7Pf">
<img style="display:none" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3O8_2G3pguZGPXewnQ3dyTGd9SNujE0IMv62eR63eKRoqXT0PW3ddnTl9xPgsNA2b6_lydv-BoHjzLmLq_NgjwWhW4eGO4Dhn-L5Lmmt6iM4sCQJPZ7BalOHVroXHDSxDgfuIJRzjpPwpTHXSJ34DdygNjOMBU6DMsXtIiGcMxvHOrQIEXkLGh7Pf">
<p><em>Postado por Florina Muntenescu e Huyen Tue Dao, anfitriões do #TheAndroidShow</em><p>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
Está chegando mais um episódio do <a href="https://www.youtube.com/watch?v=WL9h46CymlU&list=PLWz5rJ2EKKc9fgBcL1srxlRfbbKKuVYy9&index=1">#TheAndroidShow, e você pode assistir aqui!</a> Nesse episódio, mostraremos o que acontece nos bastidores do Jetpack Compose, do Android 13 e de todas as atualizações para tablets Android. Se você ainda não fez isso, ainda há tempo para enviar suas perguntas sobre tablets Android para a equipe pelo <a href="https://twitter.com/hashtag/AskAndroid?src=hashtag_click">#AskAndroid</a>. Nossa equipe de especialistas estará pronta para responder às suas dúvidas ao vivo!
</p>
<center><iframe width="100%" height="340" src="https://www.youtube.com/embed/WL9h46CymlU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<br>
<h2>Primeiro, vamos conhecer os bastidores do Jetpack Compose</h2>
<p>
Nossa primeira discussão no #TheAndroidShow será sobre o <a href="https://developer.android.com/jetpack/compose">Jetpack Compose</a>, o kit de ferramentas moderno de IU nativa do Android. No mês passado, <a href="https://android-developers.googleblog.com/2022/02/jetpack-compose-11-now-stable.html">lançamos a versão 1.1 do Jetpack Compose</a>, que traz novos recursos como o tratamento de foco aprimorado, o dimensionamento de alvos de toque, o armazenamento em cache do ImageVector e o suporte à extensão de overscroll do Android 12. O Compose 1.1 também passa várias APIs anteriormente experimentais para a versão estável e oferece suporte a versões mais recentes do Kotlin. No #TheAndroidShow, você conhece os bastidores do mundo das animações com uma das engenheiras que ajuda a criá-las, <a href="https://twitter.com/doris4lt?lang=en">Doris Liu</a>. Depois, o pessoal do Twitter conta como o Compose os ajuda a criar novos recursos em metade do tempo!
</p>
<br>
<h2><strong>Próxima atração: o mundo dos tablets, incluindo a atualização com recursos 12L, agora no AOSP</strong></h2>
<p>
Em seguida, passamos ao mundo dos tablets, logo depois dos grandes anúncios da semana: lançamos oficialmente a atualização com recursos 12L no AOSP, e ela será lançada para todos os dispositivos Pixel com suporte nas próximas semanas. Existem mais de 250 milhões de dispositivos Android de tela grande, e o 12L torna o Android 12 ainda melhor nos tablets e inclui atualizações, como uma nova barra de tarefas que permite aos usuários arrastar e soltar apps instantaneamente no modo de tela dividida, novos layouts de tela grande na aba de notificações e na tela de bloqueio e modos de compatibilidade aprimorados para apps. Você pode <a href="https://blog.google/products/android/12l-larger-screens/">saber mais aqui</a>.
</p>
<p>
Ainda este ano, o 12L passará a ser disponibilizado em atualizações planejadas para tablets e dispositivos dobráveis das marcas Samsung, Lenovo e Microsoft. Então, este é o momento para garantir que os apps estejam preparados para isso. Recomendamos testar os apps no modo de tela dividida com janelas de vários tamanhos e em diferentes orientações e verificar as novas mudanças do modo de compatibilidade, caso elas se apliquem. Saiba mais sobre o 12L para desenvolvedores <a href="https://developer.android.com/about/versions/12/12L">aqui</a>.
</p>
<p>
Vemos as telas grandes como uma superfície essencial no futuro do Android, e continuamos investindo para fornecer a você as ferramentas necessárias para criar ótimas experiências para tablets, Chromebooks e dispositivos dobráveis. Saiba mais sobre como <a href="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens">começar a otimizar para telas grandes</a>. E não deixe de conferir nossos <a href="https://developer.android.com/large-screens">recursos de telas grandes para desenvolvedores</a>.
</p>
<br>
<h2>Acesse agora mesmo. </h2>
<p>
Concluímos a programação com uma conversa com a diretora de relacionamento com o desenvolvedor Android, <a href="https://twitter.com/mabouza">Maru Ahues Bouza</a>, falando sobre o Android 13 e também sobre alguns dos temas mais amplos que você verá sobre o Android ainda este ano.
</p>
<p>
Tudo isso está acontecendo agora mesmo no #TheAndroidShow - <a href="https://www.youtube.com/watch?v=WL9h46CymlU&list=PLWz5rJ2EKKc9fgBcL1srxlRfbbKKuVYy9&index=1">junte-se a nós no YouTube</a>! DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com4tag:blogger.com,1999:blog-466374421998394222.post-72105052458540246082022-05-30T14:09:00.000-03:002022-05-30T14:09:21.390-03:00Google I/O 2022: Novidades das ferramentas para desenvolvedores Android<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4MPS6LrGVEp7JNEtQ21Htant6vAqK3FcNIDQm2qBF9_E61dFMiffhYObPH7Yyb2blUdwERJy6CgU_nq-QsAUA1RO6WZBXfX-eiZ_gMBRuasQFjguozuKyFaGkKU4xMTYYtiBAfeAcMruEyt5a9YrEyZvU2wd5f5QqbXho3ueninAShn3QZLI0ZmOU/s1600/Android-GoogleIOAndroidStudio_1024x512.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4MPS6LrGVEp7JNEtQ21Htant6vAqK3FcNIDQm2qBF9_E61dFMiffhYObPH7Yyb2blUdwERJy6CgU_nq-QsAUA1RO6WZBXfX-eiZ_gMBRuasQFjguozuKyFaGkKU4xMTYYtiBAfeAcMruEyt5a9YrEyZvU2wd5f5QqbXho3ueninAShn3QZLI0ZmOU/s1600/Android-GoogleIOAndroidStudio_1024x512.png">
<p><em>Postado por Juan Sebastian Oviedo, gerente de produtos sênior</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4MPS6LrGVEp7JNEtQ21Htant6vAqK3FcNIDQm2qBF9_E61dFMiffhYObPH7Yyb2blUdwERJy6CgU_nq-QsAUA1RO6WZBXfX-eiZ_gMBRuasQFjguozuKyFaGkKU4xMTYYtiBAfeAcMruEyt5a9YrEyZvU2wd5f5QqbXho3ueninAShn3QZLI0ZmOU/s1600/Android-GoogleIOAndroidStudio_1024x512.png" imageanchor="1"><img style="width:100%" alt="Android Studio azul" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4MPS6LrGVEp7JNEtQ21Htant6vAqK3FcNIDQm2qBF9_E61dFMiffhYObPH7Yyb2blUdwERJy6CgU_nq-QsAUA1RO6WZBXfX-eiZ_gMBRuasQFjguozuKyFaGkKU4xMTYYtiBAfeAcMruEyt5a9YrEyZvU2wd5f5QqbXho3ueninAShn3QZLI0ZmOU/s1600/Android-GoogleIOAndroidStudio_1024x512.png" data-original-width="1058" data-original-height="714" /></a> </center>
<p>
Hoje no Google I/O 2022, anunciamos um ótimo conjunto de novos recursos disponíveis no Android Studio Dolphin Beta e Electric Eel canário, ambos acessíveis por <a href="https://developer.android.com/studio/preview">download</a>. Vocês nos disseram que queriam ser mais produtivos durante a criação de apps Android, então nos concentramos em melhorias que tornam a experiência de desenvolvimento mais rápida e informativa.
</p>
<p>
Na versão <strong>Android Studio Dolphin</strong>, é possível encontrar os seguintes recursos e melhorias que podem começar a ser usados no canal Beta, que está próximo da qualidade estável:
</p>
<ul>
<li>Visualize animações do Compose e coordene-as com a visualização de animações.
<li>Defina classes de anotação para incluir e aplicar facilmente várias definições de visualização do Compose de uma só vez.
<li>Acompanhe as contagens de recomposições para funções que podem ser compostas no Layout Inspector.
<li>Pareie e controle facilmente emuladores e blocos de inicialização, mostradores de relógio e complicações do Wear OS diretamente pelo Android Studio.
<li>Diagnostique problemas de apps mais rapidamente com o Logcat V2.
</li>
</ul>
<p>
Para conhecer recursos ainda mais inovadores, você pode dar uma olhada na versão <strong>Android Studio Electric Eel</strong> no canal canário:
</p>
<p>
</p>
<ul>
<li>Veja insights de dependências do novo <a href="http://developer.android.com/distribute/sdk-index">Google Play SDK Index</a>, um portal público com informações sobre dependências/SDKs conhecidos. Se uma versão específica de uma biblioteca tiver sido marcada como "desatualizada" por seu autor, um aviso de Lint correspondente será exibido durante a visualização dessa definição de dependência. Isso permite que você descubra e atualize problemas com dependências durante o desenvolvimento, e não mais tarde, na hora de publicar o app no Play Console. Saiba mais sobre essa nova ferramenta <a href="https://goo.gle/play-sdk">aqui</a>.
<li>Veja relatórios do <a href="https://firebase.google.com/docs/crashlytics">Firebase Crashlytics</a> diretamente no Android Studio usando a nova janela App Quality Insights. A janela App Quality Insights permite navegar de stack traces para o código com apenas alguns cliques. O ambiente de desenvolvimento integrado também destaca linhas de código no editor durante a edição de arquivos que contenham falhas recentes. Isso economiza tempo devido à apresentação de informações acionáveis sobre falhas de usuários diretamente no ambiente de desenvolvimento integrado, para que você possa se concentrar em fornecer aos usuários a melhor experiência possível no app.
<li>Teste a IU do app em dispositivos de referência representativos usando um único Android Emulator redimensionável. Em vez de precisar configurar emuladores especificamente para tablets, telefones ou computadores, você pode usar um único emulador redimensionável e alterar sua configuração sem reimplantar para testar o app.
<li>Com o recurso LiveEdit experimental, você faz alterações de código e elas são imediatamente refletidas na visualização do Compose e no app em execução em um emulador ou dispositivo físico.
</li>
</ul>
<p>
Esses recursos serão promovidos para canais mais estáveis assim que recebermos o feedback de vocês e fizermos melhorias. Então, experimente-os!
</p>
<p>
Para ver todos os novos recursos em ação, assista à sessão What’s new in Android Developer Tools.
</p>
<center><iframe width="100%" height="315" src="https://www.youtube.com/embed/RFv8GkLd5OY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<br>
<p>
Segue uma lista dos principais novos recursos e melhorias do Android Studio Dolphin:
</p>
<br>
<h2>Jetpack Compose</h2>
<ul>
<li><strong>Coordenação de animações do Compose - </strong>Veja todas as suas animações de uma vez e coordene-as na <a href="https://developer.android.com/jetpack/compose/tooling#animations">visualização de animações</a>. Você também pode congelar uma animação específica.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHCBxjl4IG52jNNjhpkn334vcgaJrBHVzalV5MGZOSDdC5oIGCTM3q4pHNerOIonEUElve-1b6sHUP1gMsazb_IL35_TwYyN_kB6RFAZ5DkCVdk1NU5AYDr3Xqmp8M1dHsp1CcI5N4WooA45TbsV5OGdp_vFqBYenvNYuj1VtsxoI8q2FQ-QVdvrne/s1600/image10.gif" imageanchor="1"><img style="width:100%" alt="Coordenação de animações do Compose" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHCBxjl4IG52jNNjhpkn334vcgaJrBHVzalV5MGZOSDdC5oIGCTM3q4pHNerOIonEUElve-1b6sHUP1gMsazb_IL35_TwYyN_kB6RFAZ5DkCVdk1NU5AYDr3Xqmp8M1dHsp1CcI5N4WooA45TbsV5OGdp_vFqBYenvNYuj1VtsxoI8q2FQ-QVdvrne/s1600/image10.gif" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Coordenação de animações do Compose
</p></center>
<ul>
<li><strong>Anotações para várias visualizações do Compose - </strong>Defina uma classe de anotação que inclua várias definições de visualização e use essa nova anotação para gerar todas as visualizações de uma só vez. Use essa nova anotação para visualizar vários dispositivos, fontes e temas ao mesmo tempo, sem repetir essas definições para cada uma das funções que podem ser compostas. </ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOo3bTpTxdJblOS8tMzxMv93HqK2xYw4gLCSdRLiFYwsvWyqcBPpERe6gf8ORlrJcPKOOI6EhWNYEoZmonJHpDlpVgSvIPHd1E_Fhjwjh9GUEqzcojitWY6O0FBK_XhZ8AY6QXmTOKAUeQQ3V-UMMCtcGa22pRjGLF9q-3bwYDdNgGgV3PG10BP66X/s1600/image16.png" imageanchor="1"><img style="width:100%" alt="Anotações para várias visualizações" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOo3bTpTxdJblOS8tMzxMv93HqK2xYw4gLCSdRLiFYwsvWyqcBPpERe6gf8ORlrJcPKOOI6EhWNYEoZmonJHpDlpVgSvIPHd1E_Fhjwjh9GUEqzcojitWY6O0FBK_XhZ8AY6QXmTOKAUeQQ3V-UMMCtcGa22pRjGLF9q-3bwYDdNgGgV3PG10BP66X/s1600/image16.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Anotações para várias visualizações
</p></center>
<ul><li><strong>Contagens de recomposições do Compose no Layout Inspector - </strong>Veja contagens de recomposições para um app do Compose no Layout Inspector. As contagens de recomposições e as contagens de saltos podem, opcionalmente, ser mostradas na árvore de componentes e nos painéis de atributos. <a href="https://developer.android.com/studio/preview/features#li-compose-counter">Saiba mais</a>.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2AgCK3RwRzFQJHO-Oct8s7bF41iMTL4cuub-gVvSlwYaQAl9u7FGeGQ4MNMgiUni7QKmIno1dqJXtkl54TZ5G-uOeHfpgI60YBNKktHXyyMdnFU4_H1t9l1fCzPYtcfm9WDud4QqHEoLBLz7MBBzacLRTEfcvVuKs5C-mGQiA-niqOge8b1gMin-Y/s1600/image3.png" imageanchor="1"><img style="width:100%" alt="Contagens de recomposições do Compose" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2AgCK3RwRzFQJHO-Oct8s7bF41iMTL4cuub-gVvSlwYaQAl9u7FGeGQ4MNMgiUni7QKmIno1dqJXtkl54TZ5G-uOeHfpgI60YBNKktHXyyMdnFU4_H1t9l1fCzPYtcfm9WDud4QqHEoLBLz7MBBzacLRTEfcvVuKs5C-mGQiA-niqOge8b1gMin-Y/s1600/image3.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Contagens de recomposições do Compose
</p></center>
<br>
<h2>Wear OS</h2>
<ul>
<li><strong>Assistente de pareamento do emulador do Wear OS - </strong>Com esse assistente, agora você pode ver dispositivos Wear no Gerenciador de dispositivos e parear diversos emuladores de relógio com um único telefone. Também não é preciso parear novamente os dispositivos com tanta frequência porque o Android Studio memoriza os pareamentos depois de ser fechado.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpU3dbdgQgiYKUyYv5nGA2QXEXzlbFzfYnESq08vDZxLr12ix8_kLfjvkgxluWYG-YwzckM85KXKdW95UHcnBfht7cmcy8Y1cxXx9_rCouyGmIYO3IkQ2z0jHttnaEvYu6gPh5UH9qtp1Gkqa6430e-zlBHwpiIPgEH3ubAjn4hO2KbNfmauf2_OFi/s1600/image17.png" imageanchor="1"><img style="width:100%" alt="Assistente de pareamento do emulador do Wear OS" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpU3dbdgQgiYKUyYv5nGA2QXEXzlbFzfYnESq08vDZxLr12ix8_kLfjvkgxluWYG-YwzckM85KXKdW95UHcnBfht7cmcy8Y1cxXx9_rCouyGmIYO3IkQ2z0jHttnaEvYu6gPh5UH9qtp1Gkqa6430e-zlBHwpiIPgEH3ubAjn4hO2KbNfmauf2_OFi/s1600/image17.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Assistente de pareamento do emulador do Wear OS
</p></center>
<ul>
<li><strong>Barra de ferramentas lateral do emulador do Wear OS - </strong>Use botões de emulador específicos do Wear OS que se parecem com botões físicos e os simulam, incluindo botões principais, botões de pressão e botões giratórios.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvWzPGnBzqhNXlq5n6e9H1nWoUilXBbwRGQ55yfq6jFT3aVWsyW8yP7Gxz8h3QSicHvoBIVmI9anim3ZNQjv2CSRxLGbZOKXBudCWJGKcV8vfJ2BY-CDYVokR-HtO6u2Ec4938MZ5pX4FnaSAw-CFpOXdKRnofIPaO3CXxyyYk1cuvTvPz3DofA7JS/s1600/image13.png" imageanchor="1"><img style="width:100%" alt="Barra de ferramentas lateral do emulador do Wear OS" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvWzPGnBzqhNXlq5n6e9H1nWoUilXBbwRGQ55yfq6jFT3aVWsyW8yP7Gxz8h3QSicHvoBIVmI9anim3ZNQjv2CSRxLGbZOKXBudCWJGKcV8vfJ2BY-CDYVokR-HtO6u2Ec4938MZ5pX4FnaSAw-CFpOXdKRnofIPaO3CXxyyYk1cuvTvPz3DofA7JS/s1600/image13.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Barra de ferramentas lateral do emulador do Wear OS
</p></center>
<ul>
<li><strong>Inicialização direta de superfícies do Wear OS -</strong> Crie configurações de execução/depuração para blocos, mostradores de relógio e complicações do Wear OS e inicialize-as diretamente pelo Android Studio.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfjrnJgA4GhNPKnPlzDXb86lLAvPUTtLM5Rdc__fZPFjAKIKW7DfVh9zzsGtUIMK0Z2V50V1y66-LtKCC1opztA_VUGiafM5txUK-w5xJsWoNhhnXRMmMhmAVHYx5rtzFPHUCmAm04DMYDzyBhe8KyEl9L5eVCvbRMHfgdbVoTAGaSmk6T2t2-vFpv/s1600/image2.gif" imageanchor="1"><img style="width:100%" alt="Novos tipos de configuração de execução/depuração do Wear OS" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfjrnJgA4GhNPKnPlzDXb86lLAvPUTtLM5Rdc__fZPFjAKIKW7DfVh9zzsGtUIMK0Z2V50V1y66-LtKCC1opztA_VUGiafM5txUK-w5xJsWoNhhnXRMmMhmAVHYx5rtzFPHUCmAm04DMYDzyBhe8KyEl9L5eVCvbRMHfgdbVoTAGaSmk6T2t2-vFpv/s1600/image2.gif" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Novos tipos de configuração de execução/depuração do Wear OS
</p></center>
<br>
<h2>Ferramentas de desenvolvimento</h2>
<ul>
<li><strong>Logcat V2 - </strong>Recriado do zero, o novo Logcat facilita a análise, a consulta e o rastreamento de registros. O Logcat V2 inclui uma nova formatação que facilita a busca de informações úteis, novas visualizações divididas para que você possa ver mais informações rapidamente e uma nova e avançada sintaxe para a filtragem de registros. <a href="https://developer.android.com/studio/preview/features#logcat">Saiba mais</a>.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd3LAuz4B8ovmsGTNEx-BQ_yIHvFbp_5hkHRHCWxpMoSqW88rXscuyMCiZSWqeqXazcHZ75g84-WE6hv3EriPDqihJCpbQH8BnzVxu9xpzX2O160KbS_kZClCABsVBdXLiPhkeR0thl2Ni6iozGmx2HT08-bZ-yvw3gQjM5rlqaN_J32-twhX9hCnn/s1600/image5.png" imageanchor="1"><img style="width:100%" alt="Logcat V2" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgd3LAuz4B8ovmsGTNEx-BQ_yIHvFbp_5hkHRHCWxpMoSqW88rXscuyMCiZSWqeqXazcHZ75g84-WE6hv3EriPDqihJCpbQH8BnzVxu9xpzX2O160KbS_kZClCABsVBdXLiPhkeR0thl2Ni6iozGmx2HT08-bZ-yvw3gQjM5rlqaN_J32-twhX9hCnn/s1600/image5.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Logcat V2</p></center>
<ul>
<li><strong>Dispositivos gerenciados pelo Gradle - </strong>Descreva os dispositivos virtuais necessários para testes automatizados como parte do build, e deixe o Gradle cuidar do resto. Desde o download de SDKs e o provisionamento e a configuração de dispositivos até a execução e o descarte de testes, o Gradle gerencia o ciclo de vida de dispositivos virtuais durante testes de instrumentação. O Gradle também pode aplicar funcionalidades inteligentes, como gerenciamento de snapshots, armazenamento de testes em cache e fragmentação de testes para garantir que os testes sejam executados de forma eficiente, rápida e consistente. A funcionalidade também introduz um tipo completamente novo de dispositivo, chamado <strong>dispositivo de teste automatizado</strong>, que otimiza dispositivos para testes automatizados, o que resulta em redução significativa de utilização de memória e CPU durante a execução de testes. <a href="https://developer.android.com/studio/preview/features#gmd">Saiba mais</a>.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisaAXoiCiB-rUnPZQU7x8P84HHL63TTcEVlS2m26fY6PoaojWqGNCC5tqZpzNMNkm6ymRN-w5Q2zZj_-QgoBMRzohxGrgwZjLXOac60bpceP2WXeXSS82qoIMC7J-rfDgQ1zAqdOMFIjN0JkcwwDNwmU4ll88N2tjUaJXbNBG2qumDtTdwCXqDWISo/s1600/image4.png" imageanchor="1"><img style="width:100%" alt="Dispositivos gerenciados pelo Gradle" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisaAXoiCiB-rUnPZQU7x8P84HHL63TTcEVlS2m26fY6PoaojWqGNCC5tqZpzNMNkm6ymRN-w5Q2zZj_-QgoBMRzohxGrgwZjLXOac60bpceP2WXeXSS82qoIMC7J-rfDgQ1zAqdOMFIjN0JkcwwDNwmU4ll88N2tjUaJXbNBG2qumDtTdwCXqDWISo/s1600/image4.png" data-original-width="1058" data-original-height="714" /></a> <p id="imgCaption">Dispositivos gerenciados pelo Gradle</p></center>
<p>
Segue uma lista dos principais novos recursos e melhorias do Android Studio Electric Eel:
</p>
<h2>Jetpack Compose</h2>
<ul>
<li><strong>LiveEdit - </strong>Faça alterações de código em funções que podem ser compostas no Android Studio e veja-as refletidas imediatamente na visualização do Compose e no emulador ou dispositivo físico. O LiveEdit é um recurso por ativação, disponível nas configurações do Android Studio. <a href="https://developer.android.com/studio/run#live-edit">Saiba mais</a>.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglNt3OEZehyWkQTNJIECbCJF96Cvujfsnk3_d-Fx1_McZjOzfvTWGlIhb_ZbzoJ8A6FIfe_ev65TS6G-YOopNAToW9BvJcaHv_6glsYQkGkEp_zL1CXae8oQrTkyo8nuHzu6rdHSekm3HwZyvDvdG9quxuFJV6lTjLPxeOuysbMxRzmcNqxkXcJ4Vg/s1600/image8.gif" imageanchor="1"><img style="width:100%" alt="LiveEdit no emulador" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglNt3OEZehyWkQTNJIECbCJF96Cvujfsnk3_d-Fx1_McZjOzfvTWGlIhb_ZbzoJ8A6FIfe_ev65TS6G-YOopNAToW9BvJcaHv_6glsYQkGkEp_zL1CXae8oQrTkyo8nuHzu6rdHSekm3HwZyvDvdG9quxuFJV6lTjLPxeOuysbMxRzmcNqxkXcJ4Vg/s1600/image8.gif" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">LiveEdit no emulador</p></center>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnxCdVp2Y5D2Qr5M1QAVDZ6FDySOmsJBMyvaAaiaJAVwn1ClMUlP6q8yjwy_vlOmAzAUf8-BDrrEE_SPBiJCoQcfLUN81ndIpX6YM544xQOEMxpv_YQtb-NeN8bu0A-glgo7N-NxBsKdXt4tM84IJj6FcWPdagZoywm9Q00LghChj34s0jcZAiSl3Y/s1600/image14.gif" imageanchor="1"><img style="width:100%" alt="LiveEdit na visualização" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnxCdVp2Y5D2Qr5M1QAVDZ6FDySOmsJBMyvaAaiaJAVwn1ClMUlP6q8yjwy_vlOmAzAUf8-BDrrEE_SPBiJCoQcfLUN81ndIpX6YM544xQOEMxpv_YQtb-NeN8bu0A-glgo7N-NxBsKdXt4tM84IJj6FcWPdagZoywm9Q00LghChj34s0jcZAiSl3Y/s1600/image14.gif" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">LiveEdit na visualização</p></center>
<br>
<h2>Google Play e Firebase</h2>
<ul>
<li><strong>Insights de SDKs</strong> <strong>-</strong> Receba avisos de Lint sobre SDKs/bibliotecas que foram marcados como desatualizados pelos autores no Google Play SDK Index. Atualize versões de dependências desatualizadas durante o desenvolvimento para evitar problemas quando o app for enviado para o Play Console.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaLBiTFxLix04qwMr6Lh5_xKKi84ylErR-egNesW5zKCD0M_gOzplGv8tWZBSOwug05BTgxcDnTqS83YEB5zFKIJvfnPPwwtaelgFjG4ry_RDlWWbMkDVeMdBlMQIbbk0WA_AMahNsJPVH607dv4C_pr-LtaYv9y5aTuCOHFZSXjA0ZZBDq-GxnKHo/s1600/image9.png" imageanchor="1"><img style="width:100%" alt="Insights do Google Play SDK Index" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaLBiTFxLix04qwMr6Lh5_xKKi84ylErR-egNesW5zKCD0M_gOzplGv8tWZBSOwug05BTgxcDnTqS83YEB5zFKIJvfnPPwwtaelgFjG4ry_RDlWWbMkDVeMdBlMQIbbk0WA_AMahNsJPVH607dv4C_pr-LtaYv9y5aTuCOHFZSXjA0ZZBDq-GxnKHo/s1600/image9.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Insights do Google Play SDK Index</p></center>
<ul>
<li><strong>App Quality Insights do Firebase Crashlytics - </strong>Descubra, investigue e resolva problemas relatados pelo Crashlytics no Android Studio e dentro do contexto do código-fonte local. Essa integração ajuda a reduzir atritos durante a navegação de falhas para o código (e do código para falhas) e mostra dados contextuais importantes sobre cada falha para ajudar a reproduzir problemas localmente.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoIzk2fWjQqQG10YZuVKPcK8LmPM7rjmuIv-hRnUhm2mAVciptEs9yRxKtQQzeszGnWH9RKnlQ--Oxfs8UDlDHslHv41BIhBOaT5amRlvZnB3qo72kjErBfKHtnQY7vqfY9QuxJvkCo0BJLH4_IfYWVsYT5Kenr6PnGYLJjKQvDGxp6RpkgVLOpnLp/s1600/image6.gif" imageanchor="1"><img style="width:100%" alt="App Quality Insights do Firebase Crashlytics" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhoIzk2fWjQqQG10YZuVKPcK8LmPM7rjmuIv-hRnUhm2mAVciptEs9yRxKtQQzeszGnWH9RKnlQ--Oxfs8UDlDHslHv41BIhBOaT5amRlvZnB3qo72kjErBfKHtnQY7vqfY9QuxJvkCo0BJLH4_IfYWVsYT5Kenr6PnGYLJjKQvDGxp6RpkgVLOpnLp/s1600/image6.gif" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">App Quality Insights do Firebase Crashlytics</p></center>
<br>
<h2>Telas grandes</h2>
<ul>
<li><strong>Emulador redimensionável- </strong>Alterne rapidamente entre dispositivos de referência representativos para testar vários estados de layout de aplicativos com velocidade e com uma única instância de emulador em execução. Você pode criar esses emuladores selecionando o tipo "Resizable" no fluxo "Create device" do Gerenciador de dispositivos.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvCWLJDm8rCICk1JXD7IJ3zQvNUmLiWg2zEyyiTGm8DHTgQgTm-kcA7zomJVYR_RNIHrKirwbwnZ6YskAZ_KMuclSg5hlU8umwfnHoqnTuNyQw08A7rL5N03ia4KpPK6kjz_ESvdiXphR__zoN35ABE2HJivArMDX2Qh34VTYRQIHlfN0-tyeUHYXl/s1600/image1.png" imageanchor="1"><img style="width:100%" alt="Emulador redimensionável" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvCWLJDm8rCICk1JXD7IJ3zQvNUmLiWg2zEyyiTGm8DHTgQgTm-kcA7zomJVYR_RNIHrKirwbwnZ6YskAZ_KMuclSg5hlU8umwfnHoqnTuNyQw08A7rL5N03ia4KpPK6kjz_ESvdiXphR__zoN35ABE2HJivArMDX2Qh34VTYRQIHlfN0-tyeUHYXl/s1600/image1.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Emulador redimensionável</p></center>
<ul>
<li><strong>Inspeção visual - </strong>Descubra e corrija problemas de layout em diferentes dispositivos (por exemplo, quando um botão está oculto, fora dos limites de um tablet maior), abrindo o painel <a href="https://developer.android.com/studio/debug/layout-inspector#layout-validation">Layout Validation</a>. Nós executamos automaticamente o layout para verificar se há problemas de Lint visual em diferentes tamanhos de tela.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUTBsoqrRc78s9arBbPwb412HOeyLIX_qXJYufjaoLyCGvkZG3DdJ8rxMinfZdRBrW3CfMOR073ZbU8rU5J90IYlay_Goe5IzGVgZTVFaU5IMSJwXwana8Fz1fy2MzANcO8fwzI1m993zWjpRcySeQmIO7NNY6YlqFagfQ5itb5j787NLw_adH7YqU/s1600/image7.png" imageanchor="1"><img style="width:100%" alt="Inspeção visual" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUTBsoqrRc78s9arBbPwb412HOeyLIX_qXJYufjaoLyCGvkZG3DdJ8rxMinfZdRBrW3CfMOR073ZbU8rU5J90IYlay_Goe5IzGVgZTVFaU5IMSJwXwana8Fz1fy2MzANcO8fwzI1m993zWjpRcySeQmIO7NNY6YlqFagfQ5itb5j787NLw_adH7YqU/s1600/image7.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Inspeção visual</p></center>
<br>
<h2>Ferramentas de desenvolvimento</h2>
<ul>
<li><strong>Bluetooth emulado - </strong>Agora, você pode descobrir e conectar dois emuladores de telefone usando o Bluetooth virtual. Esse recurso está disponível no Android Emulator 31.3.8 e posteriores com a imagem do sistema T (API 33). Planejamos expandir o suporte à criação de amostras de periféricos virtuais, como sensores e monitores de frequência cardíaca, além de testes de integração para recursos Bluetooth.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrFaaxAlHg1cUnosMdKdTA_J4EBbYEgUhIpr2sLwWohf98Ut0wLdHkKSfVGoMhHY9L0hvT4NtOuku_smDk72-8PPX1yKBqu97Dk01TMo0bLhf04roGooTjnAQo59Zelpa8xtc2JRz-ZgQbRI5590biYNWPMjfdunnVeJ_8VEubBPWUnWWQiuoo-gwR/s1600/image11.png" imageanchor="1"><img style="width:100%" alt="Pareamento de dois Android Emulators usando o Bluetooth emulado" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrFaaxAlHg1cUnosMdKdTA_J4EBbYEgUhIpr2sLwWohf98Ut0wLdHkKSfVGoMhHY9L0hvT4NtOuku_smDk72-8PPX1yKBqu97Dk01TMo0bLhf04roGooTjnAQo59Zelpa8xtc2JRz-ZgQbRI5590biYNWPMjfdunnVeJ_8VEubBPWUnWWQiuoo-gwR/s1600/image11.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Pareamento de dois Android Emulators usando o Bluetooth emulado</p></center>
<ul>
<li><strong>Espelhamento de dispositivos - </strong>Minimize a quantidade de interrupções durante o desenvolvimento fazendo o streaming da tela do dispositivo diretamente para o Android Studio. O espelhamento de dispositivos oferece a capacidade de interagir com um dispositivo físico usando a janela <strong>Running Devices</strong> do Studio. Para ativar esse recurso, acesse <strong>Preferences > Experimental</strong> e selecione <strong>Device Mirroring</strong>. Após a ativação, conecte o dispositivo e abra a janela Running Devices para começar a fazer o streaming da tela.
</li>
</ul>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-zCw8stQnr0tJG7mZjduz5NmlJo9Dzq1i5Ab_YKyC00M7CM1ujQ_NKWvIlyYHsdGycDISh1Hb5_CXjktuP95BzFhlkEm3Y4UYwX79cfU9PnxlMKPxDCuq46DZZZW__JTd09t1nl0vG9cfEUmmZ1_1wD-iDHAXbE6WfGIKOO5hkWHykST7HYWdndjc/s1600/image15.gif" imageanchor="1"><img style="width:100%" alt="Espelhamento de dispositivos" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-zCw8stQnr0tJG7mZjduz5NmlJo9Dzq1i5Ab_YKyC00M7CM1ujQ_NKWvIlyYHsdGycDISh1Hb5_CXjktuP95BzFhlkEm3Y4UYwX79cfU9PnxlMKPxDCuq46DZZZW__JTd09t1nl0vG9cfEUmmZ1_1wD-iDHAXbE6WfGIKOO5hkWHykST7HYWdndjc/s1600/image15.gif" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Espelhamento de dispositivos</p></center>
<br>
<p>
Em resumo, estes são os novos recursos e melhorias disponíveis no Android Studio Dolphin Beta, de qualidade quase estável:
</p>
<p>
<strong>Jetpack Compose</strong>
</p>
<ul>
<li>Coordenação de animações do Compose
<li>Anotações para várias visualizações do Compose
<li>Contagens de recomposições do Compose no Layout Inspector
</li>
</ul>
<p>
<strong>Wear OS</strong>
</p>
<ul>
<li>Assistente de pareamento do emulador do Wear OS
<li>Barra de ferramentas lateral do emulador do Wear OS
<li>Inicialização direta de superfícies do Wear OS
</li>
</ul>
<p>
<strong>Ferramentas de desenvolvimento</strong>
</p>
<ul>
<li>Logcat V2
<li>Dispositivos gerenciados pelo Gradle
</li>
</ul>
<p>
Estes recursos e melhorias novíssimos estão disponíveis no Android Studio Electric Eel canário:
</p>
<p>
<strong>Jetpack Compose</strong>
</p>
<ul>
<li>LiveEdit
</li>
</ul>
<p>
<strong>Google Play e Firebase</strong>
</p>
<ul>
<li>Insights de SDKs
<li>App Quality Insights do Firebase Crashlytics
</li>
</ul>
<p>
<strong>Telas grandes</strong>
</p>
<ul>
<li>Emulador redimensionável
<li>Inspeção visual
</li>
</ul>
<p>
<strong>Ferramentas de desenvolvimento</strong>
</p>
<ul>
<li>Bluetooth emulado
<li>Espelhamento de dispositivos
</li>
</ul>
<h2>Primeiros passos</h2>
<p>
O Android Studio Dolphin Beta e o Electric Eel canário estão disponíveis para <a href="https://developer.android.com/studio/preview">download</a>. Você pode instalá-los lado a lado com a versão estável atual do Android Studio seguindo <a href="https://developer.android.com/studio/preview/install-preview">estas instruções</a>. A versão Beta tem uma qualidade quase estável, mas ainda pode haver bugs. Por isso, se você encontrar algum problema, <a href="https://issuetracker.google.com/issues/new?component=192708&template=840533">avise-nos</a> para que possamos corrigi-lo. Da mesma forma, se você encontrar um problema ou tiver algum feedback sobre os recursos da versão canário, fale conosco.
</p>
<p>
Seu feedback sobre problemas e suas solicitações de recursos são muito importantes para nós. Você pode seguir a equipe de desenvolvimento do Android Studio no <a href="https://twitter.com/androidstudio">Twitter</a> e no <a href="https://medium.com/androiddevelopers">Medium</a>.
</p>
<p>
Veja mais detalhes nas <a href="https://developer.android.com/studio/preview/features/">notas da versão de pré-lançamento</a>.
</p>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com2tag:blogger.com,1999:blog-466374421998394222.post-1751557708220071132022-05-30T14:05:00.000-03:002022-05-30T14:05:51.256-03:00Treze itens importantes do Google I/O para desenvolvedores Android<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC2X0sIY_AGvgi6jD8Eh_u8rOdZXKA6PP18tnJdA6jQxR-n4bF6vsIVI2D4FTOnHAlqSY5hJShEjHcRQr7P8QM-YyP3sM3Su_KxFRdBXhg8WUIoXr74luWfFvtgYGJHWdDe_gPnwpCsLR4YhE0U88QcSqrYs3LLjp7dGqQul_pRoerJr__-mD8lUPA/s1600/Android-IO22AndroidDevRecap_Social.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiC2X0sIY_AGvgi6jD8Eh_u8rOdZXKA6PP18tnJdA6jQxR-n4bF6vsIVI2D4FTOnHAlqSY5hJShEjHcRQr7P8QM-YyP3sM3Su_KxFRdBXhg8WUIoXr74luWfFvtgYGJHWdDe_gPnwpCsLR4YhE0U88QcSqrYs3LLjp7dGqQul_pRoerJr__-mD8lUPA/s1600/Android-IO22AndroidDevRecap_Social.png">
<p><em>Postado por Maru Ahues Bouza, diretora de relações com desenvolvedores Android</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6ZZHuns-ra6qXugYhDCL8KrlOdpFLNlTAfc0UE9n48b7N-BWfRO4Ex0uCvT2ydIacdZPZLtAElzhj_d79-Aunwv92r0INgvjH_PDLfeWzs7j4ZfVbMshwYW9lOemdUQz8nr0YE3L-MDyggFpnB4_UDBpUyQcsDH_yQ6Mrcn8t_vQiYSUFBhIiS2S/s1600/Android-IO22AndroidDevRecap_Header.png" imageanchor="1"><img style="width:100%" alt="Atualizações do Android no I/O: Jetpack, Wear OS etc." id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo6ZZHuns-ra6qXugYhDCL8KrlOdpFLNlTAfc0UE9n48b7N-BWfRO4Ex0uCvT2ydIacdZPZLtAElzhj_d79-Aunwv92r0INgvjH_PDLfeWzs7j4ZfVbMshwYW9lOemdUQz8nr0YE3L-MDyggFpnB4_UDBpUyQcsDH_yQ6Mrcn8t_vQiYSUFBhIiS2S/s1600/Android-IO22AndroidDevRecap_Header.png" data-original-width="1058" data-original-height="714" /></a> </center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
Não há muitas plataformas nas quais você possa criar algo e alcançar imediatamente bilhões de pessoas em todo o mundo, não apenas nos telefones deles, mas também em TVs, carros, tablets, relógios e muito mais. Hoje, no Google I/O, falamos sobre uma série de formas pelas quais o Android ajuda você a aproveitar ao máximo essa oportunidade e sobre como o Modern Android Development cria o máximo de uniformidade possível, para que seja mais rápido e fácil criar experiências sob medida para todas as diferentes telas que usamos diariamente.
</p>
<p>
Fizemos um resumo dos 13 itens mais importantes para desenvolvedores Android, do Jetpack Compose até tablets, Wear OS e, é claro… o Android 13! E você não pode perder o segundo dia do Google I/O, que traz <a href="https://io.google/2022/program/?q=b3e6963b-c3de-4283-beb1-eadbf0542db0,590ed748-cc8b-4b16-b872-2b632222a575,96a8382e-68d1-40b1-8fe8-c32eafe45327">a trilha completa sobre Android, com 26 palestras técnicas e 4 workshops</a>. Também estamos <a href="https://www.youtube.com/watch?v=wq3Et-D9P5Y">trazendo de volta a sessão informal de Perguntas e respostas do Android em mais um episódio do #TheAndroidShow</a>. Envie suas perguntas pelo Twitter usando a hashtag #AskAndroid, e a equipe de especialistas estará disponível para respondê-las <a href="https://www.youtube.com/watch?v=wq3Et-D9P5Y">ao vivo no dia 12 de maio, às 12h30 (horário do Pacífico)</a>.
</p>
<br>
<h2>MODERN ANDROID DEVELOPMENT</h2>
<h3>N.º 1: Jetpack Compose Beta 1.2, com suporte a mais casos de uso avançados</h3>
<p>
O kit de ferramentas de IU moderno do Android, o Jetpack Compose, continua trazendo as APIs de que você precisa para dar suporte a mais casos de uso avançados, como fontes para download, LazyGrids, encartes de janela e interoperabilidade com rolagem aninhada, e suporte adicional a ferramentas com recursos como LiveEdit, depuração de recomposições e visualização de animações. Veja mais detalhes na <a href="https://android-developers.googleblog.com/2022/05/whats-new-in-jetpack-compose.html">postagem do blog</a>.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghuJN78oYuBqay2I14PqzBlsgNWFjd388Lj7Fw85aEgqJQNwcfV1B3iBVl5TVWCgaZ6nzPOfcskx2AXxh2rCYj4ZUc14UtONZqnM4f5ABRCawPxWqhy5Am3n-TGl4q-24bwne_uXhZf0g6Y8IW5HHH-kzRw_e989sHZJkCCZXdiFiJV5L5FZlQnUKm/s1600/unnamed%20%285%29.gif" imageanchor="1"><img style="width:100%" alt="Jetpack Compose 1.2 Beta " id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghuJN78oYuBqay2I14PqzBlsgNWFjd388Lj7Fw85aEgqJQNwcfV1B3iBVl5TVWCgaZ6nzPOfcskx2AXxh2rCYj4ZUc14UtONZqnM4f5ABRCawPxWqhy5Am3n-TGl4q-24bwne_uXhZf0g6Y8IW5HHH-kzRw_e989sHZJkCCZXdiFiJV5L5FZlQnUKm/s1600/unnamed%20%285%29.gif" data-original-width="1058" data-original-height="714" /></a> </center>
<br>
<h3>N.º 2: Android Studio: apresentamos o LiveEdit</h3>
<p>
Faça mais em menos tempo com o Android Studio Dolphin Beta e o Electric Eel canário! O Android Studio Dolphin inclui novos recursos e melhorias para desenvolvimento com o Jetpack Compose e o Wear OS e uma experiência Logcat atualizada. O Android Studio Electric Eel inclui integrações com o novo <a href="http://developer.android.com/distribute/sdk-index">Google Play SDK Index</a> e o Firebase Crashlytics. Ele também oferece um novo emulador redimensionável para testar apps em telas grandes e o novo recurso LiveEdit para implementar imediatamente alterações de código feitas dentro de funções que podem ser compostas. Assista à sessão <a href="https://youtu.be/RFv8GkLd5OY">What’s new in Android Development Tools</a> e leia a postagem do blog do I/O sobre o Android Studio <a href="https://android-developers.googleblog.com/2022/05/whats-new-in-android-studio.html">aqui</a>.
</p>
<h3>N.º 3: Perfis de referência: reduza o tempo de carregamento dos apps</h3>
<p>
A velocidade de um app logo após a instalação pode fazer uma grande diferença para a retenção de usuários. Para melhorar essa experiência, criamos os perfis de referência. Os perfis de referência permitem que apps e bibliotecas forneçam ao tempo de execução do Android metadados sobre a utilização do caminho do código, que são empregados para priorizar a compilação antecipada. Observamos tempos de inicialização de apps até 30% menores graças à adoção apenas dos perfis de referência, sem nenhuma outra alteração no código! Já estamos usando os perfis de referência dentro do Jetpack: adicionamos esses perfis a bibliotecas populares, como Fragments e Compose, para ajudar a criar uma experiência melhor para o usuário final. Assista à <a href="https://youtu.be/DYdHLqLVspY">palestra What’s new in app performance</a> e leia a postagem do blog sobre o Jetpack <a href="https://android-developers.googleblog.com/2022/05/whats-new-in-jetpack.html">aqui</a>.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7PWlUZkLVg4Mo1Mx4fPEHQu7G4KhVaM5S8ZcBMHpeKvNUI7r5ZAwDtLsK9B7JFl4ikt4VNH-BnNUtkYsrYaG7jxSNFOV0-7aM4MPhAndCmvYn4A0BNHhTNciJUj--IgisvHQlZQvh4i4BecPlNTH7l-q9d936UU7Vhi54aXl4mSD0CPplOnO3H7ur/s1600/unnamed%20%286%29.gif" imageanchor="1"><img style="width:100%" alt="Modern Android Development" id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7PWlUZkLVg4Mo1Mx4fPEHQu7G4KhVaM5S8ZcBMHpeKvNUI7r5ZAwDtLsK9B7JFl4ikt4VNH-BnNUtkYsrYaG7jxSNFOV0-7aM4MPhAndCmvYn4A0BNHhTNciJUj--IgisvHQlZQvh4i4BecPlNTH7l-q9d936UU7Vhi54aXl4mSD0CPplOnO3H7ur/s1600/unnamed%20%286%29.gif" data-original-width="1058" data-original-height="714" /></a> </center>
<br>
<h2>BETTER TOGETHER</h2>
<h3>N.º 4: Grandes planos para os tablets Android</h3>
<p>
O Google está apostando tudo nos tablets. Desde o último I/O, lançamos o Android 12L, uma versão focada nas otimizações para telas grandes, e o Android 13 inclui todas essas melhorias e muito mais. Também anunciamos o tablet Pixel para o próximo ano. Com um novo hardware incrível, sistema operacional e Google apps atualizados, diretrizes e bibliotecas aprimoradas e ótimas mudanças na Play Store, nunca houve um momento melhor para revisar seus apps e prepará-los para as telas grandes e para o Android 13. É por isso que, no I/O deste ano, temos quatro palestras e um <a href="https://www.youtube.com/watch?v=2rtLdF9UFqg">workshop</a> para levar você do <a href="https://youtu.be/pvdqeIM6mh0">design</a> à <a href="https://www.youtube.com/watch?v=MPwf5DklKp0">implementação</a> para telas grandes.
</p>
<center><iframe width="100%" height="315" src="https://www.youtube.com/embed/IRiEcVfJJko" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<br>
<h3>N.º 5: Wear OS: Compose e muito mais! </h3>
<p>
Com as mais recentes atualizações para o Wear OS, você pode repensar suas possibilidades de desenvolvimento para wearables. O Jetpack Compose para Wear OS está na versão Beta, e você pode criar lindos apps do Wear OS com menos linhas de código. O Health Services, também na versão Beta, traz uma tonelada de inovações para a comunidade de desenvolvedores dos setores de saúde e bem-estar. Por fim, mas não menos importante, anunciamos o lançamento do The Google Pixel Watch, ainda este ano, que reúne o melhor do Fitbit e do Wear OS. Saiba mais sobre todas as atualizações mais importantes para wearables assistindo à <a href="https://youtu.be/jpUVamtoKOs">sessão técnica sobre o Wear OS</a> e lendo nosso <a href="http://g.co/wear/compose">anúncio do Jetpack Compose para Wear OS</a>.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAR-MLrPoP2yy6dZAXa4vp5WYivyUh8OPseW92s4Xir9y6h68WGZ2Ufxd0wkI3bT9dFz385rGZJdl6-8Os4873lQG_QN_QXI9C00uOQ6xm7Ge86KWUiwZarQGggR7x2CufBxKpsDmaS0NCKqeWxN_pLQNDcsfUoc623rC_rSCr72uGGZV4pbrUXgAy/s1600/May-11-2022%2012-27-55.gif" imageanchor="1"><img style="width:100%" alt="Compose para Wear OS" id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAR-MLrPoP2yy6dZAXa4vp5WYivyUh8OPseW92s4Xir9y6h68WGZ2Ufxd0wkI3bT9dFz385rGZJdl6-8Os4873lQG_QN_QXI9C00uOQ6xm7Ge86KWUiwZarQGggR7x2CufBxKpsDmaS0NCKqeWxN_pLQNDcsfUoc623rC_rSCr72uGGZV4pbrUXgAy/s1600/May-11-2022%2012-27-55.gif" data-original-width="1058" data-original-height="714" /></a> </center>
<br>
<h3>Nº 6: Apresentamos o Health Connect</h3>
<p>
O Health Connect é uma nova plataforma criada em uma colaboração direta entre o Google e a Samsung que simplifica a conectividade entre apps tornando mais fácil alcançar mais usuários com menos trabalho, para que você possa acessar e compartilhar com segurança dados de saúde e bem-estar dos usuários em vários apps e dispositivos. Hoje, estamos abrindo o acesso ao Health Connect via Jetpack Health. Leia nosso <a href="https://android-developers.googleblog.com/2022/05/introducing-health-connect.html">anúncio</a> ou assista à <a href="https://youtu.be/d14GVcnbTeo">sessão</a> do I/O para saber mais.
</p>
<h3>N.º 7: Android for Cars e SO Android TV</h3>
<p>
O uso do Android for Cars e do SO Android TV continua aumentando nos EUA e em outros países. À medida que mais usuários dirigem conectados ou sintonizados, estamos introduzindo novos recursos para facilitar ainda mais o desenvolvimento de apps para carros e TVs este ano. Assista às sessões "<a href="https://io.google/2022/program/8276c69a-83cd-4cd8-bece-31231c3d8454/">What’s new with Android for Cars</a>" e "<a href="https://io.google/2022/program/1e5d0560-24f2-4891-8991-0d93af8d9965/">What's new with Google TV and Android TV</a>" no segundo dia (12 de maio) às 9h (horário do Pacífico) para saber mais.
</p>
<h3>N.º 8: Adicione voz a vários dispositivos </h3>
<p>
Estamos facilitando para os usuários o acesso por voz a apps em vários dispositivos com o Google Assistente por meio da expansão do acesso dos desenvolvedores à API Shortcuts para o <a href="https://developer.android.com/training/cars/apps/poi">Android for Cars</a>. O suporte a apps <a href="https://developer.android.com/training/wearables/user-input/voice">Wear OS</a> chega ainda este ano. Também estamos facilitando a criação dessas experiências com <a href="https://developers.google.com/assistant/app/custom-intents">intents personalizadas mais inteligentes</a>, permitindo que o Assistente detecte melhor instâncias mais amplas de consultas de usuários via aprendizado de máquina, sem treinamento aprofundado em PLN. Além disso, estamos introduzindo melhorias que promovem a descoberta de apps por voz em dispositivos móveis, primeiro por meio de consultas sem marca, que geram utilização do app mesmo que o usuário não tenha dito explicitamente o nome do app, e por sugestões de instalação de apps que aparecem se o app ainda não estiver instalado. <a href="https://www.youtube.com/watch?v=LcuouG7Ofpc">Elas</a> já são ativadas automaticamente para App Actions existentes.
</p>
<br>
<h2>E, AGORA, AS ÚLTIMAS DO ANDROID, DO PLAY E MUITO MAIS:</h2>
<h3>N.º 9: Novidades do Play! </h3>
<p>
Veja as mais recentes atualizações do Google Play, incluindo novas formas pelas quais o Play pode ajudar a expandir seus negócios. Entre os destaques estão a capacidade de criar até 50 listagens personalizadas e definir links diretos para elas, nosso LiveOps Beta, que permitirá que mais desenvolvedores enviem conteúdo a ser considerado para a Play Store, e ainda mais flexibilidade na venda de assinaturas. Veja essas atualizações e muito mais em nossa <a href="https://android-developers.googleblog.com/2022/05/whats-new-in-google-play.html">postagem do blog</a>.
</p>
<h3>N.º 10: Google Play SDK Index</h3>
<p>
Avalie se um SDK é certo para o seu app com o novo <a href="http://developer.android.com/distribute/sdk-index">Google Play SDK Index</a>. Esse novo portal público lista mais de 100 dos mais utilizados SDKs comerciais, além de informações como quais permissões do app o SDK solicita, estatísticas sobre os apps que o utilizam e qual versão do SDK é a mais popular. Saiba mais em nossa postagem do <a href="https://goo.gle/play-sdk">blog</a> e assista às sessões "<a href="https://youtu.be/d8mn0pmgvGw">What’s new in Google Play</a>" e "<a href="https://youtu.be/RFv8GkLd5OY">What’s new in Android development tools</a>".
</p>
<h3>N.º 11: Sandbox de privacidade no Android </h3>
<p>
O <a href="https://developer.android.com/design-for-safety/privacy-sandbox">Sandbox de privacidade no Android</a> fornece um caminho para novas soluções de publicidade a fim de aumentar a privacidade dos usuários sem colocar em risco o acesso a conteúdo e serviços gratuitos. Lançamos recentemente a primeira <a href="https://android-developers.googleblog.com/2022/04/first-preview-privacy-sandbox-android.html">Visualização do desenvolvedor do Sandbox de privacidade no Android</a> para que você possa ver em primeira mão a <a href="https://developer.android.com/design-for-safety/privacy-sandbox/program-overview">API SDK Runtime and Topics</a>. Você pode fazer testes preliminares dessas novas tecnologias, avaliar como elas podem ser adotadas para suas soluções e compartilhar feedback conosco.
</p>
<h3>N.º 12: A nova API Google Wallet</h3>
<p>
O novo Google Wallet dá aos usuários acesso rápido e seguro a recursos essenciais para o dia a dia no Android e no Wear OS. Estamos melhorando a API Google Wallet, antes chamada API Google Pay Passes, para dar suporte a passes genéricos e agrupamento e combinação de passes, por exemplo, agrupamento de um ingresso de evento com um voucher. Também estamos lançando um novo SDK do Android que permite salvar passes diretamente pelo app, sem integração de back-end. Para saber mais, leia a <a href="https://goo.gle/wallet-integration">postagem do blog</a> completa, assista à <a href="https://www.youtube.com/watch?v=2gTCghy-dU4">sessão</a> ou leia os documentos no developers.google.com/wallet.
</p>
<h3>N.º 13: E, é claro, o Android 13! </h3>
<p>
A segunda versão Beta do Android 13 <a href="https://android-developers.googleblog.com/2022/05/second-beta-of-android-13.html">já está disponível</a>! Prepare os apps para os mais recentes recursos de privacidade e segurança, como a nova permissão de notificação, o seletor de fotos com proteção de privacidade e as permissões aprimoradas para pareamento com dispositivos próximos e acesso a arquivos de mídia. Melhore os apps com recursos como suporte a idiomas específicos de apps e ícones temáticos de apps. Crie usando padrões modernos como vídeo HDR e áudio Bluetooth de baixa energia. Você pode começar <a href="https://www.google.com/android/beta">registrando um dispositivo Pixel aqui</a> ou experimentar o Android 13 Beta em alguns telefones, tablets e dobráveis de nossos parceiros. Visite <a href="https://developer.android.com/13">developer.android.com/13</a> para saber mais.
</p>
<p>
Este foi apenas um resumo de alguns dos destaques para desenvolvedores Android do Google I/O deste ano. Não deixe de assistir à palestra <a href="https://youtu.be/Z6iFhczA3NY">What’s New in Android</a> para ver o panorama de toda a trilha técnica do Android no Google I/O, que inclui 26 palestras e 4 workshops. Divirta-se!
</p>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com2tag:blogger.com,1999:blog-466374421998394222.post-80035300777348348792022-05-30T14:03:00.000-03:002022-05-30T14:03:41.773-03:00O novo Google Play SDK Index ajuda a escolher os SDKs certos para os apps<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content= "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEBzXvqydpodashPiKchgLE9NA6WXVUYbTFBuooFn8_XwK6E4cMEbM7hyiTRPZ-H3pwTvyHY8143pGB5zgUt_zgUuzsjAIkRSQsngYBd4_dusLSXF94j6KZ0r1UiZC3vQFrabOw9vXdA0Wzcm3SDm_LvlCFdxW67-FplcMJLpZYLQ02I2EUrvORXHl/s1600/Play-new-google-play-sdk-index-social-V2.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEBzXvqydpodashPiKchgLE9NA6WXVUYbTFBuooFn8_XwK6E4cMEbM7hyiTRPZ-H3pwTvyHY8143pGB5zgUt_zgUuzsjAIkRSQsngYBd4_dusLSXF94j6KZ0r1UiZC3vQFrabOw9vXdA0Wzcm3SDm_LvlCFdxW67-FplcMJLpZYLQ02I2EUrvORXHl/s1600/Play-new-google-play-sdk-index-social-V2.png">
<p><em>Postado por Yafit Becher, gerente de produtos, e Ray Brusca, gerente de parcerias estratégicas</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEBzXvqydpodashPiKchgLE9NA6WXVUYbTFBuooFn8_XwK6E4cMEbM7hyiTRPZ-H3pwTvyHY8143pGB5zgUt_zgUuzsjAIkRSQsngYBd4_dusLSXF94j6KZ0r1UiZC3vQFrabOw9vXdA0Wzcm3SDm_LvlCFdxW67-FplcMJLpZYLQ02I2EUrvORXHl/s1600/Play-new-google-play-sdk-index-social-V2.png" imageanchor="1"><img style="width:100%" alt="Smartphone sobre fundo azul-claro" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjEBzXvqydpodashPiKchgLE9NA6WXVUYbTFBuooFn8_XwK6E4cMEbM7hyiTRPZ-H3pwTvyHY8143pGB5zgUt_zgUuzsjAIkRSQsngYBd4_dusLSXF94j6KZ0r1UiZC3vQFrabOw9vXdA0Wzcm3SDm_LvlCFdxW67-FplcMJLpZYLQ02I2EUrvORXHl/s1600/Play-new-google-play-sdk-index-social-V2.png" data-original-width="1058" data-original-height="714" /></a> </center>
<p>
Os desenvolvedores de apps contam com os SDKs para integrar funcionalidades e serviços essenciais para apps e jogos. Os SDKs são elementos básicos essenciais, mas os desenvolvedores nos disseram que pode ser difícil descobrir quais SDKs são confiáveis e seguros. Ajudar desenvolvedores como você a tomar decisões conscientes sobre SDKs também ajuda a <a href="https://android-developers.googleblog.com/2022/03/privacy-and-security-direction.html">manter o Google Play um espaço seguro e confiável</a> para bilhões de pessoas.
</p>
<p>
Em 2020, lançamos o Google Play SDK Console para fornecer aos provedores de SDKs relatórios de erros, estatísticas de uso e uma forma de comunicar problemas críticos aos desenvolvedores de apps por meio do Google Play Console e do Android Studio. Hoje, estamos dando mais um passo para melhorar a comunicação e a transparência com o lançamento do <strong><a href="https://developer.android.com/distribute/sdk-index">Google Play SDK Index</a></strong>, um novo portal público que lista <strong>mais de 100 dos SDKs comerciais mais usados e fornece insights sobre cada um deles</strong>.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_BM5hWMkZmSGi3OTyMjnQ2zlsgy3FP--JEyDB0XXBrQW8pv7QQjam_29MOHnWJaF-aN1Zzq7vveteZcqNVa-0XiHTe16av4TC6YcY3j7RCemP4b0mmhcNkx5PoVwomK8oeBzoGcifvFtvFO8KKi3oKLTh04RqE-Nu-mA5dAmG5Arp6J_ZdSPXcCN9/s1600/Untitled%20design%20%285%29.png" imageanchor="1"><img style="width:100%" alt="O Google Play SDK Index mostra sinais de confiabilidade e segurança para que você possa decidir se um determinado SDK é o certo para sua empresa e seus usuários. " id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_BM5hWMkZmSGi3OTyMjnQ2zlsgy3FP--JEyDB0XXBrQW8pv7QQjam_29MOHnWJaF-aN1Zzq7vveteZcqNVa-0XiHTe16av4TC6YcY3j7RCemP4b0mmhcNkx5PoVwomK8oeBzoGcifvFtvFO8KKi3oKLTh04RqE-Nu-mA5dAmG5Arp6J_ZdSPXcCN9/s1600/Untitled%20design%20%285%29.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">O Google Play SDK Index mostra sinais de confiabilidade e segurança para que você possa decidir se um determinado SDK é o certo para sua empresa e seus usuários. </p></center>
<p>
Você pode <a href="https://play.google.com/sdks">pesquisar um SDK</a> ou procurar por uma categoria, como <a href="https://play.google.com/sdks/categories/ads">Publicidade e monetização</a> ou <a href="https://play.google.com/sdks/categories/analytics">Análise</a>. Para cada listagem de SDK, o Google Play SDK Index combina dados de uso de apps do Google Play com a detecção de código do SDK a fim de fornecer insights projetados <strong>para ajudar você a decidir se um SDK é o certo para sua empresa e seus usuários</strong>. É possível ver:
</p>
<ul>
<li>Quais permissões do app Android o SDK pode solicitar
<li>Se o provedor do SDK <a href="https://support.google.com/googleplay/android-developer/answer/12034434#SDK_info_reg_badge">tem o compromisso</a> de garantir que o código do SDK siga as políticas do Google Play
<li>As taxas de adoção de versões
<li>As métricas de retenção e muito mais
</li>
</ul>
<p>
Os provedores de SDKs também podem compartilhar com você informações importantes sobre os SDKs registrados no Google Play SDK Console, tais como:
</p>
<ul>
<li>Qual versão do SDK está desatualizada ou tem problemas críticos
<li>Links para orientações sobre segurança de dados quanto a quais dados o SDK coleta e por que, para ajudar você a preencher o <a href="https://support.google.com/googleplay/android-developer/answer/10787469">formulário de Segurança dos dados</a> de apps.
</li>
</ul>
<p>
Seja qual for o momento do ciclo de vida do desenvolvimento, esperamos que você ache o Google Play SDK Index útil para tomar decisões conscientes sobre SDKs. Não deixe de conferir outras atualizações à medida que adicionamos pontos de dados, categorias e volume de SDKs.
</p>
<p>
Para saber mais:
</p>
<ul>
<li>Assista às nossas sessões do I/O "<a href="https://youtu.be/d8mn0pmgvGw">What’s new in Google Play</a>" e "<a href="https://youtu.be/RFv8GkLd5OY">What’s new in Android Studio</a>"
<li>Veja como <a href="https://support.google.com/googleplay/android-developer/answer/12034434">tomar decisões conscientes com o Google Play SDK Index</a>
<li>Revise as <a href="https://developer.android.com/guide/practices/sdk-best-practices">melhores práticas para proteger a segurança dos usuários</a>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com2tag:blogger.com,1999:blog-466374421998394222.post-49552414768325247342022-05-02T12:20:00.000-03:002022-05-02T12:20:29.861-03:00Migração do Architecture Blueprints para o Jetpack Compose
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J2NKRQ4qedvMVWoxL_4ZLA.jpeg" /></figure><p>Como parte de nosso trabalho para modernizar as <a href="http://goo.gle/mad-architecture-guide">orientações sobre arquitetura de apps</a>, queremos experimentar diferentes padrões de IU para ver o que funciona melhor, encontrar semelhanças e diferenças entre as alternativas e consolidar nossas descobertas como práticas recomendadas.</p><p>Para facilitar ao máximo a aplicação de nossas descobertas, precisávamos de uma amostra com um caso de negócios familiar e que não fosse muito complicada. E quem é que não conhece os apps <em>TODO</em> ? Escolhemos o <a href="https://github.com/android/architecture-samples">Architecture Blueprints</a>! O Blueprints sempre serviu como um playground experimental para escolhas de arquitetura. E ele é ótimo para isso!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/360/1*YAdLGd6Gdq0PGeZLYDH7vA.gif" /><figcaption><em>App Architecture Blueprints em ação</em></figcaption></figure><p>Os padrões com os quais queremos fazer experiências são claramente afetados pelas diferentes APIs disponíveis atualmente. E a novidade são as <a href="https://developer.android.com/jetpack/compose/state">APIs de estado do Jetpack Compose</a>! Como o Compose funciona perfeitamente com qualquer padrão de <a href="https://developer.android.com/jetpack/guide/ui-layer#udf"><em>fluxo de dados unidirecional</em> </a>, vamos utilizá-lo para renderizar a IU e fazer uma comparação justa.</p><p><strong>Esta postagem do blog conta como a equipe migrou o Architecture Blueprints para o Jetpack Compose</strong>. Como o <a href="https://developer.android.com/topic/libraries/architecture/livedata">LiveData</a> também é considerado uma alternativa em nossos experimentos, deixamos a amostra no estado em que se encontrava no momento da migração. <strong>Nessa refatoração, as classes ViewModel e a camada de dados permaneceram inalteradas.</strong></p><p>⚠️ A arquitetura usada nesta base de código baseada no LiveData não segue totalmente as <a href="http://goo.gle/mad-architecture-guide">práticas recomendadas de arquitetura mais recentes</a>. Em particular, o LiveData <strong>não deve</strong> ser usado nas camadas de <a href="https://developer.android.com/jetpack/guide/data-layer">dados</a> ou de <a href="https://developer.android.com/jetpack/guide/domain-layer">domínios</a>. Devem-se usar fluxos e corrotinas.</p><p>Agora que o contexto já ficou claro, vamos detalhar como abordamos a refatoração do Blueprints para o Jetpack Compose. Confira o código completo na <a href="https://github.com/android/architecture-samples/tree/dev-compose">ramificação dev-compose</a>.</p><h3>✍️ Planejamento de uma migração gradual</h3><p>Antes de realizar qualquer codificação <em>real,</em> a equipe criou um plano de migração para garantir que todos concordassem com as mudanças propostas. O objetivo final era que o Blueprints fosse um aplicativo de atividade única, com telas como funções que podem ser compostas e usando a biblioteca <a href="https://developer.android.com/jetpack/compose/navigation">Compose Navigation</a> recomendada para a movimentação entre as telas.</p><p>Felizmente, o Blueprints já era um app de atividade única que usava o <a href="https://developer.android.com/guide/navigation">Jetpack Navigation</a> para a movimentação entre diferentes telas implementadas com fragmentos. Para migrar para o Compose, seguimos as <a href="https://developer.android.com/jetpack/compose/navigation#interoperability">orientações de interoperabilidade</a> do Navigation, que recomendam que os apps híbridos usem o componente Navigation baseado em fragmentos para conter telas baseadas em visualização, telas do Compose e telas que usam tanto as visualizações quanto o Compose. Infelizmente, não é possível combinar os destinos dos fragmentos e do Compose no mesmo gráfico do Navigation.</p><p>O objetivo de uma migração gradual é facilitar as revisões de código e manter um produto em condições de entrega ao longo de toda a migração. O plano de migração envolvia três passos:</p><ol><li>Migrar o <em>conteúdo</em> de cada tela para o Compose. Cada tela seria migrada individualmente para o Compose, incluindo seus testes de IU. Depois, os fragmentos se tornariam o contêiner/host de cada tela migrada.</li><li>Migrar o app para o Navigation Compose, o que remove todos os fragmentos do projeto, e migrar a lógica da IU Activity para funções-raiz que podem ser compostas. Os testes completos também são migrados neste ponto.</li><li>Remover as dependências do sistema de visualização.</li></ol><p>E foi isso o que fizemos! 🧑💻 Depois ⏩ de duas semanas, migramos as telas <em>Statistics</em> (<a href="https://github.com/android/architecture-samples/pull/821">PR</a>), <em>Add/Edit task</em> (<a href="https://github.com/android/architecture-samples/pull/823">PR</a>), <em>Task detail</em> (<a href="https://github.com/android/architecture-samples/pull/822">PR</a>) e <em>Tasks</em> (<a href="https://github.com/android/architecture-samples/pull/826">PR</a>) e mesclamos a <a href="https://github.com/android/architecture-samples/pull/827">PR final</a> que migrou a lógica Activity e Navigation para o Compose, incluindo a <a href="https://github.com/android/architecture-samples/pull/827/commits/2810a37c479ef4b23b4cabf095c55df7b342235e">remoção das dependências do sistema de visualização não utilizadas</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*c5F40DoLeO3lrwKp" /><figcaption>Como ocorreu a migração gradual do Blueprints para o Compose</figcaption></figure><h3>💡 Destaques da migração</h3><p>Durante a migração, encontramos algumas peculiaridades específicas do Compose que valem destaque:</p><h4>🧪 Testes de IU</h4><p>Assim que você começa a adicionar o Compose ao app, os testes que declaram IUs do Compose precisam usar <a href="https://developer.android.com/jetpack/compose/testing">APIs de teste do Compose</a>.</p><p><strong>Para os testes de IU no nível de tela</strong>, em vez de usar a API <a href="https://developer.android.com/guide/fragments/test#create">launchFragmentInContainer<FragmentType></a>, usamos a API <a href="http://createandroidcomposerule">createAndroidComposeRule<ComponentActivity></a>, que permite capturar recursos de strings nos testes. <strong>Esses testes são executados no Espresso e no Robolectric</strong>. Como o Compose já tem suporte para tudo isso, nenhuma mudança adicional foi necessária. Por exemplo, é possível comparar o código em <a href="https://github.com/android/architecture-samples/blob/653a563e9fe0874b4ae3fba539ce4b6518a2f796/app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskFragmentTest.kt">AddEditTaskFragmentTest</a> que foi migrado para <a href="https://github.com/manuelvicnt/architecture-samples/blob/8a203594541b25e5eec2daac63415c05884242ad/app/src/sharedTest/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreenTest.kt">AddEditTaskScreenTest</a>. Observe que, se você usar o ComponentActivity, precisará contar com o artefato <a href="https://developer.android.com/jetpack/compose/testing#setup">androidx.compose.ui:ui-test-manifest</a>.</p><p><strong>Nos testes completos ou de integração</strong>, também não tivemos nenhum problema. Graças à <strong>interoperabilidade do Espresso e do Compose</strong>, usamos as declarações do Espresso para verificar as visualizações e as APIs do Compose para verificar a IU do Compose. Aqui, podemos ver a aparência de <a href="https://github.com/manuelvicnt/architecture-samples/blob/249a636ea9a3f16aab5c284e3245069ef56a557f/app/src/androidTestMock/java/com/example/android/architecture/blueprints/todoapp/tasks/AppNavigationTest.kt">AppNavigationTest</a> em um ponto durante a migração para o Compose.</p><h4>🤙 Eventos do ViewModel</h4><p>Tivemos problemas com o modo como os <a href="https://developer.android.com/jetpack/guide/ui-layer/events#handle-viewmodel-events">eventos do ViewModel</a> eram manipulados no Blueprints. O Blueprints implementava uma solução de <a href="https://github.com/android/architecture-samples/blob/8e1e0527a0d043b41da58925a39fb8e03d62829a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/Event.kt">wrapper de evento</a> para enviar <em>comandos</em> do ViewModel para a IU. No entanto, isso não funciona no Compose. Nossas orientações recentes <a href="https://developer.android.com/jetpack/guide/ui-layer/events#handle-viewmodel-events">recomendam</a> a modelagem desses "eventos" como estado, e foi isso o que fizemos durante a migração.</p><p>Se observarmos o caso de uso do evento de <em>exibição de mensagens na tela</em> , substituímos o tipo Event<Int>do LiveData por "Int?". Isso também modela o cenário no qual não há mensagens a serem exibidas para o usuário. Nesse caso de uso em particular, o ViewModel também exige uma confirmação da IU sempre que a mensagem é exibida. Veja a diferença entre as duas implementações no seguinte código:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f1d6c769776b2af4e7ab1c958efc247c/href">https://medium.com/media/f1d6c769776b2af4e7ab1c958efc247c/href</a></iframe><p>Embora isso possa parecer um trabalho adicional, à primeira vista, é uma <strong>garantia</strong> de que a mensagem seja exibida na tela.</p><p>No código da IU, a forma de assegurar que o evento seja manipulado apenas uma vez é fazer uma chamada para event.getContentIfNotHandled(). Essa abordagem funciona <em>mais ou menos</em> nos fragmentos, mas <strong>falha totalmente no Compose</strong>. Como as recomposições podem ocorrer a qualquer momento no Compose, o wrapper de evento não é uma solução válida. Se o evento for processado e a função for recomposta (algo que aconteceu bastante durante o teste dessa abordagem), o snackbar será cancelado, e o usuário poderá perder a mensagem. Esse é um problema de UX inaceitável! <strong>A solução wrapper de evento não deve ser usada em apps do Compose.</strong></p><p>Veja o snippet de código a seguir com o <em>antes</em> (wrapper de evento) e o <em>depois</em> (evento como estado) do código. Como a exibição de mensagens na tela envolve a <a href="https://developer.android.com/jetpack/guide/ui-layer#logic-types">lógica de IU</a> e as funções de tela que podem ser compostas estavam se tornando mais complexas, usamos uma <a href="https://developer.android.com/jetpack/compose/state#types-of-state-and-logic">classe detentora de estado simples</a> para gerenciar essa complexidade (veja, por exemplo, <a href="https://github.com/manuelvicnt/architecture-samples/blob/88cf650fd1759486cce198878b5cf08e823012dc/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskState.kt">AddEditTaskState</a>).</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8f881730b9a79faa55da834680425196/href">https://medium.com/media/8f881730b9a79faa55da834680425196/href</a></iframe><h4>👌 Na dúvida, escolha a precisão do app</h4><p>Durante a refatoração, pode ser tentador migrar <em>tudo</em> para o Compose. Embora não haja nenhum problema nisso, você não deve sacrificar a experiência do usuário nem a precisão do app. A finalidade de fazer uma migração gradual é que o app esteja sempre em condições de entrega.</p><p>Isso aconteceu conosco durante a migração de algumas telas para o Compose. Não queríamos fazer um monte de migrações ao mesmo tempo, então migramos algumas das telas para o Compose <em>antes</em> da migração do wrapper de evento. Em vez de manipular o wrapper de evento no Compose e entregar uma experiência insatisfatória, continuamos manipulando essas mensagens no fragmento, enquanto o restante do código da tela estava no Compose. Veja, por exemplo, o estado de <a href="https://github.com/manuelvicnt/architecture-samples/blob/249a636ea9a3f16aab5c284e3245069ef56a557f/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksFragment.kt">TasksFragment durante a migração</a>.</p><h3>🧐 Desafios</h3><p>Nem tudo correu tão bem quanto parecia. 🫤 Embora a conversão de conteúdo de fragmentos para o Compose seja direta, a migração dos fragmentos do Navigation para o Navigation Compose exigiu um pouco mais de tempo e raciocínio.</p><p>É necessário expandir e melhorar as orientações quanto a diferentes aspectos que tornarão a migração para o Compose mais simples no futuro. Esse trabalho provocou várias conversas, e esperamos ter novas orientações sobre isso em breve! 🎊</p><p>Por ser iniciante em Navigation ✋ e a pessoa que lidou com a migração para o Navigation Compose, enfrentei os seguintes desafios:</p><ul><li>Nenhum código na documentação mostrava como <strong>navegar com argumentos opcionais</strong>! Graças ao <a href="https://github.com/chrisbanes/tivi/blob/main/app/src/main/java/app/tivi/AppNavigation.kt">gráfico de navegação do Tivi</a>, consegui me orientar e resolvi o problema (siga o problema registrado para a melhoria da documentação <a href="https://issuetracker.google.com/226103829">aqui</a>).</li><li><strong>A migração de um gráfico de navegação baseado em XML e de SafeArgs para o Kotlin DSL</strong> deveria ser uma tarefa mecânica e direta. Mas não foi <em>tão</em> fácil para mim, considerando-se que não trabalhei na implementação original. Ter um pouco de orientação sobre como fazer isso corretamente teria me ajudado bastante (siga o problema registrado para a melhoria da documentação <a href="https://issuetracker.google.com/226315955">aqui</a>).</li><li>Mais do que um desafio, este é um ponto do tipo "te peguei!". <a href="https://developer.android.com/guide/navigation/navigation-ui">A <strong>IU do Navigation</strong></a><strong> já faz algumas coisas por você</strong> quando se trata da navegação. Como isso não existe no Compose, você precisa ficar de olho e fazer tudo manualmente. Por exemplo, manter limpa a pilha de retorno ao navegar entre as telas da gaveta requer NavigationOptions especiais (veja um exemplo <a href="https://github.com/android/architecture-samples/blob/dev-compose/app/src/main/java/com/example/android/architecture/blueprints/todoapp/TodoNavigation.kt#L79">aqui</a>). Isso <a href="https://developer.android.com/jetpack/compose/navigation#bottom-nav">já é coberto pela documentação</a>, mas primeiro você tem que estar ciente de que precisa disso!</li></ul><h3>🧑🏫 Conclusões</h3><p>Em geral, a migração de fragmentos do Navigation para o Navigation Compose foi bem divertida! O mais engraçado é que gastamos mais tempo aguardando revisões de pares do que fazendo a migração do projeto em si! Criar o plano de migração e sincronizar todo mundo com certeza ajudou a definir as expectativas logo no começo e alertar os pares sobre futuras revisões demoradas.</p><p>Esperamos que você tenha gostado de ler sobre nossa abordagem da migração para o Compose, e queremos compartilhar em breve mais informações sobre os experimentos e as melhorias que faremos no Architecture Blueprints.</p><p>Caso tenha interesse em ver o Blueprints com o código do Compose, confira <a href="https://github.com/android/architecture-samples/tree/dev-compose">a ramificação dev-compose</a>. E, caso deseje ver todas as PRs da migração gradual, esta é a lista:</p><ul><li><em>Statistics</em> (<a href="https://github.com/android/architecture-samples/pull/821">PR</a>),</li><li><em>Add/Edit task</em> (<a href="https://github.com/android/architecture-samples/pull/823">PR</a>),</li><li><em>Task detail</em> (<a href="https://github.com/android/architecture-samples/pull/822">PR</a>),</li><li><em>Tasks</em> (<a href="https://github.com/android/architecture-samples/pull/826">PR</a>) e</li><li><a href="https://github.com/android/architecture-samples/pull/827">a PR final</a> que migrou a lógica Activity e Navigation para o Compose, incluindo a <a href="https://github.com/android/architecture-samples/pull/827/commits/2810a37c479ef4b23b4cabf095c55df7b342235e">remoção das dependências do sistema de visualização não utilizadas</a>.</li></ul><h3>👋</h3>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com0tag:blogger.com,1999:blog-466374421998394222.post-29243113757455535082022-05-02T12:16:00.000-03:002022-05-02T12:16:14.855-03:00Os aspectos apaixonantes da câmera do Android<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/a/AVvXsEhbo7olN-624FCaBV8Z15_bL1hOJ3kW4FPVQlXAhbsi7EKRCLZhuiGlk7z1Verq2UJ28nXIOPNxMy_-4mlji-P6-pSpyOsOn9kKGCuiDQb7sH79vLue5RKdVvCbJ_tly0Td06TB74oFmzcza2zS3GMT3FEmidLfE0eufSzHCSXyIQ4J7NG85xRkeKMF">
<img style="display:none" src="https://blogger.googleusercontent.com/img/a/AVvXsEhbo7olN-624FCaBV8Z15_bL1hOJ3kW4FPVQlXAhbsi7EKRCLZhuiGlk7z1Verq2UJ28nXIOPNxMy_-4mlji-P6-pSpyOsOn9kKGCuiDQb7sH79vLue5RKdVvCbJ_tly0Td06TB74oFmzcza2zS3GMT3FEmidLfE0eufSzHCSXyIQ4J7NG85xRkeKMF">
<p><em>Postado por Marwa Mabrouk, gerente de produtos da plataforma de câmera do Android</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEjC3-iXmyrKT9X0bJLij3Nj25MN4srBjkohAErkZJYujREisWf9ft_dB2gwIn0E-1qgA4g1NhZRMnSCDN5KQNDRk1_kDKHRz_QMswMBkqvq3Gasb_nVCJjW9GOc0ykCJtu5YXbtFuIOEjCfPfw_fzfnbj3joRwbBw_MDM0mqvyfqKcuSaIyx3X3e5GE" imageanchor="1"><img style="width:100%" alt="mão segurando um telefone" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/a/AVvXsEjC3-iXmyrKT9X0bJLij3Nj25MN4srBjkohAErkZJYujREisWf9ft_dB2gwIn0E-1qgA4g1NhZRMnSCDN5KQNDRk1_kDKHRz_QMswMBkqvq3Gasb_nVCJjW9GOc0ykCJtu5YXbtFuIOEjCfPfw_fzfnbj3joRwbBw_MDM0mqvyfqKcuSaIyx3X3e5GE" data-original-width="1058" data-original-height="714" /></a> </center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
A câmera do Android é um recurso apaixonante. A câmera é um dos principais motivos pelos quais as pessoas compram um smartphone. A câmera do Android beneficia os desenvolvedores atuais por meio de várias ferramentas. <a href="https://developer.android.com/training/camera2">Camera 2</a> é a API de framework que faz parte do Android desde a versão 5.0 Lollipop, e <a href="https://developer.android.com/training/camerax">CameraX</a> é uma biblioteca de suporte do Jetpack executada com base no Camera 2 e disponibilizada para todos os desenvolvedores Android. Essas soluções foram criadas para se complementar mutuamente a fim de atender às necessidades do ecossistema de câmera do Android.
</p>
<p>
<span style="text-decoration:underline;">Para os desenvolvedores que estão começando a trabalhar com a câmera do Android, atualizando apps ou migrando apps do Camera 1</span>, o<strong> <a href="https://developer.android.com/training/camerax">CameraX</a></strong> é a melhor ferramenta para começar. O CameraX oferece <strong>benefícios importantes</strong> que dão mais poder aos desenvolvedores e lidam com as complexidades do ecossistema.
</p>
<ol>
<li>A <strong>velocidade de desenvolvimento</strong> foi o principal motivador do design do CameraX. O SDK não só permite que os desenvolvedores <strong><span style="text-decoration:underline;">comecem a trabalhar muito mais rapidamente</span></strong>, como também <strong><span style="text-decoration:underline;">integrou o melhor das práticas recomendadas de desenvolvimento e do know-how de fotografia</span></strong> para aproveitar a câmera ao máximo.
<li>Muitos dispositivos usam o Android em muitas variações. O CameraX tem como finalidade ser <strong>consistente nos vários dispositivos Android</strong>. Ele absorve a complexidade a fim de oferecer aos desenvolvedores um SDK que funcione de forma consistente nos <strong><span style="text-decoration:underline;">mais de 150 modelos de telefone</span></strong>, com compatibilidade com versões anteriores que vai até o Android 5.0 (API nível 21). O CameraX é <strong><span style="text-decoration:underline;">testado diariamente</span></strong> nos laboratórios do Google em cada um desses dispositivos a fim de garantir que a complexidade não seja transmitida aos desenvolvedores e de manter a alta qualidade.
<li>Por ser uma biblioteca de suporte do Jetpack, o CameraX tem a flexibilidade dos <strong>lançamentos rápidos</strong>. Os lançamentos do CameraX <span style="text-decoration:underline;">podem acontecer em intervalos mais curtos e regulares ou no esquema ad hoc</span> com a finalidade de responder a feedbacks e fornecer novos recursos. Planejamos falar mais sobre isso em outra postagem do blog.
</li>
</ol>
<p>
<span style="text-decoration:underline;">Para os desenvolvedores que estão criando funcionalidades altamente especializadas com a câmera para o controle detalhado do fluxo de captura, no qual devem ser levadas em conta as variações de dispositivos</span>, o <strong><a href="https://developer.android.com/training/camera2">Camera 2</a></strong> deve ser utilizado.
</p>
<p>
Camera 2 é a API comum que ativa o hardware da câmera de todos os dispositivos Android e é implantada em todos os bilhões de dispositivos Android atualmente existentes no mercado mundial. Por ser uma API de framework, o Camera 2 permite que os desenvolvedores utilizem seu profundo conhecimento em fotografia e implementações em dispositivos. Para assegurar a qualidade do Camera 2, os fabricantes de dispositivos demonstram a conformidade por meio de testes em seus dispositivos. As variações dos dispositivos aparecem na API com base nas escolhas dos fabricantes dos dispositivos, permitindo que recursos personalizados se beneficiem dessas variações em dispositivos específicos da melhor forma possível.
</p>
<p>
<span style="text-decoration:underline;">Vejamos um exemplo que ajuda a explicar isso</span>. Vamos comparar recursos de captura com a câmera. O Camera 2 oferece um controle especial do pipeline individual de captura para cada uma das câmeras no telefone ao mesmo tempo, além de configurações manuais muito detalhadas. O CameraX permite a captura de fotos de alta resolução e qualidade, além de oferecer funcionalidades de balanço automático de branco, exposição automática e foco automático e controles manuais simples para a câmera.
</p>
<p>
Exemplos relacionados a aplicativos: a Samsung usa a API de framework da câmera para ajudar o sistema avançado de câmera profissional a capturar fotos com qualidade de estúdio em vários tipos de iluminação e ambientes usando dispositivos Samsung Galaxy. Embora a API seja comum, a Samsung ativou variações que são exclusivas para os recursos de cada um dos dispositivos, e ela se beneficia da API no app de câmera de cada um deles, também. A API de framework da câmera permite que a Samsung faça uso dos recursos mais avançados da câmera e adapte o app nativo para o dispositivo.
</p>
<p>
Como outro exemplo, a Microsoft decidiu integrar o CameraX a todos os apps de produtividade nos quais o Microsoft Lens é utilizado (ou seja, Office, Outlook e OneDrive), para assegurar o uso de imagens de alta qualidade em todos esses aplicativos. Com a mudança para o CameraX, a equipe do Microsoft Lens conseguiu não só melhorar a experiência dos desenvolvedores devido à simplicidade da API, como também melhorar o desempenho, elevar a produtividade dos desenvolvedores e reduzir o tempo de entrada no mercado. Saiba mais <a href="https://developer.android.com/stories/apps/microsoft-camerax">aqui</a>.
</p>
<br>
<p>
Esta é uma fase muito empolgante para a câmera do Android, e há muitos recursos novos nas duas APIs:
</p>
<ul>
<li>Recentemente, o <strong>CameraX</strong> lançou vários recursos, sendo o mais importante deles a <a href="https://developer.android.com/training/camerax/video-capture">captura de vídeo</a>, disponibilizada para os desenvolvedores na versão Beta em 26 de janeiro.
<li>Com o lançamento do Android 12, o <strong>Camera 2</strong> disponibilizou diversos <a href="https://developer.android.com/about/versions/12/features#camera2-extensions">recursos</a>.
</li>
</ul>
<p>
À medida que avançamos, compartilharemos com os desenvolvedores mais detalhes sobre os grandes recursos planejados para a câmera do Android. Esperamos interagir com vocês e receber seu feedback por meio da lista de e-mails do CameraX, <a href="mailto:camerax-developers@android.com">camerax-developers@android.com</a>, e do Issue Tracker do <a href="https://source.android.com/setup/contribute/report-bugs">AOSP</a>.
</p>
<p>
Agradecemos o interesse contínuo na câmera do Android, e esperamos criar experiências incríveis com a câmera para os usuários por meio da colaboração com vocês!
</p>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com2tag:blogger.com,1999:blog-466374421998394222.post-17920860810091398662022-05-02T12:10:00.000-03:002022-05-02T12:10:01.474-03:00Acesse dados do Android Vitals com a nova API Play Developer Reporting<html>
<div class="published">
<span class="publishdate" itemprop="datePublished"> 15 de março de 2022 </span>
</div><p><em>Postado por Lauren Mytton, gerente de produtos, Google Play</em></p><center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEhnvMF36lJv9wDDHWLQb7AfVBajueyEuocw_9ne1jgKJAO5dgXWcAyrKa92f4miTcFoSH5usz_Jha2C1gJwJNSr6et8sZGSCnkZTgtdaKPemEfwaHJDjiurWaPtqFF3qI0aX7aRB7B9WUW1VXT_Wgkyyq8nYK7RrOy9zW4a7gROkzd3H5m9T36Bc7Ww" imageanchor="1"><img alt="Mão segurando um telefone" border="0" data-original-height="714" data-original-width="1058" id="imgFull" src="https://blogger.googleusercontent.com/img/a/AVvXsEhnvMF36lJv9wDDHWLQb7AfVBajueyEuocw_9ne1jgKJAO5dgXWcAyrKa92f4miTcFoSH5usz_Jha2C1gJwJNSr6et8sZGSCnkZTgtdaKPemEfwaHJDjiurWaPtqFF3qI0aX7aRB7B9WUW1VXT_Wgkyyq8nYK7RrOy9zW4a7gROkzd3H5m9T36Bc7Ww" style="width:100%" /></a> </center><p>
A qualidade é fundamental para o sucesso de um jogo ou app no Google Play, e o <a href="https://play.google.com/console/about/vitals/">Android Vitals</a> no Google Play Console é uma excelente maneira de monitorar o desempenho dos apps. Na verdade, mais de mais de 80% dos milhares de desenvolvedores experientes verificam o Android Vitals pelo menos uma vez por mês para monitorar a qualidade técnica e resolver problemas, e muitos deles fazem isso diariamente.<br /><br />Embora a visão geral do Android Vitals no Play Console permita verificar rapidamente a qualidade de um jogo ou app, muitos desenvolvedores nos disseram que também queriam trabalhar com os dados do Vitals fora do Play Console. Os casos de uso incluem:
</p><ul>
<li>Criação de painéis internos
</li><li>Combinação com outros conjuntos de dados para uma análise mais aprofundada e
</li><li>Automação da solução de problemas e de versões
</li>
</ul><p>
<strong>A partir de hoje, esses casos de uso são possíveis com a nova <a href="https://developers.google.com/play/developer/reporting">API Play Developer Reporting</a>. </strong>
</p><p>
Com a API Play Developer Reporting, os desenvolvedores podem trabalhar com dados no nível do app em suas contas de desenvolvedor fora do Play Console. Nesta versão inicial, você tem acesso às quatro principais métricas de bateria e estabilidade do Android Vitals: taxa de falhas, taxa de ANR, taxa de ativações excessivas e taxa de wake-locks em segundo plano travados, além de problemas de ANR e falhas e stack traces. Também é possível visualizar anomalias, detalhamentos (inclusive novos filtros de país no Vitals) e três anos de histórico de métricas.
</p><br /><center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEjmAybViQRaOrQa6_pScpf6PlgG4Azx1GXY8Xns4Dit0a3hxeahAkfNJ0z1u92eJqbmToOjRMeEgLJYMgOktPs11-qRoqM1bJsJ9ThdH5tsIFXKGuQ5TzmBjifxvp0EAqA7ZJA5rWgEVFJaGjYQDtgLesgUKm0d38DtBa6aw-WaRZmXUdMwtonEcixX" imageanchor="1"><img alt="Configuração do acesso à nova API Play Developer Reporting na 
página API Access do Play Console." border="0" data-original-height="714" data-original-width="1058" id="imgFull" src="https://blogger.googleusercontent.com/img/a/AVvXsEjmAybViQRaOrQa6_pScpf6PlgG4Azx1GXY8Xns4Dit0a3hxeahAkfNJ0z1u92eJqbmToOjRMeEgLJYMgOktPs11-qRoqM1bJsJ9ThdH5tsIFXKGuQ5TzmBjifxvp0EAqA7ZJA5rWgEVFJaGjYQDtgLesgUKm0d38DtBa6aw-WaRZmXUdMwtonEcixX" style="width:100%" /></a><p id="imgCaption">Configuração do acesso à nova API Play Developer Reporting na página API Access do Play Console.</p></center><p>
</p><h2>Primeiros passos com a API</h2><p>
Para ativar a API, você deve ter uma conta de desenvolvedor no Play Console. Depois, é possível configurar o acesso rapidamente na página API Access do Play Console. Nossa <a href="https://developers.google.com/play/developer/reporting">documentação</a> contém tudo o que você precisa saber para dar os primeiros passos.
</p><p>
</p><h2>Como usar a API</h2><p>
Na documentação da API, estão disponíveis <a href="https://developers.google.com/play/developer/reporting/metricset-queries">amostras de solicitações</a> e uma lista dos <a href="https://developers.google.com/play/developer/reporting/metricset-intro">endpoints disponíveis</a> (para as versões Alfa e Beta).
</p><p>
</p><h2>Práticas recomendadas</h2><p>
Depois de ativar a API, é recomendável enviar algumas solicitações manualmente para ter uma noção da operação e dos recursos da API antes de implementar soluções mais complexas. Isso também pode ajudar a determinar tempos de consulta, que podem variar de acordo com o volume de dados em processamento. A execução de consultas em longos intervalos de tempo, em muitas dimensões e/ou em apps muito grandes, pode demorar muito.
</p><p>
A maioria dos nossos conjuntos de métricas é atualizada uma vez por dia. Para evitar o desperdício de recursos e cotas de solicitação, recomendamos a utilização dos métodos fornecidos para verificar o nível de atualização dos dados e se novos dados estão disponíveis antes de emitir uma consulta.
</p><p>
Agradecemos a todos os desenvolvedores que solicitaram esse recurso. Esperamos que isso ajude vocês a continuar melhorando os apps e jogos. Para saber mais sobre o Android Vitals e a API Play Developer Reporting, assista à nossa sessão no Google for Games Developer Summit.
</p><center><iframe width="100%" height="315" src="https://www.youtube.com/embed/edo4AwJdgPs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" /></center><brb>
<!-- Yay, no errors, warnings, or alerts! -->
<center>
<p>
Esta postagem do blog foi útil para você?
</p>
<p>
<a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=1%E2%98%85+%E2%80%93+Not+at+all&entry.2056663615&entry.646747778=devreportingAPI-03/22">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=2%E2%98%85+%E2%80%93+Not+very&entry.2056663615&entry.646747778=devreportingAPI-03/22">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=3%E2%98%85+%E2%80%93+Somewhat&entry.2056663615&entry.646747778=devreportingAPI-03/22">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=4%E2%98%85+%E2%80%93+Very&entry.2056663615&entry.646747778=devreportingAPI-03/22">★</a> <a href="https://docs.google.com/forms/d/e/1FAIpQLScLTlzFd_aV-3rAdBqO1QxwCsuAcDCIM6fJFXyNcyf7zElVXg/viewform?usp=pp_url&entry.753333049=5%E2%98%85+%E2%80%93+Extremely&entry.2056663615&entry.646747778=devreportingAPI-03/22">★</a>
</p><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj644kxIWCza45ZqnCjrqXj-H-vkL2aTnlbvUnizMQjg11QEXz4E8pl19Md5Cw1gODL_BOUXW-XGiiwJuanPew-7QkN5-8Y9OVjLat_s0pT6gPNCxM2Std0YaWhXfq2-vh5ASNGGUXi01z8ZUoPs8uYQU9v76cmmPbiP1KkIxa9XVSGKg5xH27R3zQV" imageanchor="1"><img alt="Logotipo do Google Play" border="0" data-original-height="714" data-original-width="1058" id="imgFull" src="https://blogger.googleusercontent.com/img/a/AVvXsEj644kxIWCza45ZqnCjrqXj-H-vkL2aTnlbvUnizMQjg11QEXz4E8pl19Md5Cw1gODL_BOUXW-XGiiwJuanPew-7QkN5-8Y9OVjLat_s0pT6gPNCxM2Std0YaWhXfq2-vh5ASNGGUXi01z8ZUoPs8uYQU9v76cmmPbiP1KkIxa9XVSGKg5xH27R3zQV" style="width:50%" /></a> </center>
</brb><div class="share">
<span class="twitter-custom social-wrapper" data-href="http://twitter.com/share?text=Android Developers Blog:Access Android vitals data through the new Play Developer Reporting API &url=https://android-developers.googleblog.com/2022/03/play-developer-reporting-API.html&via=google">
<img alt="Compartilhar no Twitter" height="24" src="https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png" width="24" />
</span> <span class="fb-custom social-wrapper" data-href="https://www.facebook.com/sharer.php?u=https://android-developers.googleblog.com/2022/03/play-developer-reporting-API.html">
<img alt="Compartilhar no Facebook" height="24" src="https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png" width="24" />
</span> <span class="email-custom social-wrapper" data-href="mailto:?body=https://android-developers.googleblog.com/2022/03/play-developer-reporting-API.html">
<img alt="Compartilhar por e-mail" height="24" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVMaXEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbsZG/AAAAEHRSTlMAILDy/y78bg9wzE/jjwyQQ3EYrQAAAMpJREFUeAHN0yHIwmAQxvHng2/IypDZw9AOyuziDiemgb2tCgsGO4LY7cneg73Yl+0dsy8PcuzdsTaGf7D4e3cbbIdh+ptKq0VBmIhpSZhZWBNSCxmhFFv/sDmh0aVUyOF1VNj6cFZYIYEW478BWYVvYaogDmRXgAV38eAhhxdc0VueHkS1+wPggSZwRALEHOkBRmlWhe6HFvA0rzLg5vM+FqKaT2YBQQEL2u+DebUKuQ83Bf/zuZYKtn6he3G6V21vYU4I7DqPMUgfpvKO2fcD4TMAAAAASUVORK5CYII=" target="_blank" width="24" />
</span>
</div><div class="label-footer">
<span class="labels-caption"> Rótulos: </span> <span class="labels"> <a class="label" href="https://android-developers.googleblog.com/search/label/android%20developers" rel="tag"> desenvolvedores Android</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/Featured" rel="tag"> Em destaque</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/Google%20Play" rel="tag"> Google Play</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/latest" rel="tag"> últimas notícias</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/Play%20Console" rel="tag"> Play Console</a></span>
</div></html>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com0tag:blogger.com,1999:blog-466374421998394222.post-18263918788345932392022-05-02T11:59:00.000-03:002022-05-02T11:59:35.592-03:00Expansão dos requisitos de nível de API de destino do Play para reforçar a segurança dos usuários<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifh6osWctzfS76FGmd91DArGexlVFw7BNh0ZCqgSuU5aO1AU2pt2T554nkpGy8AzeY_oIOY-TWc0YsS_DwMR9yp3aV_TSrgh7-XPNAg8jSDe_8ySG4ae6D6OqVUMzPmwEoPDXvEhA09um5qahSO1cfSjWIk03bq7vUVDvDHnvt-EubXLKw_Dz2uoUI/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifh6osWctzfS76FGmd91DArGexlVFw7BNh0ZCqgSuU5aO1AU2pt2T554nkpGy8AzeY_oIOY-TWc0YsS_DwMR9yp3aV_TSrgh7-XPNAg8jSDe_8ySG4ae6D6OqVUMzPmwEoPDXvEhA09um5qahSO1cfSjWIk03bq7vUVDvDHnvt-EubXLKw_Dz2uoUI/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png">
<p><em>Postado por Krish Vitaldevara, diretor de gerenciamento de produtos</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifh6osWctzfS76FGmd91DArGexlVFw7BNh0ZCqgSuU5aO1AU2pt2T554nkpGy8AzeY_oIOY-TWc0YsS_DwMR9yp3aV_TSrgh7-XPNAg8jSDe_8ySG4ae6D6OqVUMzPmwEoPDXvEhA09um5qahSO1cfSjWIk03bq7vUVDvDHnvt-EubXLKw_Dz2uoUI/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png" imageanchor="1"><img style="width:100%" alt="Requisitos de API" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifh6osWctzfS76FGmd91DArGexlVFw7BNh0ZCqgSuU5aO1AU2pt2T554nkpGy8AzeY_oIOY-TWc0YsS_DwMR9yp3aV_TSrgh7-XPNAg8jSDe_8ySG4ae6D6OqVUMzPmwEoPDXvEhA09um5qahSO1cfSjWIk03bq7vUVDvDHnvt-EubXLKw_Dz2uoUI/s1600/Android-New-policy-update-to-strengthen-Google-Play-social.png" data-original-width="1058" data-original-height="714" /></a> </center>
<p>
O Google Play ajuda nossa comunidade de desenvolvedores a distribuir os apps mais inovadores e confiáveis do mundo para bilhões de pessoas. Esse é um processo contínuo, e nós estamos sempre trabalhando para encontrar formas de aumentar a segurança dos apps em todo o ecossistema.
</p>
<p>
Além dos recursos e das políticas do Google Play que são fundamentais para o fornecimento de uma experiência segura para os usuários, todas as atualizações do SO Android trazem melhorias de privacidade, segurança e experiência do usuário. Para garantir que os usuários se beneficiem totalmente desses avanços e para manter a experiência confiável que as pessoas esperam do Google Play, colaboramos com os desenvolvedores para assegurar que os apps funcionem perfeitamente nas versões mais recentes do Android.
</p>
<p>
No momento, exigimos que os novos apps e as atualizações de apps sejam segmentados para um determinado nível de API do Android no máximo um ano depois do mais recente lançamento de uma versão principal do SO Android. Os novos apps e as atualizações de apps que não atendem a esse requisito não podem ser publicados no Google Play. Para ver os cronogramas exatos, consulte este <a href="https://support.google.com/googleplay/android-developer/answer/11926878">artigo da Central de Ajuda</a>.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUNA64x1afYU2WYBTYWbzOKhp2hOSmmNwKWTumQAZJHoJqyvZHzfwtdSTKz6Ndq02365nwwOKm-M7rAS7gPW2f2PRJg-05ekqJyVsyy3CBFgEkAe4_Ds_BmoGwBoPEXzVUfvftN2Kn8Owy-EipH2gF31VkhhIipSJEFmjZSliYWsuaE9TL9fxf2Vl-/s1600/image1.png" imageanchor="1"><img style="width:100%" alt="Requisitos atuais de nível de API de destino para novos apps e atualizações de apps" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUNA64x1afYU2WYBTYWbzOKhp2hOSmmNwKWTumQAZJHoJqyvZHzfwtdSTKz6Ndq02365nwwOKm-M7rAS7gPW2f2PRJg-05ekqJyVsyy3CBFgEkAe4_Ds_BmoGwBoPEXzVUfvftN2Kn8Owy-EipH2gF31VkhhIipSJEFmjZSliYWsuaE9TL9fxf2Vl-/s1600/image1.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption" style="padding-top:.3em">Requisitos atuais de nível de API de destino para novos apps e atualizações de apps</p></center>
<br>
<p>
<strong>Hoje, como parte das <a href="https://support.google.com/googleplay/android-developer/answer/9934569?hl=en&ref_topic=9877065">mais recentes atualizações de políticas do Google Play</a>, estamos tomando medidas adicionais, por meio da expansão dos requisitos de nível de API de destino, para proteger os usuários contra a instalação de apps que podem não ter os recursos mais recentes de privacidade e segurança.</strong>
</p>
<p>
A partir de 1º de novembro de 2022, os apps existentes que não segmentarem um nível de API dentro de dois anos da mais recente versão principal do Android não serão disponibilizados para descoberta ou instalação por novos usuários com dispositivos que executem versões do SO Android superiores ao nível de API de destino do app. Quando novas versões do SO Android forem lançadas no futuro, a janela do requisito será ajustada adequadamente.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmVs8d9B8OuVgmv8r5nWtYsEyWLI33sgCl3WIm8MtFBczuyGAbL3-KfJuN763n0PaPx15QD51HZ-DLmqHKO94E8ghHCOpnUKdcG9VKp5gqwbS9WPoNJ5dF85wCkarGlr-NIMhFsGxR5OyVJfk1MiGILmO0K5mLXm2z2w3tkFL6iD4Go9N7eZDgoFly/s1600/image2.png" imageanchor="1"><img style="width:100%" alt="Requisitos de nível de API de destino para apps existentes a partir de 1º de novembro" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmVs8d9B8OuVgmv8r5nWtYsEyWLI33sgCl3WIm8MtFBczuyGAbL3-KfJuN763n0PaPx15QD51HZ-DLmqHKO94E8ghHCOpnUKdcG9VKp5gqwbS9WPoNJ5dF85wCkarGlr-NIMhFsGxR5OyVJfk1MiGILmO0K5mLXm2z2w3tkFL6iD4Go9N7eZDgoFly/s1600/image2.png" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption" style="padding-top:.3em">Requisitos de nível de API de destino para apps existentes a partir de 1º de novembro</p></center>
<br>
<p>
A lógica por trás dessa decisão é simples. Os usuários com os dispositivos mais recentes ou que fazem todas as atualizações do Android esperam aproveitar todo o potencial de todas as proteções de privacidade e segurança oferecidas pelo Android. <strong>A expansão dos requisitos de nível de API de destino protegerá os usuários contra a instalação de apps mais antigos que podem não ter essas proteções implementadas. </strong>
</p>
<p>
A boa notícia é que a enorme maioria dos apps no Google Play já segue esses padrões. No caso de outros apps, sabemos que isso exigirá atenção adicional, e é por isso que estamos notificando os desenvolvedores com bastante antecedência e fornecendo recursos<strong> </strong>para aqueles que necessitam.
</p>
<p>
Encorajamos você a:
</p>
<ul>
<li>Revisar nosso <a href="https://developer.android.com/google/play/requirements/target-sdk">guia técnico</a> sobre migração de apps para atender aos requisitos de nível de API de destino do Google Play.
<li>Revisar este <a href="https://support.google.com/googleplay/android-developer/answer/11926878">artigo da Central de Ajuda</a> sobre os requisitos de nível de API de destino por SO Android.
<li>Solicitar uma extensão opcional de seis meses, caso precise de mais tempo para a migração. O formulário será disponibilizado ainda este ano no Play Console para desenvolvedores.
</li>
</ul>
<p>
Os usuários atuais de apps mais antigos que tiverem feito a instalação pelo Google Play continuarão tendo a capacidade de descobrir, reinstalar e usar o app em qualquer dispositivo com qualquer versão do SO Android à qual o app dê suporte.
</p>
<p>
Essa política reforçada de nível de API de destino é apenas uma das <a href="https://support.google.com/googleplay/android-developer/answer/9934569?hl=en&ref_topic=9877065">atualizações de políticas</a> que anunciamos hoje para expandir as proteções e melhorar as experiências dos usuários no Google Play. Continuaremos compartilhando atualizações sobre esse importante trabalho, que ajudará a elevar o nível de privacidade e segurança de apps em todos os aspectos, fazendo do Google Play e do Android locais mais seguros para todos.
</p>
<h2><strong>Mais recursos:</strong></h2>
<ul>
<li>Revise o <a href="https://support.google.com/googleplay/android-developer/answer/9876714">resumo</a> completo de atualizações de políticas.
<li>Assista ao <a href="https://youtu.be/O0UwUF2DgQc">vídeo do PolicyBytes</a>.
<li><a href="https://developersonair.withgoogle.com/events/policy-webinar-april2022">Participe de nosso webinar global</a> ou inscreva-se em uma sessão local na <a href="https://developersonair.withgoogle.com/events/indiapolicywebinar-q1#">Índia</a>, no <a href="https://developersonair.withgoogle.com/events/policy2022-1">Japão</a>, na <a href="https://developersonair.withgoogle.com/events/policywebinar2022kr">Coreia</a> ou no <a href="http://goo.gle/Q2-22-PlayPolicyWebinar-BR">Brasil</a>. Você pode enviar perguntas antecipadamente.DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com1tag:blogger.com,1999:blog-466374421998394222.post-27531837486253661602022-05-02T11:56:00.000-03:002022-05-02T11:56:59.900-03:00Upgrade do atestado do Android: Provisionamento remoto<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXGH6tNkY1UkXgIQluciMoaSR9hZNKAoKcRyv_UxyHbEuPRvTVfWT4A_3BQEb_HCMUALR5bScXZsIEzHiRJwrFgm9fhouknFkP5H5ngCUtdf7uiGpTuCOm5dF5rtDrjR5Vm0r9NNU4J7lzN3k0sdMQumgan-NPp2nPSgXypTqj-yqn6BBS9URGrh1F/s1600/Android-KeyAttestation-Header.png">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXGH6tNkY1UkXgIQluciMoaSR9hZNKAoKcRyv_UxyHbEuPRvTVfWT4A_3BQEb_HCMUALR5bScXZsIEzHiRJwrFgm9fhouknFkP5H5ngCUtdf7uiGpTuCOm5dF5rtDrjR5Vm0r9NNU4J7lzN3k0sdMQumgan-NPp2nPSgXypTqj-yqn6BBS9URGrh1F/s1600/Android-KeyAttestation-Header.png">
<p><em>Postado por Max Bires, engenheiro de software</em><p>
<center><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXGH6tNkY1UkXgIQluciMoaSR9hZNKAoKcRyv_UxyHbEuPRvTVfWT4A_3BQEb_HCMUALR5bScXZsIEzHiRJwrFgm9fhouknFkP5H5ngCUtdf7uiGpTuCOm5dF5rtDrjR5Vm0r9NNU4J7lzN3k0sdMQumgan-NPp2nPSgXypTqj-yqn6BBS9URGrh1F/s1600/Android-KeyAttestation-Header.png" style="display: block; padding: 1em 0; text-align: center; "><img style="width:100%" alt="Fundo azul do Android" border="0" data-original-height="1253" data-original-width="4209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXGH6tNkY1UkXgIQluciMoaSR9hZNKAoKcRyv_UxyHbEuPRvTVfWT4A_3BQEb_HCMUALR5bScXZsIEzHiRJwrFgm9fhouknFkP5H5ngCUtdf7uiGpTuCOm5dF5rtDrjR5Vm0r9NNU4J7lzN3k0sdMQumgan-NPp2nPSgXypTqj-yqn6BBS9URGrh1F/s1600/Android-KeyAttestation-Header.png"/></a></div></center>
<p>
Como recurso, o atestado é obrigatório desde o Android 8.0. Ao longo das várias versões, ele foi se tornando cada vez mais fundamental para a confiabilidade de diversos recursos e serviços, como SafetyNet, Identity Credential, Digital Car Key, e de muitas bibliotecas de terceiros. Em vista disso, chegou a hora de revisar nossa infraestrutura de atestados para reforçar a segurança da cadeia de confiança e aumentar a capacidade de recuperação da confiabilidade dos dispositivos em caso de vulnerabilidades conhecidas.
</p>
<p>
A partir do Android 12.0, forneceremos uma opção de substituição do provisionamento de chaves privadas de fábrica por uma combinação de <strong>extração</strong> de chaves privadas de fábrica e provisionamento OTA de certificados de curta duração. Esse esquema será obrigatório no Android 13.0. Ele é conhecido como provisionamento remoto de chaves.
</p>
<br>
<h2>Quem será impactado?</h2>
<h3>OEMs/ODMs</h3>
<p>
Os fabricantes de dispositivos deixarão de provisionar chaves privadas de atestado diretamente para os dispositivos na fábrica, o que elimina a sobrecarga de gerenciamento de chaves secretas na fábrica para fins de atestado.
</p>
<h3>Potencialmente, as partes confiáveis</h3>
<p>
O formato, os algoritmos e o comprimento da cadeia de certificados de um atestado, descritos mais adiante, passarão por mudanças. Se uma parte confiável tiver configurado o código de validação de certificados com correspondência muito rígida à estrutura da cadeia de certificados legada, esse código precisará ser atualizado.
</p>
<br>
<h2>Por que foi feita essa mudança?</h2>
<p>
Os dois fatores principais que motivaram a mudança da forma como provisionamos certificados de atestado para os dispositivos são permitir a recuperação de dispositivos após um comprometimento e reforçar a cadeia de suprimentos de atestados. No atual esquema de atestado, se um modelo de dispositivo for comprometido de uma forma que afete o sinal de confiabilidade de um atestado ou se ocorrer o vazamento de uma chave por meio de qualquer mecanismo, a chave deverá ser revogada. Devido ao número cada vez maior de serviços que dependem do sinal de chave de atestado, isso pode ter um grande impacto sobre os consumidores cujos dispositivos forem afetados.
</p>
<p>
Essa mudança nos permite interromper o provisionamento para dispositivos com software comprovadamente comprometido e eliminar o potencial de vazamento não intencional de chaves. Isso ajudará a reduzir muito a possibilidade de interrupção de serviços para os usuários.
</p>
<center><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZkQ9l2DzFZIO70PqKpg-jD6hVu0Rh-IgN5orEMZ6pvIJJzBMJZOpud8eK9puowfvegsqMAVSlJHcYHM1dD6lQvbIBtn0L3E46KNJijsyQFA3x-t2wDx6HEKIoDZrzCK_KX0HgVSCaQmhX6oea3c4neK81GOuA456Ik6miPmumxS1D75gQvfF3U6al/s1600/unnamed.png" style="display: block; padding: 1em 0; text-align: center; "><img style="width:75%" alt="Imagem de servidores do Google" border="0" data-original-height="1600" data-original-width="1532" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZkQ9l2DzFZIO70PqKpg-jD6hVu0Rh-IgN5orEMZ6pvIJJzBMJZOpud8eK9puowfvegsqMAVSlJHcYHM1dD6lQvbIBtn0L3E46KNJijsyQFA3x-t2wDx6HEKIoDZrzCK_KX0HgVSCaQmhX6oea3c4neK81GOuA456Ik6miPmumxS1D75gQvfF3U6al/s1600/unnamed.png"/></a></div></center>
<br>
<h2>Como isso funciona?</h2>
<p>
Cada dispositivo gera um par de chaves estáticas exclusivas, e a parte pública desse par de chaves é extraída pelo OEM na fábrica. Em seguida, é feito o upload dessas chaves públicas para os servidores do Google, onde elas servem como base de confiança para o provisionamento posterior. A chave privada nunca deixa o ambiente seguro na qual é gerada.
</p>
<p>
Quando um novo dispositivo é conectado pela primeira vez à Internet, ele gera uma solicitação de assinatura de certificado para as chaves geradas por ele, assinando-a com a chave privada correspondente à chave pública coletada na fábrica. Os servidores de back-end verificam a autenticidade da solicitação e assinam as chaves públicas, retornando as cadeias de certificados. O armazenamento de chaves, então, armazena essas cadeias de certificados, atribuindo-as aos apps sempre que um atestado é solicitado.
</p>
<p>
Esse fluxo ocorre regularmente com a expiração dos certificados ou a exaustão do suprimento de chaves atual. O esquema preserva a privacidade, porque cada aplicativo recebe uma chave de atestado diferente, e as próprias chaves passam periodicamente por um rodízio. Além disso, os servidores de back-end do Google são segmentados de tal forma que o servidor que verifica a chave pública do dispositivo não vê as chaves de atestado anexadas. Isso significa que não é possível para o Google correlacionar as chaves de atestado com o dispositivo em particular que as solicitou.
</p>
<br>
<h2>O que muda, do ponto de vista técnico?</h2>
<p>
Os usuários finais não notarão nenhuma mudança. Os desenvolvedores que usam atestados deverão ficar atentos às seguintes mudanças:
</p>
<ul>
<li>Estrutura da cadeia de certificados <ul>
<li>Devido à natureza de nossa nova infraestrutura de provisionamento on-line, o comprimento da cadeia está maior do que antes e está sujeito a mudanças.
</li>
</ul>
<li>Raiz de confiança <ul>
<li>A raiz de confiança será eventualmente atualizada da atual chave RSA para uma chave ECDSA.
</li>
</ul>
<li>Suspensão de uso do atestado RSA <ul>
<li>Todas as chaves geradas e atestadas pelo KeyMint serão assinadas com uma chave ECDSA e a cadeia de certificados correspondente. Antes, as chaves assimétricas eram assinadas por seus algoritmos correspondentes.
</li>
</ul>
<li>Certificados e chaves de atestado de curta duração <ul>
<li>Os certificados provisionados a dispositivos geralmente serão válidos por até dois meses antes de expirarem e passarem pelo rodízio.DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com1tag:blogger.com,1999:blog-466374421998394222.post-60215277441952828422022-05-02T11:53:00.000-03:002022-05-02T11:53:22.387-03:00Twitter adota o Jetpack Compose para o desenvolvimento de recursos: mais produtividade, menos bugs<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSnTXuftRvdfkb9VwhD2BFbWTLirSGthkJaLaENBnQeHUw57krl2_ByxuYRriO9c-WpYjmhRzH6m7Bq5R7cQ_g14J-lQKMiBw4YQ7YG23WY4Fg1dStfp5affWuM0LhcFWYz0ZE_5wNZsDEWNanF81GHjEOZmNrKIwYWIOX6saSg1-IvJTZtMXFlQ9e/s1600/image3.gif">
<img style="display:none" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSnTXuftRvdfkb9VwhD2BFbWTLirSGthkJaLaENBnQeHUw57krl2_ByxuYRriO9c-WpYjmhRzH6m7Bq5R7cQ_g14J-lQKMiBw4YQ7YG23WY4Fg1dStfp5affWuM0LhcFWYz0ZE_5wNZsDEWNanF81GHjEOZmNrKIwYWIOX6saSg1-IvJTZtMXFlQ9e/s1600/image3.gif">
<p><em>Postado pela equipe do Android</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSnTXuftRvdfkb9VwhD2BFbWTLirSGthkJaLaENBnQeHUw57krl2_ByxuYRriO9c-WpYjmhRzH6m7Bq5R7cQ_g14J-lQKMiBw4YQ7YG23WY4Fg1dStfp5affWuM0LhcFWYz0ZE_5wNZsDEWNanF81GHjEOZmNrKIwYWIOX6saSg1-IvJTZtMXFlQ9e/s1600/image3.gif" imageanchor="1"><img style="width:100%" alt="Twitter adota o Jetpack Compose para o desenvolvimento de recursos" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSnTXuftRvdfkb9VwhD2BFbWTLirSGthkJaLaENBnQeHUw57krl2_ByxuYRriO9c-WpYjmhRzH6m7Bq5R7cQ_g14J-lQKMiBw4YQ7YG23WY4Fg1dStfp5affWuM0LhcFWYz0ZE_5wNZsDEWNanF81GHjEOZmNrKIwYWIOX6saSg1-IvJTZtMXFlQ9e/s1600/image3.gif" data-original-width="1058" data-original-height="714" /></a> </center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
O Twitter, uma das plataformas de mídia social mais utilizadas do mundo, está sempre em busca de formas de conectar melhor os usuários. Ao mesmo tempo, a fim de criar novos recursos com eficiência e ainda manter os existentes, os desenvolvedores precisam de uma infraestrutura de suporte. A equipe de engenharia do Twitter escolheu o <a href="https://developer.android.com/jetpack/compose">Jetpack Compose</a> para iniciar uma reformulação muito necessária da base da IU do app. Com o Compose, os desenvolvedores podem facilmente localizar e usar as APIs certas, estilizar e modularizar componentes e criar mais com menos código.
</p>
<h2>Twitter lança reformulação de IU</h2>
<p>
Algumas equipes, como as de IU de cliente Android, aquisição de clientes, Twitter Blue e comunidades, reformularam seus processos de desenvolvimento, gerando grande agitação entre os engenheiros do Twitter. "<em>Várias equipes do Twitter adotaram o Compose em seus fluxos de trabalho diários</em>", disse Sneha Patil, engenheira de software sênior e líder técnica da equipe de comunidades do Twitter para Android. Ao eliminar o trabalho de criação e configuração de temas e atributos personalizados, o Compose tornou a escrita de funções e a implementação de requisitos de design muito mais rápida e simples do que com Views. O Jetpack Compose permitiu que essas equipes trabalhassem com mais rapidez e eficiência, assegurassem a capacidade de reutilização do código e integrassem novos engenheiros com facilidade.
</p>
<br>
<h2>Revitalização do processo de desenvolvimento</h2>
<p>
A criação de conteúdo dinâmico é mais direta com o Compose. A equipe do Twitter usou a função que pode ser composta <a href="https://developer.android.com/jetpack/compose/lists#lazy">LazyColumn</a> para criar a IU sem a necessidade de um Adapter ou ViewHolder, simplificando o processo de escrita de um código que dá vida, facilmente, a layouts, temas e estilos. Com menos linhas a serem escritas, as equipes de desenvolvimento do Twitter reduziram o código boilerplate, tiveram menos bugs durante o desenvolvimento e os lançamentos, ativaram os testes experimentais da IU e aceleraram o processo de testes. Essas melhorias elevaram a produtividade para que os desenvolvedores pudessem passar mais tempo criando aquilo que torna o Twitter único.
</p>
<p>
Eles também usaram o Compose para criar componentes sem estado que podem ser reutilizados em todo o app. A flexibilidade do Compose facilitou e agilizou o atendimento de requisitos de design, tornando a configuração de temas e estilos mais simples para os engenheiros novos e também para os mais experientes.
</p>
<br>
<h2>Criação de novos recursos usando o Compose</h2>
<p>
Com as melhorias observadas, eles decidiram criar um recurso totalmente novo usando o Compose. Eles criaram o <a href="https://help.twitter.com/en/using-twitter/communities">recurso Comunidades</a>, o espaço dedicado do Twitter no qual os usuários podem interagir em discussões sobre assuntos que são importantes para eles. Isso foi feito usando o Compose, do início ao fim. Em comparação com a experiência anterior das equipes com o uso de Views para outros recursos, a criação com o Compose foi muito mais rápida e com menos bugs. <em>"Foi mágico</em>", disse Sneha. "<em>Isso muda tudo na forma como podemos desenvolver em Android usando o Compose.</em>."
</p>
<center> <a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8XZ7bT_srvn9XTZrCX_s14sEehZ1jEG3jK41csU-mnFoao8eCwOO5AqLqF-2amVcWC_Mzu2AXhatjbRdYBDIIw48x-S57hxLZ7eZTa46HHETEAohnkXvDnh-VTVSWEcEygbf9C6nX4onNtzdFG375jGmswy5GjhzHGdUeI67u4I4vCch_u4DvrwK_/s1600/image1.png" imageanchor="1"><img style="width:100%" alt="Citação de Yoali Sotomayor Baqueiro" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8XZ7bT_srvn9XTZrCX_s14sEehZ1jEG3jK41csU-mnFoao8eCwOO5AqLqF-2amVcWC_Mzu2AXhatjbRdYBDIIw48x-S57hxLZ7eZTa46HHETEAohnkXvDnh-VTVSWEcEygbf9C6nX4onNtzdFG375jGmswy5GjhzHGdUeI67u4I4vCch_u4DvrwK_/s1600/image1.png" data-original-width="1058" data-original-height="714" /></a> </center>
<br>
<h2>O Compose amplifica a saída de desenvolvimento</h2>
<p>
O Compose amplificou a velocidade e a eficiência do desenvolvimento de IUs pelos engenheiros do Twitter. Os desenvolvedores incorporaram e criaram com facilidade usando o Compose, o que facilitou a modularização do código, a reutilização de componentes e o detalhamento de dependências. A equipe utiliza regularmente os testes experimentais de IU, e o Compose ajudou a aumentar a confiança quanto ao comportamento em produção dos componentes que reagem as interações de usuários, atualizações de dados e diferentes tamanhos de tela.
</p>
<p>
O sucesso inicial dessas equipes com o Compose inspirou outras equipes de desenvolvimento do Twitter a seguir o exemplo. Agora, até mesmo os engenheiros que trabalham em componentes legados complexos estão pensando em adotá-lo.
</p>
<p>
Em geral, o Compose não só removeu muitos dos obstáculos que a equipe experimentava com Views, como também tornou o fluxo de trabalho agradável, e alguns desenvolvedores estão prontos para abandonar de vez os métodos antigos. "<em>Estou louca para escrever mais em Compose e nunca mais ter que tocar em um layout XML novamente</em>", disse Yoali Sotomayor Baqueiro, engenheira de software de IU de cliente Android do Twitter. "<em>Ele torna o desenvolvimento de IUs não só mais simples, mas também muito mais divertido e intuitivo.</em>."
</p>
<center><iframe width="100%" height="315" src="https://www.youtube.com/embed/7N9rKu7l_5U" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<br>
<h2>Primeiros passos</h2>
<p>
Otimize o desenvolvimento de IUs com o <a href="https://developer.android.com/jetpack/compose">Compose</a>.DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com1tag:blogger.com,1999:blog-466374421998394222.post-79301312319043542802022-04-25T09:46:00.000-03:002022-04-25T09:46:54.027-03:00Uso do User Choice Billing com o primeiro parceiro de inovação, o Spotify<html>
<p><em>Postado por Sameer Samat, vice-presidente de gerenciamento de produtos</em></p><p>
</p><p>
Os apps para dispositivos móveis transformaram as nossas vidas. Eles nos informam e entretêm, nos mantêm conectados uns aos outros e criaram novas oportunidades para bilhões de pessoas em todo o mundo. Temos muito orgulho do papel desempenhado pelo Google Play nessa transformação global ocorrida nos últimos 10 anos.
</p><p>
Não estaríamos aqui se não fosse pelas sólidas parcerias com nossos estimados desenvolvedores e pelo feedback deles para continuarmos evoluindo. Com base no feedback dos parceiros e em resposta à concorrência, por exemplo, nosso modelo de preços evoluiu para contribuir com o sucesso de todos os desenvolvedores em nossa plataforma. Hoje, 99% dos desenvolvedores se qualificam para uma <a href="https://android-developers.googleblog.com/2021/10/evolving-business-model.html">taxa de serviço</a> de 15% ou menos.
</p><p>
Recentemente, surgiu uma discussão relacionada à opção de faturamento dentro de app stores. Aplaudimos essa discussão e, hoje, queremos compartilhar um programa piloto incrível no qual estamos trabalhando em parceria com os desenvolvedores do Play.
</p><br /><h3>User Choice Billing </h3><p>
Quando os usuários escolhem o Google Play<strong>, </strong>fazem isso porque contam conosco para entregar uma experiência segura, incluindo sistemas de pagamento no aplicativo que protegem as informações financeiras e os dados dos usuários. Foi por isso que criamos o sistema de faturamento do Google Play segundo os mais altos padrões de privacidade e segurança, para que os usuários possam ter a segurança de que seus dados confidenciais de pagamento não correrão riscos quando eles fizerem compras no aplicativo.
</p><p>
Acreditamos que os usuários devem continuar tendo a opção de usar o sistema de faturamento do Play ao instalarem um app usando o Google Play. Também achamos que é fundamental que os sistemas de faturamento alternativos sigam padrões de segurança igualmente altos para proteger os dados pessoais e as informações financeiras confidenciais dos usuários.
</p><p>
Em continuidade a nosso recente lançamento, que habilita um <a href="https://developers-kr.googleblog.com/2021/11/enabling-alternative-billing-in-korea-en.html">sistema de faturamento adicional</a> juntamente com o faturamento do Play para usuários na Coreia do Sul, e em linha com os nossos <a href="https://blog.google/outreach-initiatives/public-policy/how-sustain-safe-thriving-app-and-game-ecosystem/">princípios</a>, anunciamos que exploraremos o User Choice Billing em outros países.
</p><p>
Esse piloto permitirá que um pequeno número de desenvolvedores participantes ofereça uma opção adicional de faturamento além do sistema de faturamento do Google Play. Ele foi projetado para nos ajudar a explorar formas de oferecer essa opção aos usuários e continuar mantendo nossa capacidade de investir no ecossistema. Esse é um marco importante, e o primeiro do tipo em todas as grandes app stores, seja para dispositivos móveis, computadores ou consoles de jogos.
</p><br /><h3>Parceria com o Spotify</h3><p>
Teremos parcerias com desenvolvedores para explorar diferentes implementações do User Choice Billing, <a href="https://newsroom.spotify.com/2022-03-23/spotify-and-google-announce-user-choice-billing">começando com o Spotify</a>. Por ser um dos maiores desenvolvedores com assinatura do mundo, com presença global e integrações a uma ampla gama de formatos de dispositivos, era muito natural que esse fosse nosso primeiro parceiro no projeto. Juntos, trabalharemos para inovar a forma como os consumidores fazem compras no aplicativo, para entregar experiências envolventes em vários dispositivos e para trazer mais consumidores para a Plataforma Android.
</p><p>
O Spotify introduzirá o sistema de faturamento do Google Play juntamente com seu próprio sistema, e a perspectiva da empresa como nosso primeiro parceiro será extremamente valiosa. Esse piloto nos ajudará a entender melhor se, e como, o User Choice Billing funciona para os usuários em diferentes países e para desenvolvedores de diferentes portes e categorias.
</p><p>
Alex Norström, diretor do negócio Freemium, comentou: “Há vários anos, o Spotify está em uma jornada para assegurar que os desenvolvedores de apps tenham a liberdade de inovar e concorrer em igualdade de condições. Estamos muito empolgados com a parceria com o Google para explorar essa abordagem às opções de pagamento e oportunidades para desenvolvedores, usuários e todo o ecossistema da Internet. Esperamos que esse trabalho conjunto indique um caminho que possa beneficiar todo o setor.”
</p><p>
Entendemos que esse processo levará tempo e exigirá uma colaboração direta com nossa comunidade de desenvolvedores, mas estamos muito otimistas com esse primeiro passo e planejamos trazer mais notícias nos próximos meses.
</p><div class="share">
<span class="twitter-custom social-wrapper" data-href="http://twitter.com/share?text=Android Developers Blog:Exploring User Choice Billing With First Innovation Partner Spotify&url=https://android-developers.googleblog.com/2022/03/user-choice-billing.html&via=google">
<img alt="Compartilhar no Twitter" height="24" src="https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png" width="24" />
</span> <span class="fb-custom social-wrapper" data-href="https://www.facebook.com/sharer.php?u=https://android-developers.googleblog.com/2022/03/user-choice-billing.html">
<img alt="Compartilhar no Facebook" height="24" src="https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png" width="24" />
</span> <span class="email-custom social-wrapper" data-href="mailto:?body=https://android-developers.googleblog.com/2022/03/user-choice-billing.html">
<img alt="Compartilhar por e-mail" height="24" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVMaXEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbsZG/AAAAEHRSTlMAILDy/y78bg9wzE/jjwyQQ3EYrQAAAMpJREFUeAHN0yHIwmAQxvHng2/IypDZw9AOyuziDiemgb2tCgsGO4LY7cneg73Yl+0dsy8PcuzdsTaGf7D4e3cbbIdh+ptKq0VBmIhpSZhZWBNSCxmhFFv/sDmh0aVUyOF1VNj6cFZYIYEW478BWYVvYaogDmRXgAV38eAhhxdc0VueHkS1+wPggSZwRALEHOkBRmlWhe6HFvA0rzLg5vM+FqKaT2YBQQEL2u+DebUKuQ83Bf/zuZYKtn6he3G6V21vYU4I7DqPMUgfpvKO2fcD4TMAAAAASUVORK5CYII=" target="_blank" width="24" />
</span>
</div><div class="label-footer">
<span class="labels-caption"> Rótulos: </span> <span class="labels"> <a class="label" href="https://android-developers.googleblog.com/search/label/Featured" rel="tag"> destaques</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/latest" rel="tag">últimas notícias</a></span>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com11tag:blogger.com,1999:blog-466374421998394222.post-35924291330437664112022-04-25T09:42:00.001-03:002022-04-25T09:42:55.618-03:00Escreva testes melhores com as novas orientações<html>
</div><p><em>Postado por <a href="https://twitter.com/ppvi">Jose Alcérreca</a>, engenheiro de DevRel do Android</em></p><center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEijqPilH8ZItDxsIE5xhn5FozKBwNZGPnfzcvdJmumZp0fI8UmN0aKMqCHNHjopTW3uqUlroMP3IFV9LrUoQ2aqXbgpDaqkrjqoQJEuBE6Smt88Q5nz-NgAlGWXjq8eXz0ERxVtfrrx7v6MhNoL1OV43oCVgHPSfmrSu4_YWAIUKzwz8k59ErcCplII" imageanchor="1"><img alt="Ilustração azul com smartphone Android" border="0" data-original-height="714" data-original-width="1058" id="imgFull" src=" https://blogger.googleusercontent.com/img/a/AVvXsEijqPilH8ZItDxsIE5xhn5FozKBwNZGPnfzcvdJmumZp0fI8UmN0aKMqCHNHjopTW3uqUlroMP3IFV9LrUoQ2aqXbgpDaqkrjqoQJEuBE6Smt88Q5nz-NgAlGWXjq8eXz0ERxVtfrrx7v6MhNoL1OV43oCVgHPSfmrSu4_YWAIUKzwz8k59ErcCplII" style="width:100%" /></a> </center><p>
À medida que os apps ganham mais funcionalidades e complexidade, testá-los manualmente para verificar seu comportamento se torna tedioso, caro ou até impossível. Os apps modernos, até mesmo os simples, exigem a verificação de uma lista cada vez maior de pontos de teste, como fluxos de IU, localização ou migrações de bancos de dados. Ter uma equipe de controle de qualidade cuja tarefa seja verificar manualmente se o app funciona pode ser uma opção, mas a correção de bugs nessa fase é muito cara. Quanto antes você corrigir um problema no processo de desenvolvimento, melhor.
</p><p>
A automação de testes é a melhor abordagem para identificar bugs no início. Os testes automatizados (vamos chamá-los aqui simplesmente de <em>testes</em>) são um domínio amplo, e o Android oferece muitas ferramentas e bibliotecas que podem se sobrepor. É por isso que os testes costumam ser desafiadores para os iniciantes.
</p><p>
Em resposta a esse feedback, e para acomodar o Compose e novas diretrizes de arquitetura, reformulamos duas seções sobre testes no <a href="https://d.android.com">d.android.com</a>:
</p><h2>Treinamento</h2><p>
Em primeiro lugar, temos o novo <strong><a href="https://developer.android.com/training/testing">treinamento para testes</a></strong>, que inclui noções básicas sobre testes no Android com dois novos artigos: <a href="https://developer.android.com/training/testing/fundamentals/what-to-test">What to test</a>, um guia obrigatório para iniciantes, e <a href="https://developer.android.com/training/testing/fundamentals/test-doubles">Test doubles</a>, um guia detalhado sobre dublês de teste.
</p><div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiWOemUDpatCmMa1JiwWWP3NCc3w5SIFV1-IocrL8kWb2II0YCa40Qy2hECirxpg76Q3fPeZ3WNycAK-KZJsefj6Sp77hvo_Rv4rU4s5nlVc-lAAAOg5YZxlcVbvr9Az512gMZKNPf2cfEyfyySRNDPGDI4N0d49Z5AXt5ivVRMrA3KvnomY7CORwZn" style="display: block; padding: 1em 0; text-align: center; "><img alt="Dependências forjadas em testes de unidade" border="0" data-original-height="1270" data-original-width="1296" src="https://blogger.googleusercontent.com/img/a/AVvXsEiWOemUDpatCmMa1JiwWWP3NCc3w5SIFV1-IocrL8kWb2II0YCa40Qy2hECirxpg76Q3fPeZ3WNycAK-KZJsefj6Sp77hvo_Rv4rU4s5nlVc-lAAAOg5YZxlcVbvr9Az512gMZKNPf2cfEyfyySRNDPGDI4N0d49Z5AXt5ivVRMrA3KvnomY7CORwZn" style="width:50%" /></a></div><p id="imgCaption">Dependências forjadas em testes de unidade</p><p>
<br />Depois de fornecer uma visão geral da teoria, o guia se concentra em exemplos práticos dos dois tipos principais de teste.
</p><ul>
<li>Os <a href="https://developer.android.com/training/testing/local-tests">testes locais</a>, que são executados em uma estação de trabalho e, geralmente, são testes de unidade.
</li><li>Os <a href="https://developer.android.com/training/testing/instrumented-tests">testes instrumentados</a>, que são executados em um dispositivo. Essa seção inclui uma introdução aos <a href="https://developer.android.com/training/testing/instrumented-tests/ui-tests">testes de IU</a> e às <a href="https://developer.android.com/training/testing/instrumented-tests/androidx-test-libraries/test-setup">bibliotecas de teste do AndroidX</a>.
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZSF5fsPjJqTU_3FnK1MlgAswaVi_abQ4w9kb9qRs4Z3QmKDiT2VTdf4lNspufU6E3RlzkfWMxgBkQgPTlVJCo_Z5o1f0PZcwxZGgkDuJlllCBFxpjmlVjRzBxBPQXOunDNj-Hy340U4Ri3tG9lWHlBKQC8DN4rI0YEdupdnVeTGCXZ-Dtt7AXpU2z" style="display: block; padding: 1em 0; text-align: center; "><img alt="Dependências forjadas em testes de IU" border="0" data-original-height="1365" data-original-width="1999" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZSF5fsPjJqTU_3FnK1MlgAswaVi_abQ4w9kb9qRs4Z3QmKDiT2VTdf4lNspufU6E3RlzkfWMxgBkQgPTlVJCo_Z5o1f0PZcwxZGgkDuJlllCBFxpjmlVjRzBxBPQXOunDNj-Hy340U4Ri3tG9lWHlBKQC8DN4rI0YEdupdnVeTGCXZ-Dtt7AXpU2z" style="width:50%" /></a></div><p id="imgCaption">Dependências forjadas em testes de IU</p>
<h2>Documentação de ferramentas</h2>
<p>
Em segundo lugar, atualizamos a <strong><a href="https://developer.android.com/studio/test">seção de testes da documentação de ferramentas</a></strong>, que se concentra em todas as ferramentas que ajudam na criação e execução de testes, desde o <a href="https://developer.android.com/studio/test/test-in-android-studio">Android Studio</a> até os <a href="https://developer.android.com/studio/test/command-line">testes com a linha de comando</a>.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEglY1tp9_6lYQcY7IsMZd1KpOA1TQ7R_3lQ0YoIPqvKIPsQhd2RRJygpwB8RAl6b52CxqwV5YFcoCEPatnKkJWcuPJBFZgqRCJM8rKhEr_naqs7pX93MBfN6jIZO_w62APq-KSGK64S30KjAwYk1keASt0TgsZ65-Bm0oq-NjBcoz3DXInGboaMnPyV" style="display: block; padding: 1em 0; text-align: center; "><img alt="O executor de testes unificado do Gradle." border="0" data-original-height="958" data-original-width="1999" src="https://blogger.googleusercontent.com/img/a/AVvXsEglY1tp9_6lYQcY7IsMZd1KpOA1TQ7R_3lQ0YoIPqvKIPsQhd2RRJygpwB8RAl6b52CxqwV5YFcoCEPatnKkJWcuPJBFZgqRCJM8rKhEr_naqs7pX93MBfN6jIZO_w62APq-KSGK64S30KjAwYk1keASt0TgsZ65-Bm0oq-NjBcoz3DXInGboaMnPyV" style="width:75%" /></a><p id="imgCaption">O executor de testes unificado do Gradle.</p></div>
<p>
Incluímos um artigo que descreve recursos de <a href="https://developer.android.com/studio/test/advanced-test-setup">configuração de testes avançados</a>, por exemplo, o trabalho com diferentes variantes, as opções do manifesto de instrumentação ou as configurações do Plug-in do Android para Gradle.
</p>
<p>
Essas duas novas seções devem dar a você uma noção geral de como e onde testar seu app Android. Para saber mais sobre testes de recursos e bibliotecas específicas, confira as respectivas páginas de documentação. Por exemplo: <a href="https://developer.android.com/kotlin/flow/test">Como testar fluxos do Kotlin no Android</a>, <a href="https://developer.android.com/guide/navigation/navigation-testing">Testar a navegação</a> ou o <a href="https://developer.android.com/training/dependency-injection/hilt-testing">Guia de teste do Hilt</a>.
</p>
<p>
Infelizmente, as máquinas não podem verificar automaticamente a precisão de nossa documentação. Por isso, caso você encontre erros ou tenha sugestões, registre um bug em nosso <a href="https://issuetracker.google.com/issues/new?component=192697&template=845603&pli=1">Issue Tracker de documentação</a>.
</p>
</li></ul><div class="share">
<span class="twitter-custom social-wrapper" data-href="http://twitter.com/share?text=Android Developers Blog:Write better tests with the new testing guidance&url=https://android-developers.googleblog.com/2022/02/write-better-tests-with-new-testing.html&via=google">
<img alt="Compartilhar no Twitter" height="24" src="https://www.gstatic.com/images/icons/material/system/2x/post_twitter_black_24dp.png" width="24" />
</span> <span class="fb-custom social-wrapper" data-href="https://www.facebook.com/sharer.php?u=https://android-developers.googleblog.com/2022/02/write-better-tests-with-new-testing.html">
<img alt="Compartilhar no Facebook" height="24" src="https://www.gstatic.com/images/icons/material/system/2x/post_facebook_black_24dp.png" width="24" />
</span> <span class="email-custom social-wrapper" data-href="mailto:?body=https://android-developers.googleblog.com/2022/02/write-better-tests-with-new-testing.html">
<img alt="Compartilhar por e-mail" height="24" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAMFBMVEVMaXEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACbsZG/AAAAEHRSTlMAILDy/y78bg9wzE/jjwyQQ3EYrQAAAMpJREFUeAHN0yHIwmAQxvHng2/IypDZw9AOyuziDiemgb2tCgsGO4LY7cneg73Yl+0dsy8PcuzdsTaGf7D4e3cbbIdh+ptKq0VBmIhpSZhZWBNSCxmhFFv/sDmh0aVUyOF1VNj6cFZYIYEW478BWYVvYaogDmRXgAV38eAhhxdc0VueHkS1+wPggSZwRALEHOkBRmlWhe6HFvA0rzLg5vM+FqKaT2YBQQEL2u+DebUKuQ83Bf/zuZYKtn6he3G6V21vYU4I7DqPMUgfpvKO2fcD4TMAAAAASUVORK5CYII=" target="_blank" width="24" />
</span>
</div><div class="label-footer">
<span class="labels-caption"> Rótulos: </span> <span class="labels"> <a class="label" href="https://android-developers.googleblog.com/search/label/Android" rel="tag"> Android</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/documentation" rel="tag"> documentação</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/Featured" rel="tag"> Destaques</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/latest" rel="tag"> últimas notícias</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/Testing" rel="tag"> Testes</a>, <a class="label" href="https://android-developers.googleblog.com/search/label/Tools" rel="tag"> Ferramentas</a></span>
</div></html>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com1tag:blogger.com,1999:blog-466374421998394222.post-88531166462768634122022-04-06T15:10:00.001-03:002022-04-06T15:10:31.164-03:00O que você precisa saber sobre o Google for Games Developer Summit 2022<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<h2></h2><meta name="twitter:image" content="https://blogger.googleusercontent.com/img/a/AVvXsEjxl4Vr_dRN_XIneCyW5eazb4nIIw12tV1XTuys7Q8CaolmVpuQsnpe7AQ1r8la1gMIMB5dNtcQlF-ugoYwt4EDCXmIaa330vJKYIaM_nXyTSSMAeauxOmcVCUVXqXCL3R-eDMPHcJfyKgdqpyAICMhoLHmvR0lXiNNAH4ODVe5_h6oaoCOVwpdoiPT">
<img style="display:none" src="https://blogger.googleusercontent.com/img/a/AVvXsEjxl4Vr_dRN_XIneCyW5eazb4nIIw12tV1XTuys7Q8CaolmVpuQsnpe7AQ1r8la1gMIMB5dNtcQlF-ugoYwt4EDCXmIaa330vJKYIaM_nXyTSSMAeauxOmcVCUVXqXCL3R-eDMPHcJfyKgdqpyAICMhoLHmvR0lXiNNAH4ODVe5_h6oaoCOVwpdoiPT">
<p><em>Postado por Greg Hartrell, diretor de produtos para jogos no Play/Android</em><p>
<center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEhW4RL-UKUurgM2bVJRepqjKehVETjf9bqdXllyspPaWTTt8s86MGvfxlxLkDyJAnnkGr7vDpDTPx6bQbgkThYXMSaW1GQvXw9V57xybA8Y89vIE45JDElGxSNFHwOAndATPYrGmc200fkyBTRSNi7w53hTbS1ao-TSoEBFs8jvTgz6ud5Tcb1qitkt" imageanchor="1"><img style="width:100%" alt="Google for Games Developer Summit" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/a/AVvXsEhW4RL-UKUurgM2bVJRepqjKehVETjf9bqdXllyspPaWTTt8s86MGvfxlxLkDyJAnnkGr7vDpDTPx6bQbgkThYXMSaW1GQvXw9V57xybA8Y89vIE45JDElGxSNFHwOAndATPYrGmc200fkyBTRSNi7w53hTbS1ao-TSoEBFs8jvTgz6ud5Tcb1qitkt" data-original-width="1058" data-original-height="714" /></a> </center>
<!-- Yay, no errors, warnings, or alerts! -->
<p>
Ao longo dos anos, temos observado que os apps e jogos são mais do que experiências. Eles são negócios liderados por pessoas talentosas como você. Portanto, nosso objetivo é continuar apoiando seus negócios para que eles atinjam um potencial ainda maior. Em nosso recente Google for Games Developer Summit, compartilhamos como as equipes do Google têm construído continuamente a próxima geração de serviços, ferramentas e recursos para ajudar você a criar e monetizar experiências de alta qualidade, mais programas adaptados às suas necessidades e mais recursos educacionais com práticas recomendadas.
</p>
<p>
Queremos ajudar você ao longo de todo o ciclo de vida do desenvolvimento de jogos, facilitando o desenvolvimento de jogos de alta qualidade e a oferta dessas ótimas experiências a cada vez mais pessoas e dispositivos.
</p>
<br>
<p>
<strong>Ficou mais fácil levar um jogo para mais telas <span style="text-decoration:underline;"><br></span></strong>Para ativar jogos para novos dispositivos e telas, queremos ajudar você a encontrar os jogadores onde eles estiverem, oferecendo a conveniência de jogar onde eles quiserem.
</p>
<ul>
<li>A execução de jogos em tablets, dobráveis e <a href="https://chromeos.dev/en/games">Chromebooks</a> está em alta e oferece a oportunidade de tornar os jogos mais envolventes e imersivos do que nunca. Em 2021, a utilização do Android no CrOS cresceu 50% em comparação com o ano anterior, um crescimento que foi liderado pelos jogos.
<li>O <a href="https://developer.android.com/games/playgames">Google Play Games for PC</a> Beta foi lançado em janeiro na Coreia do Sul, em Taiwan e em Hong Kong. Esse aplicativo autônomo para PCs com Windows criado pela Google permite que os usuários se beneficiem de um catálogo de alta qualidade de jogos do Google Play compatíveis com smartphones, tablets, Chromebooks ou (agora) PCs com o Windows. Saiba mais e comece hoje mesmo a otimizar os jogos para mais telas.
<li>O programa <a href="https://developer.android.com/games/distribute/play-as-you-download">Play as you download</a> Beta foi anunciado no ano passado e, em breve, será aberto a todos os usuários do Android 12. Com o PAYD, os usuários podem começar a jogar em questão de segundos, enquanto o download dos ativos do jogo é feito em segundo plano, tudo com o mínimo de mudanças para os desenvolvedores na implementação subjacente. Inscreva-se para a versão <a href="http://g.co/play/asyoudownload">Beta</a>.
</li>
</ul>
<br>
<p>
<strong>Ficou mais fácil desenvolver jogos de alta qualidade</strong>
</p>
<p>
Temos o compromisso de ajudar você a criar jogos Android de alta qualidade, dando foco contínuo a ferramentas e SDKs que simplifiquem o desenvolvimento e forneçam insights sobre jogos. Além disso, temos parcerias com mecanismos de jogos, incluindo mecanismos c/c++ nativos e proprietários. No ano passado, lançamos o Android Game Development Kit (AGDK), um conjunto de ferramentas e bibliotecas para ajudar a tornar o desenvolvimento de jogos Android mais eficiente, e fizemos várias atualizações com base no feedback dos desenvolvedores.
</p>
<ul>
<li>O <a href="https://developer.android.com/games/agde">Android Game Development Extension</a> permite que os desenvolvedores de jogos criem diretamente para o Android usando o Visual Studio. Para facilitar a depuração em Java e C, o AGDE agora incluirá a compatibilidade direta entre o Android Studio e o Visual Studio, para que você possa abrir e editar projetos do AGDE no depurador do Android Studio.
<li>A nova biblioteca <a href="https://developer.android.com/games/agdk">Memory Advice API</a> (Beta) adicionada ao AGDK ajuda os desenvolvedores a entender o consumo da memória ao combinar os melhores sinais para um determinado dispositivo a fim de determinar o quanto o dispositivo está próximo de ficar sem memória.
<li>Concluímos o lançamento do criador de perfil de frame do <a href="https://developer.android.com/agi">Android GPU Inspector</a> para ajudar você a entender se um gargalo do jogo está ocorrendo na GPU ou na CPU e para melhorar as taxas de frames e a duração da bateria.
</li>
</ul>
<br>
<p>
<strong>Mais ferramentas para ajudar você a ter sucesso no Google Play</strong>
</p>
<p>
O Play Console é um recurso inestimável para ajudar no ciclo de vida de um jogo, com ferramentas e insights de assistência pré e pós-lançamento.
</p>
<ul>
<li>Continuamos investindo em <a href="https://play.google.com/console/about/programs">programas</a> que ajudam os desenvolvedores de todos os portes a expandir seus negócios com o Google Play. Para nossos desenvolvedores maiores, lançamos o <a href="http://play.google.com/console/about/partnerprogram">Google Play Partner Program for Games</a>, que oferece ferramentas adicionais de crescimento e serviços de primeira linha adaptados às necessidades exclusivas dos desenvolvedores dessa escala.
<li><a href="https://play.google.com/console/about/reachanddevices/">Alcance e dispositivos</a> ajuda a tomar decisões fundamentais quanto a para quais dispositivos criar, onde lançar e o que testar, tanto antes quanto depois do lançamento. Ele já mostra as distribuições de instalações e problemas em uma série de atributos do dispositivo. Hoje, estamos lançando as distribuições de receita e crescimento de receita do Google Play para os seus jogos e os de seus pares, para que você possa criar casos de negócios com base em receita para fins de solução de problemas ou segmentação de dispositivos, se isso for mais adequado para seu modelo de negócios do que o uso de instalações.
<li>Recentemente, lançamos as <a href="https://support.google.com/googleplay/android-developer/answer/11452323">orientações estratégicas</a> no Console, que oferecem uma forma intuitiva de ajudar a avaliar a monetização de jogos e de encontrar oportunidades de aumento de receita. Você pode pensar no Alcance e dispositivos como uma ajuda para entender as oportunidades de receita de uma perspectiva técnica, e as orientações estratégicas fazem o mesmo da perspectiva comercial. Assim, você pode usar os dois juntos para ter uma imagem holística de seus geradores de receita de IAP.
<li>O <a href="https://play.google.com/console/about/vitals/">Android vitals</a> é o seu destino para monitorar e melhorar a estabilidade de jogos no Google Play. Para os desenvolvedores que têm jogos com presença global, acabamos de lançar os filtros e as divisões por país para as métricas do Vitals, para que seja mais fácil priorizar e solucionar problemas de estabilidade. Além disso, lançamos hoje a <a href="http://g.co/play/reportingapi">API Developer Reporting</a>, que fornece acesso programático às principais métricas e aos dados de problemas do Android vitals, inclusive taxas de ANR e falhas, clusters e stack traces.
</li>
</ul>
<p>
Saiba mais sobre tudo o que compartilhamos no <a href="https://g.co/gamedevsummit">Google for Games Developer Summit</a> e visite <a href="https://g.co/android/games">g.co/android/games</a> para ver recursos adicionais e documentação. Como sempre, temos o compromisso de apoiar o ecossistema de desenvolvedores e agradecemos seu contínuo feedback e investimento na criação de experiências de jogos de alta qualidade para jogadores de todo o mundo.
</p>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com3tag:blogger.com,1999:blog-466374421998394222.post-27810081044353648592022-04-06T15:07:00.000-03:002022-04-06T15:07:15.875-03:00Visualização do desenvolvedor 2 do Android 13<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>code { background-color: transparent }</style>
<h2></h2><meta name="twitter:image" content="https://blogger.googleusercontent.com/img/a/AVvXsEjJGui_bTjphFNLD-GOxic9fSMYmI7OQcoQKJBoadUPvJdp9r2YNYJDYWfNwsvK5A88UyaAaBM_iTrgOyNfZqjub_0MlGRghqsddYDnXH7OrUB8mBcqLtJq-6vSlN_g919S3-AQp2cEGqiZLcIuET3pafHnG8fsRno5gBgGtCQPv2hjhYaRsxE3Vwe-">
<img style="display:none" src="https://blogger.googleusercontent.com/img/a/AVvXsEjJGui_bTjphFNLD-GOxic9fSMYmI7OQcoQKJBoadUPvJdp9r2YNYJDYWfNwsvK5A88UyaAaBM_iTrgOyNfZqjub_0MlGRghqsddYDnXH7OrUB8mBcqLtJq-6vSlN_g919S3-AQp2cEGqiZLcIuET3pafHnG8fsRno5gBgGtCQPv2hjhYaRsxE3Vwe-">
<p><em>Postado por Dave Burke, vice-presidente de engenharia</em><p>
</p><p><img alt="Logotipo do Android13" height="300" src="https://blogger.googleusercontent.com/img/a/AVvXsEjnrShXcFkBmErmhgdmx82vJbaKBIxU6p2Yz2Vr1V7AlFkD2tGwRmx_a7tWcInPmiUh8VpPmEEqXut-EjP23lFYG9wiMO4sKBDEwbZ3MNppZOy_HW54OXO4SkdQVH08cWdi7QnTMMwGELFoPq_r7_cyaGU8fx2InJG2R-NfkqF1IRt7rKOfA8M1GhUy" style="float: right; margin-bottom: 0.3px; margin-right: 10px;" width="300px" /></p>
<p>
No mês passado, <a href="https://android-developers.googleblog.com/2022/02/first-preview-android-13.html">lançamos</a> a primeira Visualização do desenvolvedor do Android 13, desenvolvida com base nos temas centrais de privacidade e segurança, produtividade do desenvolvedor e suporte a tablets e telas grandes. Hoje, estamos compartilhando a Visualização do desenvolvedor 2 do Android 13, que traz mais recursos novos e mudanças que você pode experimentar em apps. Seu feedback nos ajuda a fazer do Android uma plataforma melhor para desenvolvedores e usuários. Por isso, queremos saber a sua opinião.
</p>
<p>
O lançamento de hoje também acontece logo depois da inclusão da atualização com recursos 12L no Android Open Source Project (AOSP), ocorrida na semana passada, que ajuda você a aproveitar melhor os mais de 250 milhões de dispositivos Android de tela grande. Para saber tudo sobre o Android 13, tablets e também nossos investimentos em produtividade do desenvolvedor feitos no Jetpack Compose, confira o mais recente episódio do #TheAndroidShow.
</p>
<center><iframe width="100%" height="340" src="https://www.youtube.com/embed/WL9h46CymlU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center>
<br>
<h2>Atualização com recursos 12L, agora no AOSP</h2>
<p>
Antes de falarmos sobre a Visualização do desenvolvedor 2, vamos dar uma olhada nas outras notícias da semana passada: lançamos oficialmente a atualização com recursos 12L no AOSP, e ela será lançada em todos os dispositivos Pixel com suporte nas próximas semanas. O 12L torna o Android 12 ainda melhor nos tablets e inclui atualizações, como uma nova barra de tarefas que permite aos usuários arrastar e soltar apps instantaneamente no modo de tela dividida, novos layouts de tela grande na aba de notificações e na tela de bloqueio e modos de compatibilidade aprimorados para apps. Você pode <a href="https://blog.google/products/android/12l-larger-screens/">saber mais aqui</a>.
</p>
<p>
Ainda este ano, o 12L passará a ser disponibilizado em atualizações planejadas para tablets e dispositivos dobráveis das marcas Samsung, Lenovo e Microsoft. Então, este é o momento para garantir que os apps estejam preparados para isso. Recomendamos testar os apps no modo de tela dividida com janelas de vários tamanhos e em diferentes orientações e verificar as novas mudanças do modo de compatibilidade, caso elas se apliquem. Saiba mais sobre o 12L para desenvolvedores <a href="https://developer.android.com/about/versions/12/12L">aqui</a>.
</p>
<p>
E o melhor de tudo: os recursos para tela grande do 12L fazem parte da base do Android 13, então você pode desenvolver e testar no Android 13 com a certeza de estar coberto também quanto a tablets com o Android 12L. Vemos as telas grandes como uma superfície essencial no futuro do Android, e continuamos investindo para fornecer a você as ferramentas necessárias para criar ótimas experiências para tablets, Chromebooks e dispositivos dobráveis. Saiba mais sobre como <a href="https://developer.android.com/guide/topics/large-screens/get-started-with-large-screens">começar a otimizar para telas grandes</a>. E não deixe de conferir nossos <a href="https://developer.android.com/large-screens">recursos de telas grandes para desenvolvedores</a>.
</p>
<p>
Vejamos agora as novidades de hoje da Visualização do desenvolvedor 2 do Android 13.
</p>
<br>
<h2>Privacidade e confiança do usuário</h2>
<p>
As pessoas querem um SO e apps aos quais elas possam confiar suas informações mais pessoais e confidenciais e também os recursos de seus dispositivos. A privacidade e a confiança do usuário são fundamentais nos princípios de produto do Android, e o foco do Android 13 continua sendo oferecer a todos uma plataforma responsável e de alta qualidade ao fornecer um ambiente mais seguro no dispositivo e mais controles para o usuário. Estas são as novidades da Visualização do desenvolvedor 2.
</p>
<p>
<strong>Permissão de notificação - </strong>Para ajudar os usuários a se concentrarem nas notificações mais importantes, o Android 13 introduz uma nova <a href="https://developer.android.com/guide/topics/permissions/overview#runtime">permissão em tempo de execução</a> para o envio de notificações de um app: <a href="https://developer.android.com/reference/android/Manifest.permission#POST_NOTIFICATIONS">POST_NOTIFICATIONS</a>. Os apps segmentados para o Android 13 agora precisam solicitar a permissão de notificação do usuário antes de postar notificações. Para os apps segmentados para o Android 12 ou anterior, o sistema lidará com o fluxo de upgrade para você. O fluxo continuará sendo ajustado. Para oferecer mais contexto e controle a seus usuários, encorajamos você a segmentar para o Android 13 assim que possível e solicitar a permissão de notificação no app. <a href="https://developer.android.com/about/versions/13/changes/notification-permission">Saiba mais aqui</a>.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEjLOE8RpYlmNXEYn0eG2j1vFXEuwy68CYcu87f3qAvQQMwb6sIVf6v-bZF3x_wYBWkxAnIIQTziMM8u_28JBAEt8mI3Qw__D4C3PHrR-hpaGgHOQVyDLMKzkXOtdsS-HkhCqt0IIsdgJR6lGQdBRriavpqiiZzf553Cm8spxGXBJ69a3-8i35h3hgHz" imageanchor="1"><img style="width:50%" alt="Caixa de diálogo de permissão de notificação no Android 13." id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/a/AVvXsEjLOE8RpYlmNXEYn0eG2j1vFXEuwy68CYcu87f3qAvQQMwb6sIVf6v-bZF3x_wYBWkxAnIIQTziMM8u_28JBAEt8mI3Qw__D4C3PHrR-hpaGgHOQVyDLMKzkXOtdsS-HkhCqt0IIsdgJR6lGQdBRriavpqiiZzf553Cm8spxGXBJ69a3-8i35h3hgHz" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption" style="padding-top:.5em">Caixa de diálogo de permissão de notificação no Android 13.</p></center>
<p>
<strong>Downgrade de permissões para desenvolvedores</strong> <strong>-</strong> Alguns apps podem não precisar mais de determinadas permissões, que antes eram dadas pelo usuário para ativar um recurso específico, nem de manter uma permissão confidencial de uma versão mais antiga do Android. No Android 13, fornecemos uma <a href="https://developer.android.com/reference/android/content/Context.html#revokeOwnPermissionsOnKill(java.util.Collection%3Cjava.lang.String%3E)">nova API</a> para que os apps protejam a privacidade dos usuários ao fazer o downgrade de permissões em tempo de execução concedidas anteriormente.
</p>
<p>
<strong>Exportação mais segura de receptores registrados em contexto -</strong> No Android 12, exigíamos que os desenvolvedores declarassem a capacidade de exportação de receptores de Intent declarados em manifesto. No Android 13, pedimos que seja feito o mesmo para os receptores registrados em contexto, por meio da adição da sinalização <a href="https://developer.android.com/reference/android/content/Context.html#RECEIVER_EXPORTED">RECEIVER_EXPORTED</a> ou <a href="https://developer.android.com/reference/android/content/Context.html#RECEIVER_NOT_EXPORTED">RECEIVER_NOT_EXPORTED</a><strong> </strong>ao registrar receptores para origens que não sejam do sistema. Isso ajuda a garantir que os receptores não fiquem disponíveis para receber transmissões de outros aplicativos, a menos que isso seja intencional. Embora isso não seja obrigatório no Android 13, recomendamos declarar a capacidade de exportação como mais um passo para a proteção dos apps.
</p>
<br>
<h2>Produtividade do desenvolvedor </h2>
<p>
No Android 13, estamos trabalhando para oferecer mais ferramentas para ajudar você a proporcionar uma experiência refinada e um desempenho melhor para os usuários. Estas são algumas das atualizações do lançamento de hoje.
</p>
<p>
<strong>Melhoria na disposição do texto para o japonês</strong> <strong>-</strong> TextViews agora podem fazer a disposição do texto por bunsetsu (a menor unidade de palavra com sonoridade natural) ou por frases, em vez de por caractere, para oferecer apps mais refinados e legíveis em japonês. Você pode se beneficiar dessa disposição de texto usando <code><a href="https://developer.android.com/reference/android/R.attr.html#lineBreakWordStyle">android:lineBreakWordStyle="phrase"</a></code> com TextViews.
<center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEhy5QNh2sRBFZosxHZwW2SwJJo0L4e3uqxthcWEbkdJwFob9MSmPZtgMmXwnuceN8PpzZDbLMex_G4f6sArByopcRDzPp56x9E_u0waus4oQraw_DppBsDZ90MN14Evml8uJ_diNRlpkc-HYyvwOrxOKvNAvG3C2abrqKcZOkUhOznDv-A-_VSOi93U" imageanchor="1"><img style="width:50%" alt="Disposição de texto em japonês com o estilo de frase ativado (inferior) e desativado (superior) " id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/a/AVvXsEhy5QNh2sRBFZosxHZwW2SwJJo0L4e3uqxthcWEbkdJwFob9MSmPZtgMmXwnuceN8PpzZDbLMex_G4f6sArByopcRDzPp56x9E_u0waus4oQraw_DppBsDZ90MN14Evml8uJ_diNRlpkc-HYyvwOrxOKvNAvG3C2abrqKcZOkUhOznDv-A-_VSOi93U" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption" style="padding-top:.5em">Disposição de texto em japonês com o estilo de frase ativado (inferior) e desativado (superior).</p></center>
<p>
<strong>Melhoria nas alturas de linha para fontes não latinas - </strong>O Android 13 melhora a exibição de fontes não latinas (como tâmil, birmanês, telugo e tibetano) usando uma altura de linha adaptada para cada idioma. As novas alturas de linha evitam cortes e melhoram o posicionamento dos caracteres. Os apps podem aproveitar essas melhorias apenas fazendo a segmentação para o Android 13. Não deixe de testar os apps ao usar o novo espaçamento de linha, pois as mudanças podem afetar a IU nos idiomas não latinos.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEh0aE89M14Z2StOrJWdclOirjCBiP6S4FYApVVcXD4g8eVBncoG1MxbUNEJbk5O2cVNvj5Q1g1gxoiB0zXvFYMZF8QtOR8NKqGwchB_vzNolE8a-eK0mmo2SxAos_TBr0EDV9xysvktNz5Z7WfxQEVVJO2bfJefAnfboTqgwCRqKdhT0X1s-05OZ_kg" imageanchor="1"><img style="width:75%" alt="SDK segmentado para Android 12 e 13" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/a/AVvXsEh0aE89M14Z2StOrJWdclOirjCBiP6S4FYApVVcXD4g8eVBncoG1MxbUNEJbk5O2cVNvj5Q1g1gxoiB0zXvFYMZF8QtOR8NKqGwchB_vzNolE8a-eK0mmo2SxAos_TBr0EDV9xysvktNz5Z7WfxQEVVJO2bfJefAnfboTqgwCRqKdhT0X1s-05OZ_kg" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Melhoria na altura de linha para fontes não latinas em apps segmentados para o Android 13 (inferior).</p></center>
<p>
<strong>APIs de conversão de texto - </strong>As pessoas que falam idiomas como o japonês e o chinês usam métodos de entrada fonéticos, que costumam desacelerar as pesquisas e os recursos como o preenchimento automático. No Android 13, os apps podem chamar a nova <a href="https://developer.android.com/reference/android/view/inputmethod/TextAttribute">API de conversão de texto</a> para que os usuários possam encontrar o que precisam de forma mais fácil e rápida. Antes, por exemplo, para fazer pesquisas, um usuário japonês tinha que (1) digitar em hiragana como a pronúncia fonética do termo de pesquisa (ou seja, um nome de lugar ou de app), (2) usar o teclado para converter os caracteres em hiragana para kanji e (3) refazer a pesquisa usando os caracteres em kanji para (4) obter os resultados de pesquisa. Com a nova API de conversão de texto, os usuários japoneses podem digitar em hiragana e ver imediatamente os resultados de pesquisa em kanji, pulando as etapas 2 e 3.
</p>
<p>
<strong>Fontes vetoriais coloridas</strong> <strong>-</strong> O Android 13 adiciona o suporte à renderização para fontes COLR versão 1 (<a href="https://docs.microsoft.com/en-us/typography/opentype/spec/colr">especificação</a>, <a href="https://www.youtube.com/watch?v=BmqYm5Wwz8M">vídeo de introdução</a>) e atualiza o emoji do sistema para o formato COLRv1. COLRv1 é um novo formato de fonte altamente compacto, que é renderizado de forma rápida e precisa em qualquer tamanho. Isso funcionará perfeitamente na maioria dos apps. O sistema faz tudo sozinho. Você poderá ativar o COLRv1 para os apps a partir da Visualização do desenvolvedor 2. Se o app implementar sua própria renderização de texto e usar as fontes do sistema, recomendamos ativar e testar a renderização de emojis. Saiba mais sobre o COLRv1 no <a href="https://developer.chrome.com/blog/colrv1-fonts/">anúncio</a> do Chrome.
</p>
<center> <a href="https://1.bp.blogspot.com/-WkND9PBl4Vs/YjEnR3h6Q9I/AAAAAAAAMLw/LrktwLQrLpQQ7qFYae8MPSb1xmx2wYpngCNcBGAsYHQ/s2433/android_emoji_colrv1_vs_cbdt.png" imageanchor="1"><img style="width:75%" alt="Emoji vetorial COLRv1 (esquerda) e emoji de bitmap" id="imgFull" border="0" src=" https://blogger.googleusercontent.com/img/a/AVvXsEjKn7O99rvCA3rxI0G7IxpceEHc4TtP5l9Zlp3YEJ8t0cu8ckursykuSPAaAkoCfCqCvxyt7hsFZomhaw5lxSpE1AaLUN--6o28YIAB0mCcb70Ntb5ss2aTRloSp5KE2EGT_ci5_g0vcDx7s_6CHovfcicWYqrvaHwNOI1jLnFKUBHmnp65A9u4bfS2" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Emoji vetorial COLRv1 (esquerda) e emoji de bitmap.</p></center>
<p>
<strong>Áudio Bluetooth de baixa energia</strong> <strong>-</strong> O áudio Bluetooth de baixa energia (LE) é a próxima geração de áudio sem fio, criado para substituir o Bluetooth clássico e permitir novos casos de uso e topologias de conexão. Com ele, os usuários poderão compartilhar e transmitir áudio para amigos e familiares ou assinar transmissões públicas de informações, entretenimento ou acessibilidade. Ele foi projetado para garantir que os usuários possam receber áudio de alta fidelidade sem sacrificar a duração da bateria e também alternar facilmente entre os diferentes casos de uso que não eram possíveis com o Bluetooth clássico. O Android 13 adiciona suporte integrado ao áudio LE. Portanto, os desenvolvedores deverão ter os novos recursos gratuitamente nos dispositivos compatíveis.
</p>
<p>
<strong>MIDI 2.0</strong> <strong>-</strong> O Android 13 adiciona o suporte ao novo padrão MIDI 2.0, incluindo a capacidade de conectar hardware MIDI 2.0 via USB. Esse padrão atualizado oferece recursos como resolução mais alta para controladores, suporte melhor para entonação não ocidental e desempenho mais expressivo usando controladores por tom.
</p>
<br>
<h2>Compatibilidade de apps</h2>
<p>
Em cada versão da plataforma, trabalhamos para agilizar e simplificar as atualizações priorizando a compatibilidade de apps à medida que lançamos novas versões. No Android 13, as mudanças voltadas para os apps são ativáveis, para que você tenha mais tempo, e nossos processos e ferramentas foram atualizados para ajudar você a se preparar mais rapidamente.
</p>
<p>
Com a Visualização do desenvolvedor 2, nos aproximamos do lançamento e continuamos a melhorar a estabilidade geral. Portanto, este é o momento de experimentar os novos recursos e as mudanças e nos enviar seu feedback. Queremos saber, especialmente, a sua opinião sobre nossas APIs, bem como detalhes de como as <a href="https://developer.android.com/about/versions/13/behavior-changes-all">mudanças de plataforma</a> afetam seus apps. Visite a <a href="https://developer.android.com/about/versions/13/feedback">página de feedback</a> para compartilhar suas opiniões conosco ou relatar problemas.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEggAhStDFoaZTtKNZGNKCJgQEk697EnlPCL154B0r6SsG8E5dmxHoV_eyYux1bDy_05l3HPkZTRwwjiY9V-yr1_CYfGF70uUermzCitmS0EiGgTSogPgD8gxNvtk0xCQulCPyVS1gpDhh2pgiskUeG6myYmSqD1RW-oBmhbQRqQa1sQwBmOvVuBMXdf" imageanchor="1"><img style="width:100%" alt="cronograma" id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/a/AVvXsEggAhStDFoaZTtKNZGNKCJgQEk697EnlPCL154B0r6SsG8E5dmxHoV_eyYux1bDy_05l3HPkZTRwwjiY9V-yr1_CYfGF70uUermzCitmS0EiGgTSogPgD8gxNvtk0xCQulCPyVS1gpDhh2pgiskUeG6myYmSqD1RW-oBmhbQRqQa1sQwBmOvVuBMXdf" data-original-width="1058" data-original-height="714" /></a> </center>
<p>
Este também é um bom momento para começar os <a href="https://developer.android.com/about/versions/13/migration">testes de compatibilidade</a> e para identificar o trabalho que será necessário. Recomendamos agir de forma antecipada para que você possa lançar uma atualização compatível com o Android 13 Beta 1. Não há necessidade de alterar o targetSdkVersion do app ainda, mas recomendamos usar os <a href="https://developer.android.com/about/versions/13/reference/compat-framework-changes">botões de alternância de mudanças de comportamento</a> nas opções do desenvolvedor para ter uma ideia inicial de como um app pode ser afetado pela ativação de mudanças no Android 13.
</p>
<p>
Quando atingirmos a <a href="https://developer.android.com/about/versions/13/overview#platform_stability">estabilidade da plataforma</a> em junho de 2022, todos os comportamentos do sistema voltados para os apps, as APIs SDK/NDK e as listas não SDK estarão finalizados. Nesse ponto, você poderá concluir os testes de compatibilidade finais e lançar uma versão totalmente compatível do app, SDK ou biblioteca. <a href="https://developer.android.com/about/versions/13/overview">Saiba mais</a> sobre o cronograma para desenvolvedores.
</p>
<center> <a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAr3nwRvWQr92AOXXJc-tZuNV-89uWUbwh86gWCBjJhexeeznHAdFFwS_WPKHozEcKfslG8yfuFIuqH7OzN50-RvX99vF9kekx6FtPjVXcAmy2Yb98XG5m218a9t7-M512jnJn5fXllRnz9KDum1dEeU6sa5WLU54Pky7yYxWg3Pz9Jmlc5gEcl0cB" imageanchor="1"><img style="width:50%" alt="Botões de alternância de compatibilidade de apps nas opções do desenvolvedor." id="imgFull" border="0" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAr3nwRvWQr92AOXXJc-tZuNV-89uWUbwh86gWCBjJhexeeznHAdFFwS_WPKHozEcKfslG8yfuFIuqH7OzN50-RvX99vF9kekx6FtPjVXcAmy2Yb98XG5m218a9t7-M512jnJn5fXllRnz9KDum1dEeU6sa5WLU54Pky7yYxWg3Pz9Jmlc5gEcl0cB" data-original-width="1058" data-original-height="714" /></a><p id="imgCaption">Botões de alternância de compatibilidade de apps nas opções do desenvolvedor.</p></center>
<br>
<h2>Primeiros passos com o Android 13</h2>
<p>
A prévia para desenvolvedores tem tudo o que você precisa para experimentar os recursos do Android 13, testar apps e nos enviar <a href="https://developer.android.com/about/versions/13/feedback">feedback</a>. Comece hoje mesmo a testar <a href="https://developer.android.com/about/versions/13/download">atualizando uma imagem do sistema</a> para um dispositivo <strong>Pixel 6 Pro, Pixel 6, Pixel 5a 5G, Pixel 5, Pixel 4a (5G), Pixel 4a, Pixel 4 XL ou Pixel 4</strong>. Se você não tiver um dispositivo Pixel, poderá usar as imagens do sistema de 64 bits com o Android Emulator no Android Studio Dolphin. Para testes ainda mais abrangentes, há imagens GSI disponíveis. Caso já tenha instalado um build de pré-lançamento em seu dispositivo Pixel, você receberá automaticamente esta atualização e todos os futuros pré-lançamentos e versões Beta via OTA. Veja mais detalhes sobre como obter o Android 13 <a href="https://developer.android.com/about/versions/13/get">aqui</a>.
</p>
<p>
Para acessar todas as informações, <a href="https://developer.android.com/about/versions/13">visite o site para desenvolvedores Android 13</a>.
</p>DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com0tag:blogger.com,1999:blog-466374421998394222.post-57850022833718711972022-03-24T09:36:00.000-03:002022-03-24T09:36:57.738-03:00Play com Jetpack Compose<style>
b {
font-weight: bold !important;
}
</style>
<header>
<h2>Conheça a estratégia da Google Play Store para a adoção do Jetpack Compose e saiba como desafios específicos de desempenho foram superados e como a produtividade e a satisfação dos desenvolvedores aumentaram.</h2>
<p><em>Postado por Andrew Flynn e Jon Boekenoogen, líderes técnicos do Google Play</em></p>
</header>
<p>
Em 2020, a liderança de engenharia da Google Play Store tomou a importante decisão de reformular todo o conjunto de tecnologias de sua vitrine. O código existente tinha mais de dez anos de idade e estava muito ultrapassado, tecnicamente, em relação às inúmeras versões e atualizações de recursos da Plataforma Android. Precisávamos de novos frameworks que pudessem ser escalonados para as <b>centenas de engenheiros</b> que trabalham no produto sem impactar negativamente a <b>produtividade dos desenvolvedores, a experiência do usuário ou o desempenho</b> da loja em si.
</p>
<p>
Elaboramos um roteiro para vários anos para a atualização de todos os componentes da loja, desde a camada de rede até a renderização de pixels. Como parte disso, também queríamos adotar um framework de IU moderno e declarativo que atendesse às nossas metas de produto relacionadas à interatividade e ao encantamento dos usuários. Após analisar todo o leque de opções, tomamos a corajosa decisão (naquele momento) de escolher o <a href="https://developer.android.com/jetpack/compose" target="_blank">Jetpack Compose</a>, que ainda estava em pré-Alfa.
</p>
<p>
A partir daí, as equipes da Google Play Store e do Jetpack Compose no Google trabalharam em total coordenação para lançar e refinar uma versão do Jetpack Compose que atendesse às nossas necessidades específicas. Neste artigo, falaremos sobre nossa abordagem à migração e também sobre os desafios e benefícios encontrados ao longo do caminho, a fim de compartilhar alguns insights sobre como poderá ser a adoção do Compose para um app com muitos colaboradores.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR2EwbIGdQ9OBbkAeh1q5nStXUmqpMEaCjaCwMbmRsiOGglNClTRt4kYxQwyo0xS1Pm_bBjwwTsY5i-w7Zz_HPaIc3m5vNvUJf9qHtTFNP_HwcWvq4ZW8nAgUnp0OAFfDFhW_fTuXgQNKVqGeSrju5M60YYHRjGbgDBcN5HRuKj39NuiCCMcnai5ZQiw/s1600/image3.gif" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjR2EwbIGdQ9OBbkAeh1q5nStXUmqpMEaCjaCwMbmRsiOGglNClTRt4kYxQwyo0xS1Pm_bBjwwTsY5i-w7Zz_HPaIc3m5vNvUJf9qHtTFNP_HwcWvq4ZW8nAgUnp0OAFfDFhW_fTuXgQNKVqGeSrju5M60YYHRjGbgDBcN5HRuKj39NuiCCMcnai5ZQiw/s600/image3.gif" width="600" /></a></div>
<h3>Considerações</h3>
<p>Ao considerarmos o Jetpack Compose para nossa nova camada de renderização de IU, nossas duas maiores prioridades eram:</p>
<ol>
<li><b>Produtividade do desenvolvedor:</b> a equipe da Play Store tem centenas de engenheiros que contribuem com o código, então deve ser fácil (e divertido) desenvolver em conjunto.</li>
<li><b>Desempenho:</b> a Play Store renderiza muito conteúdo com um grande volume de mídia e muitas métricas de negócios que são bastante sensíveis à latência e à instabilidade, por isso, precisávamos garantir que o desempenho fosse bom em <b>todos</b> os dispositivos, principalmente no caso de hardware com pouca memória e dispositivos Android (edição Go).</li>
</ol>
<br />
<br />
<h3>Produtividade do desenvolvedor</h3>
<p>Já estamos escrevendo código de IU com o Jetpack Compose há <b>mais de um ano</b> e gostamos de como o Jetpack Compose simplifica o desenvolvimento de IUs.</p>
<p>
Adoramos o fato de a <b>escrita de IU exigir muito menos código, às vezes até 50% menos</b>. Isso ocorre porque o Compose é um framework de IU declarativo que aproveita a precisão do Kotlin. O desenho e os layouts personalizados agora são chamadas de função simples, em vez de subclasses View com N substituições de métodos.</p>
<p>Vejamos, por exemplo, a tabela de avaliações:</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh65jBHETRxa1rkwlEx8TrfdOFthoIxuLR12LkJhWK83S0KmeT_nhVfaOKl2T_Wke9EfWNQVsg7k4JzG_feF9w1wncLe91ybPIU69cyPUPJFv-J79RNMB4W7Pgdmhwk2F8_qcHMDqd_d6QL8s1rArPa4-1CB1eLOcFXz3F5ZlQCarrKbfTsXwRY1_82DA/s618/image4.png" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="189" data-original-width="618" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh65jBHETRxa1rkwlEx8TrfdOFthoIxuLR12LkJhWK83S0KmeT_nhVfaOKl2T_Wke9EfWNQVsg7k4JzG_feF9w1wncLe91ybPIU69cyPUPJFv-J79RNMB4W7Pgdmhwk2F8_qcHMDqd_d6QL8s1rArPa4-1CB1eLOcFXz3F5ZlQCarrKbfTsXwRY1_82DA/s400/image4.png" width="400" /></a></div>
<h4>Com Views, essa tabela consiste em:</h4>
<ul>
<li>3 classes View no total, sendo que 2 delas exigem desenho personalizado para os retângulos arredondados e as estrelas</li>
<li>Aproximadamente 350 linhas de Java, 55 linhas de XML</li>
</ul>
<h4>Com o Compose, essa tabela consiste em:</h4>
<ul>
<li>Todas as funções @Composable contidas no mesmo arquivo e linguagem</li>
<li>Aproximadamente 210 linhas de Kotlin</li>
</ul>
<br /><br />
<p>As <b>animações</b> são um <a href="https://www.youtube.com/watch?v=Z_T1bVjhMLk" target="_blank">ótimo recurso do Compose</a> por sua simplicidade e expressividade. Com o Compose, nossa equipe está criando recursos de movimento que encantam de forma inédita os usuários da Play Store. Com a natureza declarativa e as APIs de animação do Compose, <b>nunca foi tão simples escrever animações sequenciais ou paralelas</b>. Nossa equipe não teme mais todos os casos isolados de animações relativos a cancelamentos e encadeamentos de callback. <a href="https://airbnb.io/projects/lottie-android/" target="_blank">Lottie</a>, uma biblioteca de animação popular, já fornece APIs do Compose com as quais é muito simples trabalhar.</p>
<p>
Você deve estar pensando: tudo isso parece ótimo, mas e quanto às dependências de bibliotecas que fornecem Views? É verdade: nem todos os proprietários de bibliotecas implementaram as APIs baseadas no Compose, principalmente no início da migração. Mas o Compose oferece <b>interoperabilidade simples com Views</b> por meio de suas APIs ComposeView e AndroidView. Fizemos uma integração bem-sucedida com bibliotecas populares, como <a href="https://exoplayer.dev/" target="_blank">ExoPlayer</a> e <a href="https://developers.google.com/youtube/android/player" target="_blank">YouTube’s Player</a>, dessa maneira.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiea_ybWIG2XwZ18Ir610MRPN9WPMZJPBvDc7zdPqDpN8rBcR-phY-pfFOqAyi33PkoJOKXw6PpvHenV4C7DBixPLIkFrGXE5dgdxfvLNPbR3Ep7bydaJCa1keqSUHt3hlLDMnO1SeQNjK8QjALstw7F9E0OGMzKBnTlG_kUotmWf9zbLMqKoVmFFW33Q/s1600/image5.jpg" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiea_ybWIG2XwZ18Ir610MRPN9WPMZJPBvDc7zdPqDpN8rBcR-phY-pfFOqAyi33PkoJOKXw6PpvHenV4C7DBixPLIkFrGXE5dgdxfvLNPbR3Ep7bydaJCa1keqSUHt3hlLDMnO1SeQNjK8QjALstw7F9E0OGMzKBnTlG_kUotmWf9zbLMqKoVmFFW33Q/s400/image5.jpg" width="400" /></a></div>
<h3>Desempenho</h3>
<p>
As equipes da Play Store e do Jetpack Compose trabalharam em total colaboração para garantir que a execução do Compose fosse tão rápida e livre de instabilidades quanto o framework de Views. Devido à forma como o Compose é empacotado no app (em vez de ser incluído como parte do framework do Android), essa era uma missão ambiciosa. A renderização de componentes individuais da IU na tela era rápida, mas o tempo total de carregamento de todo o framework do Compose na memória para apps era alto.
</p>
<p>
Uma das maiores melhorias de desempenho da adoção do Compose para a Play Store foi resultado do desenvolvimento de <b>perfis de referência<a href="https://developer.android.com/studio/profile/baselineprofiles" target="_blank"></a></b>. Embora os <a href="https://android-developers.googleblog.com/2019/04/improving-app-performance-with-art.html" target="_blank">perfis de nuvem</a> ajudem a reduzir o tempo de inicialização do app e já estejam disponíveis há algum tempo, eles só se destinam à API 28 ou mais e não são tão eficazes para apps com atualizações de versões frequentes (semanais). Para combater isso, as equipes da Play Store e do Android trabalharam juntas em perfis de referência: um perfil empacotado e definido pelo desenvolvedor que pode ser especificado pelos proprietários de apps. Esses perfis são fornecidos com o app, são totalmente compatíveis com os perfis de nuvem e podem ser definidos no nível de especificidade do app e no nível de biblioteca (os adotantes do Compose terão isso gratuitamente). Com o lançamento dos perfis de referência, a Play Store teve uma <b>redução do tempo de renderização inicial</b> de sua página de resultados de pesquisa <b>de 40%</b>. Isso é incrível!
</p>
<p>
A <b>reutilização de componentes de IU</b> é uma <a href="https://developer.android.com/jetpack/compose/lifecycle" target="_blank">mecânica básica</a> do desempenho do Compose para renderização, particularmente em situações de rolagem. O Compose faz de tudo para ignorar as recomposições que ele sabe que podem ser ignoradas (por exemplo, porque são imutáveis). Mas os desenvolvedores também podem forçar o tratamento das composições como ignoráveis se todos os parâmetros atenderem aos requisitos de anotação de <a href="https://developer.android.com/reference/kotlin/androidx/compose/runtime/Stable" target="_blank">@Stable</a>. O compilador do Compose também fornece um <a href="https://github.com/androidx/androidx/blob/androidx-main/compose/compiler/design/compiler-metrics.md" target="_blank">guia prático</a> sobre o que está impedindo que funções específicas sejam ignoradas. Durante a criação de componentes de IU altamente reutilizados na Play Store e que eram usados com frequência em situações de rolagem, descobrimos que as recomposições desnecessárias estavam aumentando os tempos para a renderização de frames perdidos e, consequentemente, a instabilidade. Criamos um <a href="https://github.com/android/snippets/blob/master/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/RecomposeHighlighter.kt" target="_blank">Modifier</a> para identificar facilmente essas recomposições também em nossas configurações de depuração. Ao aplicar essas técnicas a nossos componentes de IU, <b>conseguimos reduzir a instabilidade em 10% a 15%</b>.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPd8n4jlHxc5_dpub8nVR_3JyV5bcjqGDkHHofhE-AtnDYyhI3_A-E8neKtpARhZpynVcIoKAt76gj8RWRv5IsDLV89em9NI6i9UedQx-lwdnyitTeeeVno17Bwa8DMNMu0cenIanCmLoDLeB_670zzQ0fVw4vYNYycAMJTS62oHbLF8_mDu-zlaiqCg/s529/image2.gif" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="433" data-original-width="529" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPd8n4jlHxc5_dpub8nVR_3JyV5bcjqGDkHHofhE-AtnDYyhI3_A-E8neKtpARhZpynVcIoKAt76gj8RWRv5IsDLV89em9NI6i9UedQx-lwdnyitTeeeVno17Bwa8DMNMu0cenIanCmLoDLeB_670zzQ0fVw4vYNYycAMJTS62oHbLF8_mDu-zlaiqCg/s600/image2.gif" width="600" /></a></div>
<center>Modificador de visualização de recomposição em ação. Azul (sem recomposições), verde (uma recomposição).</center>
<p>
Outro componente-chave da otimização do Compose para o app da Play Store era ter uma <b>estratégia detalhada de migração completa para todo o app</b>. Durante os primeiros experimentos de migração, tivemos um problema com duas pilhas: a execução do Compose e da renderização de Views em uma única sessão do usuário consumia memória demais, principalmente nos dispositivos mais simples. Isso causava cortes durante as implementações do código na mesma página, mas também quando duas páginas diferentes (por exemplo, a página inicial e a página de resultados de pesquisa da Play Store) estavam em pilhas diferentes. Para atenuar essa latência de inicialização, era importante para nós ter um plano concreto para a <b>ordem e a linha do tempo das páginas migradas para o Compose</b>. Além disso, vimos que era útil adicionar o preaquecimento de curto prazo das classes comuns como temporárias até que o app estivesse totalmente migrado.
</p>
<p>
O desempacotamento do Compose do framework do Android reduziu a sobrecarga para a equipe que estava contribuindo diretamente com o Jetpack Compose, resultando em prazos de entrega mais curtos de melhorias que beneficiam todos os desenvolvedores. Conseguimos colaborar com a equipe do Jetpack Compose e lançar recursos como o <a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1789196/" target="_blank">armazenamento em cache de tipos de item LazyList</a>, além de acelerar correções mais leves, como as <a href="https://android-review.googlesource.com/c/platform/frameworks/support/+/1950996/" target="_blank">alocações de objetos adicionais</a>.
</p>
<div class="separator" style="clear: both;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrdBhYcw8x-2QT30X3KGstB50ip2jbauQ9VneMZFTDRzdh3Y9WTjMzD88S81kdDqt5rd-MVN918ESN1l6tj6d6hnIL9rm5sN6jZFQJwvZyFl_T7YSaaQRbl6ZUc0nmwrwQDU_yEc4zG-__37Fhs0Jitczaxu_TxkBrHYnjuJzaNzhSHJ4sqT5IsQxo5w/s1600/image1.jpg" style="display: block; padding: 1em 0px; text-align: center;"><img alt="" border="0" data-original-height="900" data-original-width="1600" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrdBhYcw8x-2QT30X3KGstB50ip2jbauQ9VneMZFTDRzdh3Y9WTjMzD88S81kdDqt5rd-MVN918ESN1l6tj6d6hnIL9rm5sN6jZFQJwvZyFl_T7YSaaQRbl6ZUc0nmwrwQDU_yEc4zG-__37Fhs0Jitczaxu_TxkBrHYnjuJzaNzhSHJ4sqT5IsQxo5w/s400/image1.jpg" width="400" /></a></div>
<h3>O futuro</h3>
<p>A adoção do Compose na Play Store foi uma bênção para os desenvolvedores de nossa equipe, e <b>um grande avanço em qualidade e integridade de código</b>. Todos os novos recursos da Play Store são criados com base nesse framework, e o Compose foi fundamental para desbloquear <b>o aumento da velocidade e as transições mais suaves para os apps</b>. Devido à natureza de nossa estratégia de migração para o Compose, não tivemos a chance de medir tão atentamente fatores como as mudanças no <a href="https://developer.android.com/jetpack/compose/ergonomics#apk-and-build" target="_blank">tamanho do APK</a> ou na velocidade de compilação, mas tudo indica resultados bastante positivos! O <a href="https://developer.android.com/jetpack/compose" target="_blank">Compose</a> é o futuro do desenvolvimento de IUs do Android e, a julgar pela Play Store, não poderíamos estar mais satisfeitos!</p>
DevRel Brasilhttp://www.blogger.com/profile/13069947382672750743noreply@blogger.com0