← Artigos

Português

Código feito com IA ainda precisa de teste no celular

A inteligência artificial escreve trechos depressa, mas permissões, memória e rede só mostram seus problemas no uso real.

Tela de editor de código com sintaxe colorida em fundo escuro
Foto: Unsplash

Guia

Vibe coding é a prática de descrever uma tarefa em linguagem comum e deixar uma inteligência artificial sugerir o código. Ela acelera telas, funções e testes repetitivos, mas o aplicativo continua sujeito às mesmas permissões, falhas de rede e limitações do celular.

Por trás do assistente costuma existir um LLM, sigla em inglês para modelo de linguagem grande. Esse sistema calcula qual trecho tem mais chance de vir a seguir e consegue reproduzir padrões frequentes, embora não saiba sozinho se a sugestão funciona no seu projeto.

Um modelo de linguagem calcula qual trecho de texto provavelmente vem a seguir e serve de base para assistentes que sugerem código. Essa capacidade ajuda a montar um rascunho, mas não confirma que o aplicativo funcionará corretamente em um celular real.

A Apple e o Android tratam pedidos de permissão como avisos do sistema que precisam de uma justificativa e devem aparecer no momento adequado. Já a NPU, unidade do processador dedicada a tarefas de inteligência artificial, pode ser medida em TOPS, mas esse número indica capacidade do chip e não a qualidade do código gerado.

A RAM, memória usada pelos programas durante a execução, determina se a visualização do app e um modelo local conseguem funcionar ao mesmo tempo. A loja analisa o aplicativo final, não a conversa que o criou, por isso o teste em aparelho físico continua indispensável.

Um pedido claro reduz o improviso

O texto enviado ao assistente é chamado de prompt. “Crie uma tela de acesso em português, com e-mail e senha, sem biometria” define melhor o resultado do que “faça um login bonito”, porque informa conteúdo, idioma e limite.

Mesmo com um bom pedido, o modelo pode importar uma biblioteca ausente, chamar uma função que mudou de nome ou criar uma permissão desnecessária. O código parece convincente porque segue a forma certa, mas só a compilação revela se as peças realmente existem.

Tarefas pequenas oferecem menos espaço para invenção. Completar uma função em um arquivo aberto, usando os componentes que já aparecem nele, é mais previsível do que pedir um aplicativo de entregas inteiro em uma frase.

Projetos completos também dependem de escolhas que não estão no prompt: quem pode cancelar um pedido, o que acontece com uma sessão vencida e como o pagamento é confirmado. Se ninguém define essas regras, a IA preenche as lacunas com o padrão mais comum que encontrou, não com a necessidade do produto.

A sugestão pode ser tratada como uma alteração enviada por um colega. Antes de aceitar, é preciso entender o que mudou, verificar as dependências e confirmar se o resultado respeita a arquitetura e o idioma do aplicativo.

A prévia não sente o celular

Simuladores e emuladores são úteis para conferir layout e navegação, mas não reproduzem todas as condições do aparelho. Câmera, microfone, aquecimento, pouca memória e uma conexão que oscila aparecem com mais fidelidade no dispositivo físico.

Uma tela que abre depressa no computador pode fechar num Android de entrada ao carregar uma foto muito grande. O problema fica ainda mais visível quando o app, o navegador e um recurso local de inteligência artificial disputam a RAM, a memória de acesso aleatório usada pelos programas abertos.

Também é no aparelho que surge o diálogo real de permissão. Câmera, localização, notificações e microfone precisam de justificativa compreensível, e o pedido deve aparecer quando a pessoa tenta usar a função relacionada.

Se o aplicativo pede localização na primeira abertura sem explicar o motivo, muita gente toca em “Não permitir”. O fluxo precisa continuar de forma segura, mostrar como ativar o acesso depois ou oferecer uma alternativa que não dependa daquele dado.

O ciclo de vida do app traz outro tipo de falha. Ao abrir uma mensagem e voltar, o sistema pode ter pausado o áudio, encerrado uma tarefa ou liberado memória, por isso o código não pode agir como se tivesse permanecido ligado o tempo todo.

Uma sequência simples ajuda a encontrar esse problema: abra o fluxo, mande o aplicativo para segundo plano, use outro programa e retorne alguns minutos depois. Faça o mesmo com a rede desligada e com a permissão negada, porque esses caminhos existem para o usuário mesmo quando não aparecem na demonstração.

