Rode código em 16 linguagens no Android — no dispositivo
O PocketCode roda 16 linguagens e tipos de arquivo no seu Android, não num servidor: 13 vêm com o app e 3 são pacotes opcionais. O que roda e o que não roda.
A maioria das formas de "rodar código" num celular manda ele, silenciosamente, para outro lugar — um runner na nuvem, um sandbox remoto, o servidor de um site. Tudo bem até o sinal cair ou você preferir que seu código não saia do dispositivo. O PocketCode faz o contrário: ele executa linguagens reais no próprio dispositivo, então rodar um script é tão local quanto abrir uma nota.
Aqui está o quadro completo: o que roda, o que está pronto na hora, o que precisa de um download único e o que ainda não está disponível.
Treze linguagens e tipos de arquivo dentro do app
Estas vêm dentro do APK, então estão lá desde a primeira abertura — nada para baixar. Você precisa de uma conta gratuita e de conexão para entrar; depois disso, abra um arquivo, toque em Run (o botão vem marcado como experimental) e seu código executa no dispositivo:
| Linguagem | O que roda no dispositivo |
|---|---|
| JavaScript | Um runtime Node.js real embutido |
| TypeScript | O mesmo Node embutido, que remove os tipos: não há verificação de tipos nem tsc |
| C | O compilador TCC (0.9.27), que compila e executa um arquivo .c |
| Python | CPython 3.12 compilado para WebAssembly |
| Ruby | Ruby 3.2 em WebAssembly |
| PHP | PHP 8.2 em WebAssembly, rodado como o php de linha de comando |
| Java | BeanShell, um interpretador no estilo Java, experimental e limitado: não é o javac, não suporta processadores de anotação e não rodam classes com objetos, herança ou interfaces, generics, lambdas, enums nem printf |
| Kotlin | kotlinc 2.3 no celular; se o projeto usa uma biblioteca que o app não inclui, cai para um modo script mais simples que pode falhar |
| Shell | O sh do próprio Android, que não traz a maioria das ferramentas de linha de comando: se faltar uma, termina com exit 127 |
| SQL | O SQLite do Android, num banco temporário por arquivo |
| HTML | Não renderiza: confere a estrutura e oferece Abrir no DevBrowser |
| Markdown | Abre o preview |
| JSON | Valida o arquivo |
HTML, Markdown e JSON são previews e verificações, mais do que runtimes, mas são o que você usa no trio do dia a dia ("escreva um script, monte uma página, veja uns dados"). Funcionam no segundo em que você abre o app.
Quer o mergulho fundo em uma delas? Escrevemos um guia completo de
como rodar Python no Android — como o build
WebAssembly executa localmente, o que a biblioteca padrão cobre e seus limites
honestos (sem pip, então é um ambiente de scripting e aprendizado, não uma stack
de ciência de dados).
Mais três, a um download de distância
Além das linguagens incluídas, o PocketCode oferece pacotes de linguagem opcionais. Você baixa um pacote uma vez, em Configurações → Compiladores e runtimes → Runtimes de linguagem adicionais, e a partir daí aquela linguagem roda no dispositivo, como as de fábrica. Os pacotes que você instala hoje:
- Lua 5.4 (cerca de 0,6 MB). O editor não tem realce para Lua, então os
arquivos
.luaabrem como texto simples. - Go (cerca de 38 MB), pelo interpretador Yaegi. Não é um
go buildcompleto: só biblioteca padrão, um arquivo por vez, semgo gete sem projetos comgo.mod. - Scripts estilo Rust (cerca de 1,4 MB), pelo Rhai. É uma linguagem de
scripting com sintaxe parecida com a do Rust, não o
rustc: sem traits avançados, lifetimes, async nem crates.
No total são 16 linguagens e tipos de arquivo, com 17 runners (o Kotlin tem um runner reserva), do mesmo editor, no mesmo celular, sem um servidor no meio.
O que ainda não roda
O gerenciador de complementos também lista Perl, C++ (Clang), C#, Zig, Dart e
Swift, mas nenhum dos seis pode ser instalado nesta
versão: o app não inclui a soma de verificação de que precisa para baixá-los. Os
arquivos deles abrem no editor, e o Run fica desabilitado. Java também não é
compilado, e não existe um rustc de verdade nem uma toolchain completa de Go. Não
contamos nada disso como executável.
Por que "no dispositivo" é o ponto todo
Rodar localmente não é uma nota de rodapé técnica — muda o que um celular pode ser:
- Seu código roda no dispositivo. Depois de entrar na conta, as linguagens incluídas e qualquer pacote que você tenha baixado executam localmente. Isso importa justo onde o celular brilha: trajetos, voos, cobertura ruim, redes de mercados emergentes. (O app precisa de conexão para entrar; abrir o app com uma sessão já iniciada funciona offline.)
- Seu código é seu. Nada é enviado a um executor de terceiros. Os motores WebAssembly (Python, Ruby, PHP, Lua, Go, Rhai) não têm rede por padrão; Executar com argumentos tem uma opção Permitir rede nos motores WASM. Node.js, C e o shell não dependem dela.
- Não há nada para montar. Sem ambiente de terminal para inicializar, sem toolchain para compilar na mão. O runtime já está lá; você só aperta Run.
- É imediato. Não há contêiner remoto para acordar — a execução começa no dispositivo.
O editor ao redor
Um runner é só metade da história; você também quer escrever bem o código. Cada
linguagem abre no mesmo editor de código:
realce de sintaxe TextMate para 39 linguagens, servidores de linguagem de um toque
para 19 delas (Java, Kotlin, Go, Rust, C, C++ e Ruby não estão entre elas),
formatador embutido para 24, edição multicursor e uma barra de símbolos de
programação. A saída aparece no painel Run — print/console.log, stack traces,
códigos de saída e uma caixa de stdin para programas que leem dados. Há também um
terminal integrado: o shell dele tem o node no
PATH, mas Python, Ruby, PHP, C, Java e Kotlin rodam pelo botão Run do editor, não
como comandos de shell.
O que isto é, e o que não é
Ser direto sobre o escopo mantém as expectativas honestas:
- Ótimo para scripting, aprender uma linguagem, praticar algoritmos, automação, prototipagem e rodar código real longe da mesa.
- Não é uma fazenda de build nativa completa. Computação pesada roda em velocidade de interpretador, e runtimes que dependem de ecossistemas nativos enormes (pense nos pacotes com extensões em C do Python) ficam dentro do que cada linguagem traz no dispositivo. Os complementos são só arquivos WebAssembly: o Google Play não permite baixar compiladores nativos.
Dentro dessas linhas, é um runtime multilinguagem de bolso que executa localmente.
Um celular, 16 linguagens e tipos de arquivo, executando no dispositivo na sua mão.
O PocketCode está disponível no Google Play. Baixe o PocketCode para rodar a sua linguagem no seu próprio dispositivo.
Perguntas frequentes
Dá para rodar código no Android?
Sim. O PocketCode roda linguagens de programação reais diretamente no celular: hoje são 16 linguagens e tipos de arquivo, 13 incluídos no app e 3 como downloads opcionais. Você abre um arquivo, toca em Run (marcado como experimental) e o código executa no dispositivo.
Quais linguagens dá para rodar no Android?
Hoje rodam 16 linguagens e tipos de arquivo, com 17 runners. Incluídos no app: JavaScript (Node.js), TypeScript (os tipos são removidos, não verificados), Shell, validação de JSON, preview de Markdown, uma checagem de HTML, SQL sobre SQLite, Python 3.12, Ruby 3.2 e PHP 8.2 (WebAssembly), Java (experimental e limitado: um interpretador BeanShell, não o javac, e a maior parte do código orientado a objetos, generics, lambdas e printf não roda), Kotlin e C (TCC). Downloads opcionais: Lua 5.4, Go (interpretador Yaegi, só biblioteca padrão) e scripts estilo Rust (Rhai, não o rustc). Perl, C++, C#, Zig, Dart e Swift aparecem no gerenciador de complementos, mas ainda não podem ser instalados.
Precisa de um computador ou de um servidor para rodar o código?
Não. O código é executado no próprio celular. Você precisa de conexão para entrar na conta; abrir o app com uma sessão já iniciada funciona offline; depois disso, nada é enviado a um servidor remoto para rodar.
Precisa do Termux?
Não. Os runtimes já vêm embutidos no PocketCode — nada para instalar de um gerenciador de pacotes ou compilar na mão.
Dá para compilar código num celular?
C sim: o compilador TCC embutido compila um arquivo .c e o roda no dispositivo. Kotlin roda com o kotlinc no celular e, se o projeto usa uma biblioteca que o app não inclui, cai para um modo script mais simples. Java é experimental e limitado: é interpretado pelo BeanShell, não compilado com o javac, e a maior parte do código orientado a objetos, generics, lambdas e printf não roda. C++ ainda não dá para rodar.
O código que eu rodo pode abrir conexões de rede?
Nos motores WebAssembly (Python, Ruby, PHP, Lua, Go, Rhai) não: eles não têm rede por padrão, e você pode permiti-la em «Executar com argumentos». Node.js, C e o shell não dependem dessa opção.
Rodar código exige conta ou conexão?
Você precisa de uma conta gratuita (e-mail, Google ou GitHub) e de conexão para entrar. Depois disso, seu código roda no dispositivo.
Editor de código