treslines / kotlin_multiplatform_mobile

Desafios e resoluções a problemas relacionados ao desenvolvimento multiplataforma para mobile
75 stars 3 forks source link

🇵🇹 🇧🇷 Kotlin Multiplatform Mobile 📱💻

Desafios e resoluções a problemas relacionados ao desenvolvimento multiplataforma para mobile. Uma playlist imperdível do zero de quem teve que criar um projeto "from scratch". Conto os problemas que passei, como contornei, soluções encontradas, desafios etc. Pretendo documentar tudo aqui com código e videos no youtube para te ajudar. Não esqueça de deixar uma ESTRELINHA ⭐, assim você me comunica, que ESTA GOSTANDO!

Neste repositório iremos tratar temas tais como:

Dúvidas comuns dos desenvolvedores

Se você já se fez algumas dessas perguntas, inscreva-se no canal e acompanhe a playlist, pois no decorrer dessa série, iremos tratar e sanar essas dúvidas nos vídeos publicados (vide vídeos abaixo):

Estrutura deste github didático

Para cada vídeo eu criei uma branch. Assim você poderá acompanhar a evolução do código e ver os vídeos com as versões do código do jeito que ele se apresentava no ato da gravação. Adicionalmente eu também estou publicando e documentando as decisões arquiteturais no meu techblog com maior grau de detalhe, caso você queira se aprofundar ou entender melhor, porque certas coisas foram feitas da maneira que foram apresentadas nos vídeos.

⛓️ Antes de continuar, garanta sua empregabilidade futura!

Networking é uma das coisas mais importantes na área de TI. (Se não a mais importante) Em tempos de tantos layoffs, uma boa rede de contatos é indispensável. Portanto, comece a criar sua rede de networking o quanto antes. Você irá me agradecer no futuro. Não sabe por onde começar? Conecte-se comigo e participe dos nossos grupos de ajuda e networking. O pessoal é super ativo, colaborativo e nos ajudamos uns aos outros.

O que é o Kotlin Multiplatform Mobile?

O Kotlin Multiplatform Mobile é uma ferramenta de desenvolvimento que permite a criação de aplicativos nativos para várias plataformas, incluindo Android e iOS, usando uma única base de código em Kotlin. Com a Kotlin Multiplatform Mobile, você pode compartilhar código de negócios entre diferentes plataformas, mantendo a experiência do usuário nativa em cada plataforma.

Por que usar o Kotlin Multiplatform Mobile?

Conhecimento bom é conhecimento compartilhado

Seja também um multiplicador de conhecimento. Mostre esse repositório para sua COMUNIDADE/GRUPO/SLACK MOBILE Com o textinho abaixo eu facilito para você como mostrar esse repositório para seus amigos ou companheiros de trabalho. Apenas copia o texto abaixo e posta nas suas redes sociais. Conhecimento bom é conhecimento compartilhado Conto com seu apoio e ajuda!

👇 Texto com link para postar nas redes sociais 👇
Repositório bacana em Português 🇵🇹 🇧🇷 para quem pretende criar um projeto multiplataforma mobile. Vai te evitar muita dor de cabeça e economizar muito tempo no trabalho. https://bit.ly/kotlin-multiplatform-mobile

🧪 Codelabs / Vídeos / Resoluções