O modelo local divide espaço

Alguns recursos de IA rodam no próprio aparelho, num processo chamado inferência local. Isso pode reduzir a dependência da internet e manter dados no dispositivo, mas exige memória, armazenamento e suporte do software ao chip disponível.

A NPU, unidade de processamento neural, é uma parte do processador voltada a esse tipo de cálculo. Fabricantes medem sua capacidade em TOPS, trilhões de operações por segundo, porém esse número não garante que o editor escolhido use a NPU nem que a resposta seja correta.

Um modelo menor pode caber no notebook e responder offline, mas tende a perder detalhes em tarefas complexas. Um modelo maior na nuvem tem mais recursos e ainda pode criar uma biblioteca inexistente, pois tamanho não substitui a verificação do código.

Para quem programa com um modelo local, memória e refrigeração continuam importantes. Se o computador começa a usar o SSD como extensão da RAM ou reduz a velocidade para controlar o calor, a sugestão demora e o restante do ambiente também perde desempenho.

A origem da resposta muda questões de privacidade. Colar uma chave de acesso, dados de clientes ou registros de produção num serviço externo pode enviar informações sensíveis para uma infraestrutura que não pertence ao projeto.

Segredos devem ficar no gerenciador de credenciais e exemplos precisam usar dados fictícios. Antes de compartilhar um arquivo, remova tokens, nomes, endereços e qualquer conteúdo que não seria colocado numa conversa pública da equipe.

Compilar é apenas a primeira barreira

Quando o código compila, isso prova que o projeto reconheceu a sintaxe e as dependências. Ainda falta saber se a função entrega o resultado certo, se a interface cabe em telas menores e se um erro de rede deixa a pessoa presa.

Testes automáticos ajudam a repetir verificações sem depender da memória de quem desenvolve. Uma função de cálculo pode receber exemplos conhecidos, enquanto o fluxo principal pode ser testado da abertura até a confirmação da tarefa.

Código gerado por IA não merece uma exceção nessa etapa. Como o assistente produz alterações rapidamente, a ausência de testes permite que o volume cresça mais depressa do que a capacidade da equipe de perceber uma regressão.

Um caminho prático começa por três sinais: o projeto compila, os testes existentes passam e a função abre num aparelho representativo do público. Depois entram cenários como internet lenta, pouco espaço, modo escuro, fonte ampliada e retorno do segundo plano.

A loja recebe um pacote, não a conversa

No envio para a App Store ou o Google Play, o histórico do chat não tem valor. A revisão encontra o pacote final, as permissões declaradas, as telas disponíveis e a descrição que promete ao público o que aquele arquivo faz.

Uma chave de teste esquecida, um fechamento na abertura ou uma justificativa genérica para usar a câmera podem bloquear a publicação. O assistente pode montar uma lista de conferência, mas somente quem executou o aplicativo consegue marcar os itens com segurança.

Se a ficha diz que há inteligência artificial, ela deve explicar a função em linguagem corrente. Também convém informar se o recurso precisa de internet, se envia conteúdo para um servidor e o que ocorre quando o serviço está indisponível.

Antes de publicar, abra o app como uma pessoa nova, conclua a tarefa principal e negue cada permissão uma vez. Esse percurso costuma encontrar mais problemas do que reler uma longa conversa com o modelo.

Velocidade com responsabilidade visível

A IA é especialmente útil para converter formatos, montar estruturas repetitivas, escrever um primeiro teste e explicar um erro desconhecido. Decisões sobre pagamento, privacidade, acessibilidade e comportamento sem rede continuam exigindo alguém que conheça o produto e assuma a escolha.

Em equipe, uma alteração feita com assistência deve informar o que mudou e como foi verificada. Um pull request, o pedido para revisar e incorporar código ao projeto, precisa registrar aparelho, versão do sistema, testes executados e pontos que ficaram de fora.

Esse histórico permite que outra pessoa corrija a função meses depois. Sem ele, a velocidade de hoje vira um conjunto de trechos que ninguém entende bem o suficiente para manter.

O teste decisivo acontece quando alguém abre o aplicativo no próprio aparelho e consegue concluir a tarefa. Enquanto a tela funcionar apenas na visualização do editor, o produto ainda não está pronto para o público.