Executando verificação de segurança...
23

Pitch: Crie apps multiplataforma incríveis usando somente PYTHON! Conheça a Kivy School!

Kivy School Logo

Kivy School é um site que vamos atualizar semanalmente nos próximos meses, pra ensinar a galera a desenvolver aplicativos Python para Android, Windows, macOS, iOS e Linux, estamos criando vários tutoriais passo a passo com o conhecimento que adquirimos nos últimos anos.

O Kivy é uma das frameworks mais insanas que conhecemos! Durante esses anos eu senti muita falta de bons tutoriais de como criar as coisas e eu sei que a comunidade precisa disso. De 2020 pra cá, criamos apps com todo tipo de funcionalidade:

- Lançando e atualizando aplicativo na Play Store:

Play Store

- Integrando Google One Tap sign-in e sign-up

Play Store

- Integrando API do Instituto Nacional de Meteorologia (INMET)

INMET

- Conectando dispositivos Bluetooth (impressora térmica nesse caso)

Bluetooth

- Gerando PDFs e imprimindo através do app:

Thermal Printing

- GPS: Integração com Mapbox

Map Box

- Animações complexas com MANIM + Kivy:

MANIM

Já integramos também IA de visão computacional, reconhecimento automático de fala, leitor de QR code, scanner Wi-Fi, bancos de dados on-line/off-line, e muito mais! Pela minha experiência e opinião, Kivy é uma framework completa!

A gente quer tornar fácil para outras pessoas fazerem o mesmo seguindo tutoriais passo a passo no Kivy School.

Inspirados pelo React Expo, a gente criou o Kivy Reloader para Android, uma ferramenta que permite você ver as alterações no seu celular em tempo real enquanto você está programando. A gente ainda está atualizando pra colocar mais funcionalidades, vcs podem acompanhar o desenvolvimento aqui: https://github.com/kivy-school/kivy-reloader.

GIF

Entrem lá no https://kivyschool.com. Após o tutorial de instalação, vocês vão poder resolver alguns desafios com níveis de dificuldade cada vez maiores (iniciante, intermediário, avançado). A gente ainda está escrevendo os desafios e vamos ir postando nas próximas semanas. Se quiser receber um e-mail sempre que um novo tutorial, blog post ou desafio for publicado no site, basta se inscrever na nossa newsletter.

Se precisarem de ajuda podem perguntar no Discord oficial do Kivy ou chat do telegram do Kivy Brasil. O canal mais recomendado para receber suporte em relação ao Kivy é o Discord.

Uma das novidades mais tops é que o Kivy está se preparando para lançar sua versão 3.0, e a gente quer convidar e ajudar outros a contribuir com o open-source. Vamos fazer uns tutoriais alterando o código-fonte do Kivy core diretamente, abrindo issues, enviando pull requests, revisando código de outras pessoas, etc. Tem muita coisa pra fazer e todo mundo pode contribuir.

Estamos criando uma biblioteca de componentes personalizados chamada Kivy Widgets, se quiserem pedir algum componente personalizado que você acha que está faltando no Kivy, só falar!

Sim, acreditem galera, Kivy School é made in Brazil! Quem estiver disposto a ajudar de qualquer maneira aí só comentar que vamos juntar forças! Eu ainda tenho que traduzir o site todo pra PT-BR, tem muita coisa pra fazer. Quem quiser dar uma mão, só falar.

5

Projeto muito interessante! Nada melhor que poder desenvolver para as principais plataformas usando nossa linguagem do coração... Python!

Acompanharei o projeto

5

Parabéns pela iniciativa Filipe.
Tenho certeza que vai ajudar muita gente.
Conheço o Kivy há algum tempo.
Nunca fiz nada com ele, mas pela documentação percebemos que tem maturidade.
Em uma viagem que fiz alguns anos atrás para a França, usei o mapa interativo do metrô, e depois fiquei sabendo que ele foi desenvolvido com Kivy, até então eu não conhecia o framework.

Também parto do ponto de vista que cada projeto deva ser atendido com a ferramenta ideal disponível naquele momento, mas, uma ferramente que agrade o desenvolvedor deve falar mais alto
em muitos casos.
Na maioria das vezes nossos apps não precisarão ter a escalabilidade e desempenho ninja que todos tanto buscamos. Então relaxar, tomar um cafezinho e codar com aquela ferramente que tanto gostamos, não tem preço.

