{"id":74473,"date":"2020-09-11T21:33:10","date_gmt":"2020-09-11T21:33:10","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=74473"},"modified":"2020-09-11T21:33:10","modified_gmt":"2020-09-11T21:33:10","slug":"kotlin-multiplatform-mobile-entra-em-versao-alpha","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/pt-br\/kotlin\/2020\/09\/kotlin-multiplatform-mobile-entra-em-versao-alpha\/","title":{"rendered":"Kotlin Multiplatform Mobile entra em vers\u00e3o Alpha"},"content":{"rendered":"<p>O Kotlin Multiplatform Mobile (KMM) \u00e9 um SDK que permite usar o mesmo c\u00f3digo de l\u00f3gica de neg\u00f3cios em aplica\u00e7\u00f5es para iOS e Android. Hoje, o KMM entra em Alpha, e voc\u00ea pode come\u00e7ar a compartilhar l\u00f3gica de neg\u00f3cios nos seus aplicativos m\u00f3veis com ele imediatamente. Ele inclui o novo plug-in KMM para Android Studio, que permite escrever, executar, testar e depurar c\u00f3digo compartilhado no mesmo IDE. Junte-se a grandes equipes como a VMWare, a Autodesk e a Yandex, que compartilham c\u00f3digo em seus aplicativos m\u00f3veis usando o Kotlin. Reutilizar c\u00f3digo entre plataformas m\u00f3veis nunca foi t\u00e3o f\u00e1cil!<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/08\/KMM_release_banners_blogpost.png\" alt=\"arquivo\"><\/p>\n<h2>O que \u00e9 o Kotlin Multiplatform Mobile?<\/h2>\n<p>O <strong>Kotlin Multiplatform Mobile<\/strong> (<strong>KMM<\/strong>) \u00e9 um SDK para desenvolvimento m\u00f3vel multiplataformas fornecido pela JetBrains. Ele usa os <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/multiplatform.html\" target=\"_blank\" rel=\"noopener\">recursos multiplataformas do Kotlin<\/a> e inclui v\u00e1rias ferramentas e recursos projetados para tornar a experi\u00eancia completa de cria\u00e7\u00e3o de aplica\u00e7\u00f5es m\u00f3veis multiplataformas t\u00e3o agrad\u00e1vel e eficiente quanto poss\u00edvel. <\/p>\n<p>As vers\u00f5es para Android e iOS de uma aplica\u00e7\u00e3o geralmente t\u00eam muito em comum, mas tamb\u00e9m podem diferir significativamente, especialmente em termos da interface do usu\u00e1rio, desde varia\u00e7\u00f5es sutis no comportamento de rolagem at\u00e9 a l\u00f3gica de navega\u00e7\u00e3o completamente divergente. Ao mesmo tempo, a l\u00f3gica de neg\u00f3cios da aplica\u00e7\u00e3o, incluindo recursos como gerenciamento de dados, an\u00e1lises e autentica\u00e7\u00e3o, \u00e9 muitas vezes id\u00eantica. \u00c9 por isso que \u00e9 natural compartilhar algumas partes de uma aplica\u00e7\u00e3o entre plataformas e, ao mesmo tempo, manter outras partes completamente separadas.<\/p>\n<p>Com o KMM, voc\u00ea pode obter essa flexibilidade e ainda manter os benef\u00edcios da programa\u00e7\u00e3o nativa. Use uma \u00fanica base de c\u00f3digo para a l\u00f3gica de neg\u00f3cios de aplicativos iOS e Android e escreva c\u00f3digo espec\u00edfico da plataforma somente onde for necess\u00e1rio, para implementar uma interface do usu\u00e1rio nativa ou ao trabalhar com APIs espec\u00edficas de plataforma.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/08\/KMM-release-scheme_Blogpost.jpg\" alt=\"arquivo\"><\/p>\n<p>O KMM se integra perfeitamente ao seu projeto m\u00f3vel. O c\u00f3digo compartilhado, escrito em Kotlin, \u00e9 compilado para o bytecode da JVM com o Kotlin\/JVM e em bin\u00e1rios nativos com o Kotlin\/Native, para que voc\u00ea possa usar seus m\u00f3dulos de l\u00f3gica de neg\u00f3cios do KMM como qualquer outra biblioteca m\u00f3vel comum.<\/p>\n<p>Compartilhar o c\u00f3digo Kotlin entre plataformas m\u00f3veis j\u00e1 economizou muito tempo e esfor\u00e7o para muitas empresas. Aqui est\u00e3o algumas hist\u00f3rias inspiradoras:<\/p>\n<ul>\n<li>A <a href=\"https:\/\/kotlinlang.org\/lp\/mobile\/case-studies\/quizlet\" target=\"_blank\" rel=\"noopener\">Quizlet<\/a> migrou sua l\u00f3gica de neg\u00f3cios de uma abordagem JavaScript compartilhada para o KMM e melhorou drasticamente o desempenho das suas aplica\u00e7\u00f5es para Android e iOS.<\/li>\n<li>A <a href=\"https:\/\/kotlinlang.org\/lp\/mobile\/case-studies\/fastwork\" target=\"_blank\" rel=\"noopener\">Fastwork<\/a> introduziu o KMM para as camadas de dom\u00ednio e dados de sua aplica\u00e7\u00e3o, para compartilhar a l\u00f3gica de neg\u00f3cios e servi\u00e7os de API entre plataformas m\u00f3veis, aumentando significativamente a produtividade da sua equipe.<\/li>\n<li>A <a href=\"https:\/\/kotlinlang.org\/lp\/mobile\/case-studies\/yandex\" target=\"_blank\" rel=\"noopener\">Yandex.Disk<\/a> come\u00e7ou experimentando a integra\u00e7\u00e3o de um pequeno recurso e, quando o experimento se mostrou bem-sucedido, ela implementou toda sua l\u00f3gica de sincroniza\u00e7\u00e3o de dados no KMM.<\/li>\n<\/ul>\n<p>Os resultados not\u00e1veis alcan\u00e7ados por estas e <a href=\"https:\/\/kotlinlang.org\/lp\/mobile\/case-studies\/\" target=\"_blank\" rel=\"noopener\">muitas outras equipes<\/a> t\u00eam sido uma grande parte da nossa inspira\u00e7\u00e3o, e esperamos que suas hist\u00f3rias o incentivem a come\u00e7ar a compartilhar c\u00f3digo entre plataformas m\u00f3veis com o KMM.<\/p>\n<h2>Crie aplicativos m\u00f3veis com prazer gra\u00e7as ao KMM<\/h2>\n<p>O KMM ainda \u00e9 bastante novo para o mundo do desenvolvimento m\u00f3vel, mas acreditamos que \u00e9 um verdadeiro divisor de \u00e1guas. \u00c9 por isso que alocamos uma equipe separada dentro do Kotlin para impulsionar o KMM e fornecer a melhor experi\u00eancia de desenvolvedor para a cria\u00e7\u00e3o de aplica\u00e7\u00f5es m\u00f3veis multiplataformas com o Kotlin.<\/p>\n<p>Como um primeiro passo para isso, hoje temos o prazer de apresentar a voc\u00eas a primeira demonstra\u00e7\u00e3o do <strong><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/14936-kotlin-multiplatform-mobile\" target=\"_blank\" rel=\"noopener\">plug-in KMM para Android Studio<\/a><\/strong>, juntamente com o novo <strong><a href=\"https:\/\/kotlinlang.org\/lp\/mobile\/\" target=\"_blank\" rel=\"noopener\">portal para desenvolvedores do KMM<\/a><\/strong>. <\/p>\n<p>Vamos come\u00e7ar nossa jornada com o KMM!<\/p>\n<h3>Trabalhe em um ambiente familiar<\/h3>\n<p>Com o novo plug-in KMM, voc\u00ea pode escrever, executar, testar e depurar c\u00f3digo compartilhado no Android Studio, sem alternar para outros IDEs. Para instal\u00e1-lo, selecione <strong>Preferences<\/strong> | <strong>Plugins<\/strong>, procure o plug-in <em>Kotlin Multiplatform Mobile<\/em> no <strong>Marketplace<\/strong> e clique no bot\u00e3o <strong>Install<\/strong>.<\/p>\n<h4>Configure uma nova aplica\u00e7\u00e3o com poucos cliques<\/h4>\n<p>Com o assistente <strong>New Kotlin Multiplatform Mobile Project<\/strong>, voc\u00ea pode criar um projeto de aplicativo m\u00f3vel pronto para ser executado com uma base de c\u00f3digo compartilhada em apenas alguns cliques. Para ver como isso funciona em ambas as plataformas, basta selecionar a configura\u00e7\u00e3o de execu\u00e7\u00e3o necess\u00e1ria e clicar no bot\u00e3o <strong>Run<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/08\/kmm-wizard.png\" alt=\"arquivo\"><\/p>\n<p>O projeto gerado conter\u00e1 exemplos de como se conectar \u00e0 API espec\u00edfica de plataforma e \u00e0 cobertura de testes b\u00e1sica. Voc\u00ea pode usar esse assistente para explorar os recursos b\u00e1sicos do KMM ou como uma ferramenta de estrutura para a sua nova aplica\u00e7\u00e3o de produ\u00e7\u00e3o do KMM. <\/p>\n<p>Siga <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/create-first-app.html\" target=\"_blank\" rel=\"noopener\">este tutorial<\/a> para instalar o plug-in e criar sua primeira aplica\u00e7\u00e3o multiplataforma com o assistente.<\/p>\n<h4>Introduza o KMM no seu projeto existente em uma \u00fanica etapa<\/h4>\n<p>Voc\u00ea tamb\u00e9m pode iniciar sua jornada com o KMM diretamente no seu projeto atual: o c\u00f3digo Kotlin compartilhado pode ser facilmente integrado ao seu c\u00f3digo existente, como qualquer outra depend\u00eancia regular. O assistente <strong>New Kotlin Multiplatform Mobile Module<em> <\/em><\/strong> ajudar\u00e1 voc\u00ea a adicionar um novo m\u00f3dulo KMM ao seu projeto, para que voc\u00ea possa usar o c\u00f3digo que j\u00e1 escreveu em Kotlin e refator\u00e1-lo para torn\u00e1-lo compat\u00edvel com o iOS. <\/p>\n<p>Confira este <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/integrate-in-existing-app.html\" target=\"_blank\" rel=\"noopener\">guia de integra\u00e7\u00e3o do KMM em projetos existentes<\/a> para aprender a planejar a arquitetura de projetos multiplataforma e organizar a migra\u00e7\u00e3o para ele.<\/p>\n<h4>Trabalhe com ambas as plataformas dentro de um \u00fanico IDE<\/h4>\n<p>Voc\u00ea n\u00e3o precisa mais trocar de IDEs e ter o Xcode em execu\u00e7\u00e3o para verificar se o seu c\u00f3digo funciona corretamente em ambas as plataformas m\u00f3veis. Com o novo plug-in, voc\u00ea obt\u00e9m integra\u00e7\u00e3o com seu dispositivo iOS e simulador diretamente no Android Studio. Isso oferece os seguintes recursos:<\/p>\n<ul>\n<li><strong>Executar e depurar a aplica\u00e7\u00e3o para iOS<\/strong> no simulador ou em um dispositivo com a configura\u00e7\u00e3o de execu\u00e7\u00e3o predefinida.<\/li>\n<li><strong>Executar e depurar testes comuns e espec\u00edficos do iOS<\/strong> no simulador iOS, simplesmente clicando no \u00edcone de medianiz em uma classe ou m\u00e9todo de teste.<\/li>\n<\/ul>\n<p>Tanto para a aplica\u00e7\u00e3o quanto para os testes, voc\u00ea pode definir pontos de interrup\u00e7\u00e3o e depurar seu c\u00f3digo no iOS.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2021\/08\/kmm-ios-static-min.png\" data-gif-src=\"https:\/\/resources.jetbrains.com\/storage\/products\/blog\/wp-content\/uploads\/Kotlin\/kmm-ios-demo.gif\"><\/p>\n<h3>Integre com o ecossistema do iOS sem qualquer sobrecarga<\/h3>\n<p>Conforme mencionado acima, o KMM \u00e9 perfeitamente integrado ao seu projeto m\u00f3vel. Para o Android, voc\u00ea pode usar o Kotlin para todas as partes do seu projeto. Ao mesmo tempo, o KMM fornece forte integra\u00e7\u00e3o com o processo de desenvolvimento do iOS, devido \u00e0 <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/native\/objc_interop.html\" target=\"_blank\" rel=\"noopener\">interoperabilidade do Kotlin\/Native com o Objective-C\/Swift<\/a>, \u00e0 <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/native\/cocoapods.html\" target=\"_blank\" rel=\"noopener\">integra\u00e7\u00e3o com o gerenciador de depend\u00eancias do CocoaPods<\/a> e \u00e0 <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/connect-to-platform-specific-apis.html\" target=\"_blank\" rel=\"noopener\">capacidade de usar APIs espec\u00edficas de plataforma<\/a> com o padr\u00e3o esperado\/real.<\/p>\n<h4>Trabalhe com Kotlin a partir do c\u00f3digo Swift com Kotlin\/Native<\/h4>\n<p>O Kotlin\/Native fornece interoperabilidade bidirecional com o Objective-C\/Swift. Os m\u00f3dulos do Kotlin podem ser totalmente utilizados em Swift\/Objective-C. Voc\u00ea pode usar estruturas e bibliotecas Objective-C no c\u00f3digo Kotlin, bem como bibliotecas Swift, se a sua API for exportada para Objective-C com <code>@objc<\/code>.<\/p>\n<p>Saiba mais sobre a <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/native\/objc_interop.html\" target=\"_blank\" rel=\"noopener\">interoperabilidade do Kotlin\/Native com o Swift\/Objective-C<\/a>.<\/p>\n<h4>Gerencie facilmente as depend\u00eancias do iOS<\/h4>\n<p>O Kotlin\/Native fornece integra\u00e7\u00e3o com o gerenciador de depend\u00eancia CocoaPods. Voc\u00ea pode adicionar depend\u00eancias em bibliotecas Pod armazenadas no reposit\u00f3rio CocoaPods ou localmente e tamb\u00e9m pode usar projetos multiplataforma com destinos nativos como uma depend\u00eancia do CocoaPods (Kotlin Pod). Gerencie depend\u00eancias Pod diretamente no Android Studio e aproveite o suporte completo de codifica\u00e7\u00e3o, incluindo realce e complementa\u00e7\u00e3o.<\/p>\n<p>Esta \u00e9 a apar\u00eancia da configura\u00e7\u00e3o t\u00edpica da biblioteca do KMM:<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nkotlin {\n    android()\n    ios()\n\n    cocoapods {\n        summary = \"CocoaPods test library\"\n        homepage = \"https:\/\/github.com\/JetBrains\/kotlin\"\n        pod(\"AFNetworking\", \"~&gt; 4.0.0\")\n        podfile = project.file(\"..\/ios-app\/Podfile\")\n     }\n }\n<\/pre>\n<p>Conecte a biblioteca ao seu projeto do iOS como um Kotlin Pod, adicionando seu nome e caminho ao <code>Podfile<\/code>:<\/p>\n<pre class=\"kotlin-code\" data-highlight-only=\"true\" theme=\"idea\" indent=\"4\" style=\"visibility: hidden; padding: 36px 0;\">\nuse_frameworks!\n\ntarget 'ios-app' do\n    pod 'kotlin_library', :path =&gt; '..\/kotlin-library'\nend\n<\/pre>\n<p>Saiba mais sobre a <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/native\/cocoapods.html\" target=\"_blank\" rel=\"noopener\">integra\u00e7\u00e3o com o CocoaPods<\/a>.<\/p>\n<h3>Saiba como criar melhores aplicativos m\u00f3veis multiplataforma no novo Portal do desenvolvedor<\/h3>\n<p>O novo Portal do desenvolvedor do KMM foi projetado para tornar sua jornada mais confort\u00e1vel e produtiva, desde sua primeira experi\u00eancia com o KMM at\u00e9 o seu uso na produ\u00e7\u00e3o.<\/p>\n<p>A <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/\" target=\"_blank\" rel=\"noopener\">se\u00e7\u00e3o de documenta\u00e7\u00e3o<\/a> \u00e9 seu recurso confi\u00e1vel quando voc\u00ea est\u00e1 trabalhando com o KMM. Voc\u00ea encontrar\u00e1 conte\u00fado para todos os n\u00edveis de conhecimento, desde <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/getting-started.html\" target=\"_blank\" rel=\"noopener\">tutoriais para voc\u00ea come\u00e7ar<\/a> at\u00e9 t\u00f3picos de desenvolvimento mais avan\u00e7ados. Ela cont\u00e9m informa\u00e7\u00f5es \u00fateis sobre tarefas comuns, como organizar camadas de <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/use-ktor-for-networking.html\" target=\"_blank\" rel=\"noopener\">redes<\/a> e <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/configure-sqldelight-for-data-storage.html\" target=\"_blank\" rel=\"noopener\">armazenamento de dados<\/a> e at\u00e9 mesmo <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/organize-process-around-kmm.html\" target=\"_blank\" rel=\"noopener\">organizar o processo de desenvolvimento em torno do KMM<\/a>.<\/p>\n<p>Procurando novas ideias sobre os benef\u00edcios de usar o KMM na sua aplica\u00e7\u00e3o? Aprenda com a experi\u00eancia em primeira m\u00e3o de v\u00e1rias equipes que j\u00e1 est\u00e3o usando o KMM em seus produtos na se\u00e7\u00e3o de <a href=\"https:\/\/kotlinlang.org\/lp\/mobile\/case-studies\" target=\"_blank\" rel=\"noopener\">estudos de casos<\/a>.<\/p>\n<h2>O poder da comunidade<\/h2>\n<p>Somos gratos \u00e0s seguintes empresas e desenvolvedores independentes, cujo investimento de tempo, conhecimento e experi\u00eancia foi crucial para este lan\u00e7amento: <a href=\"https:\/\/github.com\/kpgalligan\" target=\"_blank\" rel=\"noopener\">Kevin Galligan<\/a>, <a href=\"https:\/\/github.com\/AlecStrong\" target=\"_blank\" rel=\"noopener\">Alec Strong<\/a>, <a href=\"https:\/\/github.com\/arkivanov\" target=\"_blank\" rel=\"noopener\">Arkadii Ivanov<\/a>, <a href=\"https:\/\/github.com\/benasher44\" target=\"_blank\" rel=\"noopener\">Ben Asher<\/a>, <a href=\"https:\/\/github.com\/joreilly\" target=\"_blank\" rel=\"noopener\">John O\u2019Reilly<\/a>, <a href=\"https:\/\/github.com\/LouisCAD\" target=\"_blank\" rel=\"noopener\">Louis CAD<\/a>, <a href=\"https:\/\/github.com\/wongk\" target=\"_blank\" rel=\"noopener\">Kris Wong<\/a>, <a href=\"https:\/\/github.com\/Alex009\" target=\"_blank\" rel=\"noopener\">Aleksey Mikhailov<\/a> e muitos outros engenheiros incr\u00edveis. Obrigado por relatar issues no YouTrack, participar da pesquisa de produto e entrevistas, compartilhar hist\u00f3rias sobre sua experi\u00eancia com o KMM e criar bibliotecas multiplataforma incr\u00edveis!<\/p>\n<p>Tamb\u00e9m queremos agradecer \u00e0s equipes que nos ajudaram a criar conte\u00fado para o novo Portal do desenvolvedor: <a href=\"https:\/\/touchlab.co\/\" target=\"_blank\" rel=\"noopener\">Touchlab<\/a>, <a href=\"http:\/\/icerockdev.com\/\" target=\"_blank\" rel=\"noopener\">IceRock<\/a> e <a href=\"https:\/\/kodein.net\/\" target=\"_blank\" rel=\"noopener\">Kodein Koders<\/a>. O trabalho de voc\u00eas ajudar\u00e1 milhares de desenvolvedores a aprofundar-se no Kotlin Multiplatform Mobile e aproveitar todo o seu poder.<\/p>\n<p>Voc\u00eas s\u00e3o demais!<\/p>\n<h2>Experimente agora mesmo<\/h2>\n<p>Com todas essas caracter\u00edsticas interessantes, estamos felizes em anunciar que o <strong><a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/kmm-evolution.html\" target=\"_blank\" rel=\"noopener\">KMM agora est\u00e1 em Alpha<\/a><\/strong>. Isso significa que a equipe do Kotlin est\u00e1 totalmente comprometida em aprimorar essa tecnologia e ajud\u00e1-la a evoluir. \u00c9 tamb\u00e9m um sinal de que o produto se desenvolver\u00e1 rapidamente. Ouviremos seus coment\u00e1rios e forneceremos corre\u00e7\u00f5es e melhorias o mais r\u00e1pido poss\u00edvel. Ajude-nos a aumentar a estabilidade do KMM relatando quaisquer issues que voc\u00ea encontrar por meio do nosso <a href=\"http:\/\/kotl.in\/issue\" target=\"_blank\" rel=\"noopener\">rastreador<\/a>.<\/p>\n<p>Entrar em Alpha significa que tudo est\u00e1 pronto para voc\u00ea come\u00e7ar a usar o KMM para compartilhar c\u00f3digo de l\u00f3gica de neg\u00f3cios entre plataformas m\u00f3veis. Voc\u00ea pode criar um novo projeto ou integrar facilmente um m\u00f3dulo do KMM aos existentes. Em ambos os cen\u00e1rios, o trabalho pode ser feito com custo m\u00ednimo, e voc\u00ea sempre pode voltar ao desenvolvimento totalmente nativo. A comunidade est\u00e1 crescendo rapidamente, e voc\u00ea pode influenciar o desenvolvimento de todo o ecossistema participando dele.<\/p>\n<p>Ent\u00e3o, agora \u00e9 um \u00f3timo momento para <a href=\"https:\/\/kotlinlang.org\/docs\/mobile\/getting-started.html\" target=\"_blank\" rel=\"noopener\">come\u00e7ar a usar o KMM!<\/a><\/p>\n<p>Para obter a melhor experi\u00eancia de aprofundamento no KMM e discutir todos os recursos que voc\u00ea planeja explorar, junte-se \u00e0 comunidade de entusiastas de multiplataforma no <a href=\"https:\/\/kotlinlang.slack.com\/archives\/C3PQML5NU\" target=\"_blank\" rel=\"noopener\">Slack<\/a> (receba um convite <a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-slack-sign-up\" target=\"_blank\" rel=\"noopener\">aqui<\/a>) e inscreva-se na tag \u201ckotlin-multiplatform\u201d no <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/kotlin-multiplatform\" target=\"_blank\" rel=\"noopener\">Stack Overflow<\/a>.<\/p>\n<p>Apesar de tentarmos o nosso melhor, ainda n\u00e3o podemos garantir uma migra\u00e7\u00e3o tranquila. No entanto, tentaremos evitar problemas de compatibilidade o m\u00e1ximo poss\u00edvel, usando sinalizadores de recursos e fornecendo <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/migrating-multiplatform-project-to-14.html\" target=\"_blank\" rel=\"noopener\">guias de migra\u00e7\u00e3o<\/a> para novas vers\u00f5es.<\/p>\n<h3>Compartilhe suas opini\u00f5es<\/h3>\n<p>Esse lan\u00e7amento \u00e9 apenas o in\u00edcio da jornada, mas precisamos da sua ajuda ao longo do caminho. Estamos ansiosos para receber <a href=\"mailto:kmm.feedback@kotlinlang.org\">todos os seus coment\u00e1rios<\/a>, os bons e os ruins. Torne-se uma inspira\u00e7\u00e3o para outras pessoas, compartilhando suas hist\u00f3rias de uso do Kotlin Multiplatform Mobile, e compartilhe suas ideias sobre como podemos melhorar o KMM.<\/p>\n<p>M\u00e3os \u00e0 obra com o Kotlin!<\/p>\n","protected":false},"author":1086,"featured_media":71617,"comment_status":"closed","ping_status":"closed","template":"","categories":[956,907],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin\/74473"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/users\/1086"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/comments?post=74473"}],"version-history":[{"count":1,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin\/74473\/revisions"}],"predecessor-version":[{"id":74475,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/kotlin\/74473\/revisions\/74475"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media\/71617"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/media?parent=74473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/categories?post=74473"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/tags?post=74473"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/pt-br\/wp-json\/wp\/v2\/cross-post-tag?post=74473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}