Titulo/Descrição e Branch 🗺️ UML-Diagram 📺 Youtube Link
✔️ KMM - COMO CRIAR PROJETO KOTLIN MULTIPLATFORM MOBILE PARA ANDROID E IOS
🌳 Branche: kmm_ready_to_use_sample_project
✔️ GERENCIAR DEPENDÊNCIAS - COMO CRIAR GERENCIAMENTO DE VERSÕES buildSrc EM PROJETO MULTIPLATFORMA
✔️ VERSIONAMENTO - COMO FAZER UPLOAD DO PROJETO ANDROID STUDIO DIRETO PARA GITHUB
✔️ COMPOSE ON KMM - COMO ADICIONAR COMPOSE EM PROJETO KOTLIN MULTIPLATFORM MOBILE
✔️ [CLONAR PROJETO] COMO IMPORTAR E USAR REPOSITÓRIO DO GITHUB NO ANDROID STUDIO
✔️ [kmm shared viewmodel] COMO COMPARTILHAR VIEWMODEL EM PROJETO KOTLIN MULTIPLATFORM
🌳 Branch: kmm_with_shared_viewmodel
✔️ [MOCKK KMM] COMO FAZER SETUP DE MOCKK EM PROJETO KOTLIN MULTIPLATFORM
🌳 Branch: kmm_with_viewmodel_and_mockk
✔️ SQLDELIGHT KMM - COMO FAZER SETUP DE BANCO DE DADOS SQLDELIGHT EM PROJETO KOTLIN MULTIPLATFORM
🌳 Branch: kmm_viewmodel_mockk_database
✔️ VIEWMODEL SQLDELIGHT - COMO ACESSAR BANCO DE DADOS NO VIEWMODEL EM PROJETO MULTIPLATFORM MOBILE
✔️ EFEITO SHIMMER - COMO CRIAR EFEITO DE SOMBRA CINTILANTE DURANTE LOADING COMPOSE
🌳 Branch: kmm_viewmodel_mockk_db_logger
✔️ LOGGER KMM - COMO CRIAR LOGGER CUSTOMIZADO, COMPARTILHADO EM KOTLIN MULTIPLATFORM
🌳 Branch: kmm_viewmodel_mockk_db_logger
✔️ [AndroidMain] COMO CONFIGURAR PACOTE DE TESTE INSTRUMENTADO QUE USAM CONTEXTO EM KOTLIN MULTIPLATFORM
🌳 Branch: kmm_with_instrumented_tests
✔️ BUILD TYPES KMM - COMO CRIAR BUILDTYPES E BUILDVARIANTS EM KOTLIN MULTIPLATFORM MOBILE
✔️ Environment - COMO INJETAR VARIÁVEL DE AMBIENTE EM KOTLIN MULTIPLATFORM KMM
✔️ KTOR CLIENT HTTP - COMO CRIAR CLIENTCONFIG PARA CLIENTHTTP EM KOTLIN MULTIPLATFORM MOBILE
🌳 Branch: kmm_with_ktor
✔️ ENDPOINTS KTOR - COMO FAZER REQUISIçÃO DE API COM KTOR EM KOTLIN MULTIPLATFORM MOBILE ANDROID
✔️ KTOR INTERCEPTOR - COMO MAPEAR A RESPOSTA DO SERVIDOR EM CASOS DE EXCEçÃO KTOR KOTLIN KMM ANDROID
✔️ VIEWMODEL FLOW - COMO CRIAR RESPOSITÓRIO QUE RETORNA FLOW PARA VIEWMODEL COM KTOR EM KOTLIN KMM
✔️ SECRET API KEYS - COMO CRIPTOGRAFAR API KEYS ANDROID EM PROJETO KOTLIN MULTIPLATFORM MOBILE
✔️ Shared BuildConfig - COMO COMPARTILHAR VARIÁVEIS DE AMBIENTE ENTRE ANDROID E IOS KMM?
🌳 Branch: kmm_shared_build_config
✔️ FIGMA ASSETS - COMO FAZER DONWLOAD DE ASSETS, IMAGENS AUTOMATICAMENTE COM SCRIPT BASH ANDROID
✔️ Shared Object - COMO CRIAR BASH SCRIPT PARA GERAR CLASSE OU OBJETOS EM KOTLIN ANDROID
✔️ Import Translation - COMO USAR BASH SCRIPT PARA IMPORTAR TEXTOS DE TRADUçÃO ANDROID
✔️ Shared ImageResource - COMO COMPARTILHAR ImageResource ENTRE ANDROID E IOS KMM?
🌳 Branch: kmm_shared_image_resource
✔️ Dependency Injection - COMO FAZER INJEçÃO DE DEPENDÊNCIAS ENTRE ANDROID E IOS KMM
🌳 Branch: kmm_di_and_text_resource
✔️ Shared TextResource - COMO COMPARTILHAR StringResource ENTRE ANDROID E IOS KMM
🌳 Branch: kmm_di_and_text_resource
✔️ Shared ColorResource - COMO COMPARTILHAR RECURSO DE CORES ENTRE ANDROID E IOS KMM
🌳 Branch: kmm_shared_color_resource
✔️ Responsive WindowsSize - COMO DAR SUPORTE A TAMANHOS DE TELAS DIFERENTES EM ANDROID E IOS KMM
🌳 Branch: kmm_responsive_windows_size
✔️ Disponibilizar Settings - COMO COMPARTILHAR SETTINGS E PREFERÊNCIAS ENTRE ANDROID E IOS KMM
🌳 Branch: kmm_shared_settings
✔️ Custom typography - COMO DISPONIBILIZAR TIPOGRAFIA E ESTILOS CUSTOMIZADOS EM COMPOSE
🌳 Branch: kmm_custom_style_fonts
✔️ ColorResource - COMO DISPONIBILIZAR RECURSO DE CORES DIRETO NO MATERIAL THEME COMPOSE
🌳 Branch: kmm_usage_color_resource
✔️ SpacingResource - COMO DISPONIBILIZAR RECURSO DE DIMENSÃO DIRETO NO MATERIAL THEME COMPOSE
🌳 Branch: kmm_usage_spacing_resource
✔️ FontSize - COMO DISPONIBILIZAR TAMANHO DE FONTES EM UM PROJETO KOTLIN MULTIPLATAFORMA KMM
🌳 Branch: kmm_shared_font_sizing
✔️ SpacingResource - COMO USAR RECURSO DE DIMENSÃO COMPARTILHADO NO SPACER ANDROID COMPOSE KMM
🌳 Branch: kmm_custom_spacers
✔️ ListView Item - COMO CRIAR LIST VIEW ITEM CUSTOMIZADO COMPOSE KOTLIN MULTIPLATAFORMA KMM
🌳 Branch: kmm_custom_listview_item
✔️ Custom Button - COMO CRIAR BOTÕES CUSTOMIZADOS PARA ANDROID COMPOSE KMM
🌳 Branch: kmm_custom_button_set
✔️ DimensResource - COMO COMPARTILHAR ALTURA E LARGURA DOS COMPONENTES ENTRE ANDROID E IOS KMM?
🌳 Branch: kmm_shared_dimens_resource
⚡ PROGUARD - COMO OFUSCAR, DEPURAR, OTIMIZAR E REDUZIR TAMANHO DO CÓDIGO COM PROGUARD ANDROID?
🌳 Branch: kmm_debug_proguard_release
✔️ CUSTOM TEXTFIELD - COMO CRIAR E VERIFICAR ENTRADAS EM CAMPOS DE TEXTO ANDROID COMPOSE?
🌳 Branch: kmm_textfield_with_erro_states
✔️ LOADING BUTTON - COMO FAZER ANIMAçÃO DE LOADING EM BOTÃO COM LOTTIE ANIMATION ANDROID COMPOSE?
🌳 Branch: kmm_loading_button_lottie
✔️ CUSTOM DIALOGS - COMO CRIAR ALERT DIALOG PERSONALIZADO EM JETPACK COMPOSE ANDROID?
🌳 Branch: kmm_alert_dialog_compose
✔️ CUSTOM BOTTOMSHEET - COMO IMPLEMENTAR MODAL BOTTOMSHEET CUSTOMIZADO EM JETPACK COMPOSE?
🌳 Branch: kmm_bottom_sheet_modal
✔️ USABILIDADE - COMO TRATAR TEXTOS E FONTES GIGANTES EM APARELHOS PEQUENOS JETPACK COMPOSE?
🌳 Branch: kmm_accessibility_text
✔️ ONLINE/OFFLINE - COMO MONITORAR E EXIBIR MENSAGEM DE CONECTIVIDADE EM JETPACK COMPOSE?
🌳 Branch: kmm_online_offline_message
✔️ [OBSERVAR ESTADO] COMO EXPOR E USAR ESTADOS EM JETPACK COMPOSE ANDROID?
🌳 Branch: kmm_observe_state_change
✔️ CURVA BEZIER - COMO DESENHAR CURVA CÓNCAVA EM VIEWS E COMPONENTES JETPACK COMPOSE?
🌳 Branch: kmm_draw_bezier_curve
✔️ PROIBIR SCREENSHOTS - COMO IMPEDIR USUÁRIO DE FAZER PRINT SCREEN DA TELA EM JETPACK COMPOSE?
🌳 Branch: kmm_hide_recent_thumbnails
✔️ ENVIAR EMAILS - COMO EXIBIR APENAS CONTAS DE EMAIL INSTALADAS NO CELULAR EM JETPACK COMPOSE?
🌳 Branch: kmm_open_email_clients
✔️ LICÕES APRENDIDAS - ERROS COMUNS AO COMPARTILHAR RECURSO EM ANDROID E IOS KOTLIN MULTIPLATFORM?
🌳 Branch: kmm_lessons_learned
✔️ ADOBE ANALYTICS - COMO RASTREAR EVENTOS DE USUÁRIOS COM ADOBE ANALYTICS EM JETPACK COMPOSE?
🌳 Branch: kmm_adobe_analytics
✔️ LOTTIE ANIMATION - COMO FAZER SPLASH SCREEN ANIMADA COM ANIMAçÃO DE LOTTIE EM JETPACK COMPOSE?
🌳 Branch: kmm_splah_with_lottie
✔️ BOTTOM BAR ITEM - COMO IMPLEMENTAR BOTTOM BAR ITEM EM KOTLIN MULTIPLATFORM EM JETPACK COMPOSE?
🌳 Branch: kmm_bottom_bar_item
✔️ BOTTOM NAVIGATION BAR - COMO IMPLEMENTAR NAVEGAçÃO EM KOTLIN MULTIPLATFORM EM JETPACK COMPOSE?
🌳 Branch: kmm_bottom_navigation_bar
CONCEITO 1/6 ✔️ 10 DÚVIDAS FREQUENTES SOBRE HEADERS JETPACK COMPOSE: ESTILIZAÇÃO, PERSONALIZAÇÃO
🌳 Branch: kmm_header_concept
CONCEITO 2/6 ✔️ 10 DÚVIDAS FREQUENTES SOBRE HEADERS JETPACK COMPOSE: ESTILIZAÇÃO, PERSONALIZAÇÃO
🌳 Branch: kmm_header_concept
CONCEITO 3/6 ✔️ 10 DÚVIDAS FREQUENTES SOBRE HEADERS JETPACK COMPOSE: ESTILIZAÇÃO, PERSONALIZAÇÃO
🌳 Branch: kmm_header_concept
CONCEITO 4/6 ✔️ 10 DÚVIDAS FREQUENTES SOBRE HEADERS JETPACK COMPOSE: ESTILIZAÇÃO, PERSONALIZAÇÃO
🌳 Branch: kmm_header_concept
CONCEITO 5/6 ✔️ 10 DÚVIDAS FREQUENTES SOBRE HEADERS JETPACK COMPOSE: ESTILIZAÇÃO, PERSONALIZAÇÃO
🌳 Branch: kmm_header_concept
CONCEITO 6/6 ✔️ 10 DÚVIDAS FREQUENTES SOBRE HEADERS JETPACK COMPOSE: ESTILIZAÇÃO, PERSONALIZAÇÃO
🌳 Branch: kmm_header_concept
✔️ ColorScheme & BOAS PRÁTICAS - COMO IMPLEMENTAR UM TEMA CLARO OU ESCURO EM KOTLIN MULTIPLATFORM
🌳 Branch: kmm_colorscheme_improvements
✔️ BOTTOM NAVIGATION - COMO PERSONALIZAR APARÊNCIA, NAVEGAR ENTRE TELAS E LIDAR COM SELEçÃO DE ITENS
🌳 Branch: kmm_bottom_navigation_bar
✔️ Custom Logcat - COMO CRIAR E VISUALIZAR LOGS COM LOGGER EM KOTLIN MULTIPLATFORM NO ANDROID STUDIO
🌳 Branch: kmm_custom_logger
✔️ DEEPLINK DINÂMICO - COMO GERAR, USAR E DEFINIR DEEPLINKS NO ANDROID STUDIO EM COMPOSE COM KMM?
🌳 Branch: CONCEITO
✔️ DEEPLINK DINÂMICO 2/4 - COMO GERAR, USAR E DEFINIR DEEPLINKS NO ANDROID STUDIO EM COMPOSE COM KMM
🌳 Branch: kmm_deeplinks_compose
✔️ DEEPLINK DINÂMICO 3/4 - COMO GERAR, USAR E DEFINIR DEEPLINKS NO ANDROID STUDIO EM COMPOSE COM KMM
🌳 Branch: kmm_deeplinks_compose
✔️ DEEPLINK DINÂMICO 4/4 - COMO GERAR, USAR E DEFINIR DEEPLINKS NO ANDROID STUDIO EM COMPOSE COM KMM
🌳 Branch: kmm_deeplinks_compose
✔️ Textfield PERSONALIZADO - COMO ESTILIZAR CAMPO DE TEXTO EM JETPACK COMPOSE NO ANDROID STUDIO
🌳 Branch: kmm_style_textfield
✔️ TEXTSTYLE CUSTOMIZADO - COMO DEFINIR ESTILO DE TEXTO (FONTE, COR, TAMANHO) EM JETPACK COMPOSE?
🌳 Branch: kmm_custom_textstyle
✔️ SETTINGS RUSSWOLF - COMO SALVAR E RECUPERAR CONFIGURACÕES EM JETPACK COMPOSE NO ANDROID STUDIO
🌳 Branch: kmm_settings_localization
✔️ i18n INTERNACIONALIZACÃO - COMO LIDAR COM STRINGS TRADUZÍVEIS KOTLIN MULTIPLATFORM EM COMPOSE?
🌳 Branch: kmm_settings_localization
✔️ LANGUAGE PICKER - COMO CRIAR BOTTOMSHEET DIALOG PARA SELECÃO DE IDIOMA EM COMPOSE ANDROID STUDIO
🌳 Branch: kmm_language_picker
✔️ ANNOTATED STRING - COMO DESTACAR E ESTILIZAR TEXTOS COM ANNOTATED TEXTS EM JETPACK COMPOSE
🌳 Branch: kmm_annotated_strings
✔️ VALIDACÃO TEXTOS - COMO VALIDAR CAMPOS DE TEXTO E LIDAR COM ERROS DE VALIDAçÃO EM JETPACK COMPOSE
🌳 Branch: kmm_text_validations
✔️ Código OTP - COMO CRIAR E VALIDAR CAMPO DE ENTRADA DE CÓDIGO DE SMS OU OTP JETPACK COMPOSE
🌳 Branch: kmm_otp_sms_input_field
✔️ Toggle Switch - COMO CRIAR DOUBLE SWITCH PARA SELECÕES EM JETPACK COMPOSE
🌳 Branch: kmm_toggle_switch
✔️ PARSEAR JSON - COMO PEGAR OS DADOS DE UM JSON E COMO CONVERTER O JSON PARA OBJETOS EM KOTLIN?
🌳 Branch: kmm_parse_json_objects
✔️ Formatar Data - COMO VERIFICAR SE DATA EXPIROU E USAR EXTENSÕES PARA FORMATAçÃO LOCALDATE KOTLINX
🌳 Branch: kmm_datatime_kotlinx
COMO INSTALAR O INTEL HAXM 🚨 NO WINDOWS COM ANDROID STUDIO 2023 ✅ FIX HAXM NOT INSTALLED
🌳 Branch: ---
✔️ O QUE É WEBVIEW⁉️ COMO ABRIR O BROWSER NO APP E COMO SABER QUAL URL MUDOU JETPACK COMPOSE
🌳 Branch: kmm_webview_browser
🚩 AGENDADO: 06/10/2023 ✔️ COMO CRIR DESIGN DE CARD VIEW BONITO 📸 COM LAYOUT PERSONALIZADO JETPACK COMPOSE NO ANDROID STUDIO
🌳 Branch: kmm_cardview_viewpager
🚩 AGENDADO: 13/10/2023 ✔️ COMO CRIAR UM CARROSSEL VIEW PAGER COM INDICADORES REUTILIZÁVEL PARA SUA ENTREVISTA COMPOSE
🌳 Branch: kmm_cardview_viewpager