Já fiz alguns apps com Reactive Native, me chateando muito com a incompatibilidade de muitas libs entre o Expo e o CLI do RN, erros de build e gambiarras para fazer o jest funcionar (hoje prefiro usar o vitest) - mas ainda assim é uma gambiarra que gosto de usar rsrs.

Talvez, nesse momento, para procurar aquela vaga de emprego o kivy não seja a melhor opção, infelizmente.
Mas para aquele freelas ou projetos pessoais, deve ajudar com certeza.

Então na minha humilde opinião, gambiarra por gambiarra, vamos usar uma que nos agrade.

1

kkkkkkkkkkkkkkk, boa, irmão! Você entendeu bem a situação. Muito obrigado também pela força aí.

E isso aí é real, pra procurar emprego Kivy não vai te ajudar muito. Mas como diz minha mãe: "pode não ter emprego pra todo mundo, mas trabalho sempre tem". Talvez você não ache vagas de trabalho anunciando que contratam desenvolvedores Kivy, mas se você perceber que alguém tem qualquer tipo de problema, e oferecer o desenvolvimento de um software como solução, fazer em Kivy é sempre uma boa opção hehe, considerando o contexto, claro.

Todo tipo de framework vai ter seus problemas, no final das contas. Eu gosto bastante da comunidade do Kivy, apesar de pequena. O pessoal lá ajuda bastante nos support channels, e a documentação do Kivy é de fato gigantesca, tem anos que eu estou usando e até hoje eu não vi tudo.

Estou há 8 anos programando em Python, e a stack Kivy+FastAPI+PostgreSQL+SQLAlchemy caiu como uma luva na minha mão. Consigo resolver praticamente tudo com essa stack e me me divirto bastante no processo. Quero muito ajudar outras pessoas que têm interesse a seguirem por essa rota também.

2

Descobri o Kivy uns meses atrás e vejo como uma ótima opção.
Sobre a linguagem...Quando ė feito em Python é gambiarra, mas se for feito exatamente igual em outra linguagem nao é gambiarra? Qual a lógica? Escalabilidade? Não faltam exemplos de empresas antigas e novas escalando com Python e com muita qualidade.
Enquanto isso Python vem crescendo FORTEMENTE como a linguagem de propósito geral mais utilizada no mundo, goste você ou não da linguagem.

1

Muito bem colocado. Agora vejamos a realidade: as porções críticas (em termos de desempenho) do código fonte do Kivy foram escritas em C.

Qual a relevância disso? Simples. Se você está escrevendo código Python, nada te impede de escrever uma função em Java, outra em C++, e outra em Rust, SE NECESSÁRIO.

Na prática? Nunca precisei escrever nada além de Python e Java. Você vai precisar saber um pouco de Java se for acessar algumas coisas específicas do Android.

Eu costumo usar o Pydantic o pra criar esquemas / modelos / validações etc. A biblioteca pydantic-core é escrita em Rust, e nós acessamos as funções a partir do Python. Ou seja, temos o melhor dos dois mundos!

1

Essa é uma das chaves do sucesso do Python. A facilidade de usar outras linguagens quando necessário. Isso te entrega velocidade de desenvolvimento de código maior e o desempenho em tempo de execução que você precisar.

2
2

Já tinha ouvido falar, mas infelizmente as "soluções da moda" fazem a gente virar e olhar outras direções. E saber que tanta coisa pode ser feita dá aquela vontade imensa que querer conhecer! Grato por compartilhar!

1

Cara, vai resolver seu problema mas não vai ser a ferramenta mais eficiente... da mesma forma que um node n tem a mesma eficiencia que um Golang, uma gambiarra em python pra desenvolver apps não vai ter a mesma eficiencia do que um RN, Flutter ou Kotlin.

1
2

Acredito que para projetos paralelos sim, vale a tentativa, o perigo está em querer usar soluções duvidosas em apps que vão pra produção, não acho que vale a pena, a gente já viu esse roteiro antes, cada ferramenta foi desenvolvida em prol de um objetivo, acho que é misturar muito as coisas querer atribuir responsabilidades para ferramentas que nao foram pensadas pra isso. Como disse, vai resolver seu problema, mas será a mais eficiente? Na maioria das vezes não.

