13 pontos por GN⁺ 2024-09-23 | 1 comentários | Compartilhar no WhatsApp
  • Quer executar código C no Android?
  • Este framework pode gerar um APK em cerca de 2 segundos, instalá-lo e executá-lo automaticamente, e o APK tem cerca de 25 kB
    • Na API 30 (Android R+), ele tem 45 kB para suportar ARM64 + ARM32.
  • A demo deste framework inclui:
    • Criar uma janela com suporte a OpenGL ES
    • Entrada de acelerômetro/giroscópio, multi-touch
    • Teclado Android para entrada de texto
    • Armazenar arquivos de assets no APK e lê-los com AAssetManager
    • Suporte a permissões, como uso de som
    • Acesso direto a dispositivos USB
  • Aviso legal: este código deve ser usado por sua conta e risco. Pode haver problemas para criar apps comerciais.

Why?

  • Às vezes, você quer fazer coisas que não se encaixam na forma normal
    • Toda a discussão online se concentra em usar o processo padrão
    • Esses processos mudam e tornam difícil realizar certas tarefas e manter tudo atualizado
    • Usando um Makefile, você pode ver exatamente quais comandos estão sendo executados, adicionar regras personalizadas e ajustar a build
  • C é uma linguagem universal
    • O Rawdraw funciona em tudo, de ESP8266 a RaspberryPi, Windows, Linux e até Android
    • Escreva o código uma vez e use em qualquer lugar
  • Se você não rechear o processo de build com camadas desnecessárias, só o que importa permanece
    • Isso facilita desenvolvimento, distribuição etc.
    • Tudo leva muito menos tempo
  • Isso também tem a ver com dar uma resposta aos luditas da internet
    • Gente que responde em perguntas do Stack Overflow com "isso é impossível" ou "você está fazendo errado"
    • Bobagens como dizer que pedir permissões via JNI "tem que ser feito em Java"
    • Não há o menor interesse em opiniões sobre o que é possível e o que não é
    • Isto é ciência da computação. Não há limites. Você pode fazer do jeito que quiser. São só bits. Você não manda em mim.

1 comentários

 
GN⁺ 2024-09-23
Comentários no Hacker News
  • "Posso fazer o que eu quiser. São só bits. Você não é meu dono." Concordo

  • O ecossistema de Java e Kotlin no desenvolvimento Android é incômodo. Java é uma linguagem ruim de escrever, e Kotlin é menos pior, mas as ferramentas de build, o gerenciamento de pacotes e o uso da IDE são trabalhosos. Obrigado ao autor

  • Parece que ainda é necessário instalar o Android Studio. Fico me perguntando se existe uma forma de baixar só o Android SDK

    • Dando uma olhada rápida no Makefile, parece que ele evita o Gradle, mas chama outras ferramentas escritas em Java
    • Eu gostaria de ver uma forma de compilar apps Flutter sem Gradle
  • Tenho boas lembranças de quando desenvolvi um engine C++/OpenGL ES multiplataforma

  • Essa abordagem é útil para aplicativos que fornecem UI via OpenGL e não interagem muito com o sistema Android

    • O NDK é usado para escrever pequenos trechos em C para acelerar aplicativos Android tradicionais em Java
    • Esse hack permite escrever em C puro um app OpenGL que roda em tela cheia
    • Ele fornece acesso limitado a coisas como teclado, entrada ADC e USB
    • Ele não reimplementa o framework Android em C, e o NDK fornece acesso limitado para que o código NDK possa interagir com o framework
    • O principal caso de uso é um programa que oferece visualização em tempo real reativa a áudio com base em extração de cromas
  • Toda vez que uso XCode ou Android Studio, lembro de como os desenvolvedores web têm sorte por causa do Vite

    • Tudo simplesmente funciona. Dá para integrar qualquer coisa com um sistema de plugins simples
    • Quando não havia o plugin necessário, era fácil criar um plugin customizado
    • Se o Vite quebra, aí acabou de vez. Você precisa achar outro caminho ou esperar sair um patch. Consertar o interno do Vite por conta própria é quase impossível
  • Alguém com dinheiro como o Elon deveria fazer o Linux funcionar em dispositivos móveis. Existem esforços em andamento, mas o progresso é lento. Isso quebraria o duopólio e tornaria esse tipo de trabalho muito mais fácil

  • Se Lua fosse embutida nesse sistema para escrever a lógica de alto nível, isso seria útil para coisas como jogos ou players de mídia que não precisam de muito suporte de acessibilidade

    • As partes em que desempenho é importante poderiam facilmente ligar bibliotecas C ou escrever código C diretamente
    • (E depois reescrever gradualmente o núcleo em Zig)
  • As ferramentas de Java/Kotlin são péssimas para desenvolvimento mobile. Há tantas outras linguagens e ferramentas excelentes, e ainda assim não entendo por que continuam com isso. Não consigo entender por que o Google não ofereceu Go como alternativa nativa para desenvolvimento Android

  • Fico surpreso que ainda existam pessoas usando Make. Parece que elas não sabem que outras linguagens foram criadas nos últimos 20 anos