Ta Curtindo?

Algum dos meus vídeos, posts ou repositórios te salvou muito tempo ou te ajudou no trabalho? Não é clichê não, eu produzo mais com café mesmo. 😁 É minha gasolina ⛽️ Me presentea com um café aqui: https://bit.ly/umCafeGb

Caso não possa, me deixa ao menos uma estrelinha ⭐ aqui no repositório. Obrigado pelo suporte. 😎🤜🤛

image

Quer fazer networking, mas não sabe como?

Telegram: Entra no nosso do telegram para um contato mais rápido e direto: https://bit.ly/telegramGb image

Discord: Networking, vagas, livros e muito muito conhecimento compartilhado: https://bit.ly/discordGb

image

Techblog BugOnSoftware

Você prefere um conteúdo por escrito de alta qualidade e extremamente didático em Português? Da uma olhada aqui: https://bit.ly/techblogGb image

⛓️ CONECTE-SE COMIGO - ONE MORE THING... (ENCONTROU!)


OUTROS REPOSITÓRIOS QUE VOCÊ VAI CURTIR MUITO:

🇧🇷 Almanac do Desenvolvedor Profissional Android 🇵🇹
👉 DESAFIOS E PROBLEMAS COMUNS NA VIDA DO DESENVOLVEDOR ANDROID
👉 GOOGLE DEVELOPER CERTIFICATION
👉 JETPACK COMPOSE ARSENAL