1

Sim, vale à pena usar em diversos cenários. Vou te dar um cenário realista: eu estava numa clínica agora, e na entrada da clínica tinha um tablet com um software pra realizarmos o check-in.

Esse software da clínica se assemelha a maioria dos exemplos do mundo real: mais de 90% de todas as aplicações que existem não são aplicações que exigem alta performance, são apenas formulários: textos e imagens, campos de input, botões e animações. Realizam chamadas para API, conexão a um banco de dados offline. É isso.

Se você rodar Kivy no Android, você pode rodar qualquer código Java normalmente. Eu, por exemplo, estou realizando impressões térmicas via bluetooth usando esta biblioteca Java: https://github.com/anastaciocintra/escpos-coffee

Se você quiser realmente ter a linguagem mais eficiente possível pra Android, você iria codar em Java ou Kotlin. Mas a questão é, isto te interessa? Se sim, top!

Mas se você prefere continuar se divertindo com Python, você vai ter uma ferramenta excelente. Fala sério, tem alguma diferença se seu formulário renderiza em 5 milissegundos ou em 10 milissegundos? 😂

E quantos meses ou anos vai levar para você dominar uma linguagem completamente diferente como Java, Swift, Kotlin, Rust, etc? A gente gosta de Python justamente por ser nosso canivete suíço: a gente faz de tudo um pouco. Não precisa ser o melhor do mundo.

E pra ser bem sincero, se você precisa otimizar alguma porção crítica do seu código, você pode fazer o que as maiores bibliotecas em Python fazem: são escritas em C, em Rust, ou usam cython, e depois você chama essas funções a partir do seu código Python.

5

Exatamente isso filipe, geral tem um certo preconceito com python por ser de fato lenta e não ter um framework popular para mobile, quem tem tempo para aprender uma lang nova e seus frameworks vai lá e faz isso, mas se teu problema é específico e performance não é o mais importante, então python pode ser uma boa.
Eu não me importo se uma aplicação demora 5, 10 ou mais milissegundos pra abrir kkk, e o cliente também não tá nem aí pra isso, quero algo que não me tome muito tempo de desenvolvimento e o cliente quer algo intuitivo e funcional.
Tem gente que ainda usa sistemas em clipper e ainda desenvolvem sistemas assim e não estão nem aí pra linguagem em que ele é escrito, usuário quer é algo que funcione.
Se isso resolve seu problema e o problema do cliente, então tá ótimo.

2

Exatamente. É como os entregadores: quem não tem moto entrega de bicicleta.

Alguém poderia argumentar "ah, por que você não junta dinheiro por vários meses, compra uma moto e então faz o delivery de comida? É muito mais eficiente!!", e a resposta é simples, "eu tenho uma bike e eu preciso trabalhar agora!".

Pra mim, que estou recebendo a comida, é irrelevante qual o meio de transporte de quem me trouxe a comida. Se ele veio de bicicleta, de moto, de carro, de metrô ou avião, eu só quero comer! kkkkk

1

O mais importante pra um trabalho bem feito é você gostar do que faz. Não adianta eu dizer pra você programar em Rust se sua paixão é Python. Essa paixão pode ser mais decisiva para o sucesso do que escolher uma tecnologia apenas por suas vantagens técnicas.

Pra quem gosta de programar em Python, tem experiência na área e não tem vontade de aprender outras linguagens, o Kivy pode ser uma excelente opção para você desenvolver para desktop e mobile.

Acho que "aprenda Dart", ou "aprenda html+css+typescript+react", ou "aprenda Rust", são boas dicas se eu quiser focar em apenas um critério: qual a ferramenta mais eficiente possível para realizar X?

Mas no mundo real, as pessoas não têm tempo nem interesse para aprender todas as tecnologias, linguagens e frameworks disponíveis, que mudam constantemente a cada semana. Eu mesmo, apesar de ter experiência com typescript e react, não me divirto tanto quanto quando estou programando na minha linguagem favorita: Python.

1

Mas meu ponto é eficiencia, pode dizer o que for, nao vai mudar o fato de que as "queridinhas" sao as "queridinhas" por conta de sua eficiencia na resoluçao de tais problemas, é muito facil falar "vai, programa com o que ama, use um python na web, um golang pra desktop, um c pra mobile", agora quero ver ter a maturidade tecnica de dizer o que é e o que nao é eficiente pra problema x e y, esse é o meu ponto. Como eu disse, vai resolver seu problema, mas vai correr o risco de enfrentar inumeros problemas no desenvolvimento e na escalabilidade do projeto.

A questao é deixar o saudosismo de lado e passar a entender que sao no fim ferramentas. Eu trabalho com front end, meu main, mas fui designado a criar um app offline para a empresa, corri atras e to terminando o aplicativo com quase 2 meses de desenvolvimento, eu gosto do mobile? nem de longe, mas eu o faço, afinal, nao sou um programador front end, sou um solucionador de problemas...

E eu nao gosto da area por tecnologia x ou y, eu amo a area por conta desse mundo diverso, com inumeras possibilidades de fazer o que quiser, como quiser e quando quiser, ser literalmente um "mago" do mundo moderno, isso que me fascina nessa area, nao uma "tszin com rééct", isso é bobagem, eu nao estudo ferramenta x ou y, eu estudo PROGRAMAÇAO e o seu vasto mundo, é assim que penso, espero que tenha entendido meu ponto.

1

Entendo sim, perfeitamente, e concordo com você.
O ideal é você usar a melhor ferramenta para cada tipo de problema, isso não há dúvidas.

Mas tem um ponto na questão da 'eficiência', se você estiver se referindo à velocidade de execução, é uma coisa, mas velocidade de desenvolvimento é outra!

Rust pode ser a melhor linguagem do mundo, mas se você leva dois meses pra terminar o "Hello World" que pediram na empresa, você está demitido! Não importa se seu "Hello World" roda em 8 nanossegundos mais rápido que o meu. Não adianta você fazer algo 2x mais eficiente mas levar 30x mais tempo!

Uma coisa é você estar trabalhando pra Google e está tentando fazer um app pra escalar para bilhões (não é realidade pra maior parte das pessoas simples, como eu).

Outra é você trabalhar pra padaria da esquina, e quer fazer apenas um controle de estoque simples pra entregar no mês que vem.

Garanto que você começa hoje em Python e no mês que vem você entrega um app excelente que faz o que precisa. Sem firulas.

Agora se você tiver que parar pra aprender uma nova linguagem do zero, ou ainda passar um prazo de desenvolvimento de 6 meses, você vai acabar ficando sem pão. Então acredito que depende muito do contexto: qual a complexidade da aplicação a ser desenvolvida, qual o prazo de desenvolvimento, quem vai desenvolver (quais suas experiências com cada uma das tecnologias que você pode utilizar pra criar o app), para quem vai ser desenvolvido, qual o tamanho do público da aplicação, e assim por diante... cada um deve avaliar conforme sua própria realidade.

Se você for começar do zero alguma coisa, nesse caso o melhor seria você já começar com a melhor ferramenta. Mas até isso é muito volátil, a melhor ferramenta hoje pode ser a pior amanhã. O cara pode ser o maior manjador de Dart da Sibéria, mas se depois de amanhã o Flutter for descontinuado, provavelmente é um conhecimento que você não vai poder fazer muita coisa usando apenas Dart. Quem usa Dart pra qualquer coisa além de Flutter? Eu nunca vi.

Mas se você aprender uma framework em Python, seja ela qual for, e amanhã tiver outra melhor, provavelmente você vai continuar programando em Python, porque a linguagem em si é sólida. Enfim, tentando enxergar um equilíbrio nesses pontos todos que você trouxe.

2

Penso exatamente como você, às vezes ficamos muito noiados em relação ao desempenho da aplicação, mas esquece que muitas das vezes a diferença é inútil...

O resultado disso é: todas as ferramentas são importantes e devem ser trabalhadas para serem melhores em todos os sentidos, assim, qualquer problema pode ser resolvido.

1

Pois é! Usando o pyjnius você consegue ter acesso a toda a API do Android a partir do python, é top demais!

Em breve postaremos mais conteúdo e vamos mostrar sim que Kivy é mais robusto do que pensam. Até hoje não vi nenhuma funcionalidade no Android que não dê pra fazer no Kivy.