[!WARNING]
Este software não recebeu revisão de segurança externa e pode conter vulnerabilidades, podendo não cumprir os objetivos de segurança declarados. Não o utilize para casos de uso sensíveis e não confie na sua segurança até que tenha sido revisado. Trabalho em andamento.
bitchat para Android
Um aplicativo de mensagens seguro, descentralizado e peer-to-peer que funciona em redes mesh Bluetooth. Sem necessidade de internet para conversas mesh, sem servidores, sem números de telefone – apenas comunicação criptografada pura. O Bitchat também suporta canais geohash, que utilizam uma conexão com a internet para conectar você a outras pessoas na sua área geográfica.
Esta é a portabilidade para Android do aplicativo bitchat iOS original, mantendo 100% de compatibilidade de protocolo para comunicação entre plataformas.
Instalar o bitchat
Você pode baixar a versão mais recente do bitchat para Android na página de Releases do GitHub.
Ou você pode:

Instruções:
- Baixar o APK: No seu dispositivo Android, acesse o link acima e baixe o arquivo
.apk mais recente. Abra-o.
- Permitir fontes desconhecidas: Em alguns dispositivos, antes de instalar o APK, pode ser necessário ativar "Instalar de fontes desconhecidas" nas configurações do dispositivo. Geralmente, isso é encontrado em Configurações > Segurança ou Configurações > Apps e notificações > Acesso especial a apps.
- Instalar: Abra o arquivo
.apk baixado para iniciar a instalação.
Licença
Este projeto é disponibilizado em domínio público. Consulte o arquivo LICENSE para detalhes.
Funcionalidades
- ✅ Compatível entre Plataformas: Compatibilidade total de protocolo com o bitchat iOS
- ✅ Rede Mesh Descentralizada: Descoberta automática de pares e retransmissão de mensagens em múltiplos saltos via Bluetooth LE
- ✅ Criptografia de Ponta a Ponta: Troca de chaves X25519 + AES-256-GCM para mensagens privadas
- ✅ Conversas baseadas em Canais: Mensagens em grupo baseadas em tópicos com proteção opcional por senha
- ✅ Armazenar e Encaminhar: Mensagens armazenadas em cache para pares offline e entregues quando eles reconectam
- ✅ Privacidade em Primeiro Lugar: Sem contas, sem números de telefone, sem identificadores persistentes
- ✅ Comandos ao estilo IRC: Interface familiar com comandos
/join, /msg, /who
- ✅ Retenção de Mensagens: Salvamento opcional de mensagens em todo o canal, controlado pelos proprietários do canal
- ✅ Limpeza de Emergência: Toque triplo no logotipo para limpar instantaneamente todos os dados
- ✅ Interface Android Moderna: Jetpack Compose com Material Design 3
- ✅ Temas Claro/Escuro: Estética inspirada em terminais que combina com a versão iOS
- ✅ Otimização de Bateria: Varredura adaptativa e gerenciamento de energia
Configuração no Android
Pré-requisitos
- Android Studio: Arctic Fox (2020.3.1) ou mais recente
- Android SDK: API level 26 (Android 8.0) ou superior
- Kotlin: 1.8.0 ou mais recente
- Gradle: 7.0 ou mais recente
Instruções de Compilação
-
Clone o repositório:
git clone https://github.com/permissionlesstech/bitchat-android.git
cd bitchat-android
-
Abra no Android Studio:
# Abra o Android Studio e selecione "Open an Existing Project"
# Navegue até o diretório bitchat-android
-
Compile o projeto:
-
Instale no dispositivo:
Compilação de Desenvolvimento
Para compilações de desenvolvimento com depuração ativada:
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk
Compilação de Lançamento
Para lançamentos de produção:
./gradlew assembleRelease
Requisitos Específicos do Android
Permissões
O aplicativo requer as seguintes permissões (solicitadas automaticamente):
- Bluetooth: Funcionalidade central BLE
- Localização: Necessária para varredura BLE no Android
- Rede: Expanda sua mesh através de relays públicos na internet
- Notificações: Alertas de mensagens e atualizações em segundo plano
Requisitos de Hardware
- Bluetooth LE (BLE): Necessário para rede mesh
- Android 8.0+: API level 26 mínimo
- RAM: 2GB recomendado para desempenho ideal
Uso
Comandos Básicos
/j #canal - Entrar ou criar um canal
/m @nome mensagem - Enviar uma mensagem privada
/w - Listar usuários online
/channels - Mostrar todos os canais descobertos
/block @nome - Bloquear um par de enviar mensagens
/block - Listar todos os pares bloqueados
/unblock @nome - Desbloquear um par
/clear - Limpar mensagens do chat
/pass [senha] - Definir/alterar senha do canal (apenas proprietário)
/transfer @nome - Transferir propriedade do canal
/save - Alternar retenção de mensagens para o canal (apenas proprietário)
Primeiros Passos
- Instale o aplicativo no seu dispositivo Android (requer Android 8.0+)
- Conceda permissões de Bluetooth e localização quando solicitado
- Inicie o bitchat - ele iniciará automaticamente a rede mesh
- Defina seu apelido ou use o gerado automaticamente
- Conecte-se automaticamente a usuários próximos do bitchat iOS e Android
- Entre em um canal com
/j #geral ou comece a conversar no público
- As mensagens são retransmitidas através da rede mesh para alcançar pares distantes
Funcionalidades da Interface Android
- Interface Jetpack Compose: Interface moderna Material Design 3
- Temas Claro/Escuro: Estética inspirada em terminais que combina com iOS
- Feedback Tátil: Vibrações para interações e notificações
- Layout Adaptável: Otimizado para vários tamanhos de tela Android
- Status da Mensagem: Confirmações de entrega e leitura em tempo real
- Indicadores RSSI: Cores de intensidade de sinal para cada par
Funcionalidades de Canais
- Proteção por Senha: Proprietários de canais podem definir senhas com
/pass
- Retenção de Mensagens: Proprietários podem ativar o salvamento obrigatório de mensagens com
/save
- Menções @: Use
@apelido para mencionar usuários (com autocompletar)
- Transferência de Propriedade: Passe o controle para usuários de confiança com
/transfer
Segurança e Privacidade
Criptografia
- Mensagens Privadas: Troca de chaves X25519 + criptografia AES-256-GCM
- Mensagens de Canal: Derivação de senha Argon2id + AES-256-GCM
- Assinaturas Digitais: Ed25519 para autenticidade das mensagens
- Sigilo Perfeito: Novos pares de chaves gerados a cada sessão
Funcionalidades de Privacidade
- Sem Registro: Sem contas, e-mails ou números de telefone necessários
- ** Efêmero por Padrão**: Mensagens existem apenas na memória do dispositivo
- Tráfego de Cobertura: Atrasos aleatórios e mensagens fictícias impedem análise de tráfego
- Limpeza de Emergência: Toque triplo no logotipo para limpar instantaneamente todos os dados
- Suporte Tor Integrado: Integração de rede Tor integrada para maior privacidade quando a conectividade com a internet estiver disponível
Desempenho e Eficiência
Compressão de Mensagens
- Compressão LZ4: Compressão automática para mensagens >100 bytes
- Economia de 30-70% de largura de banda em mensagens de texto típicas
- Compressão inteligente: Ignora dados já comprimidos
Otimização de Bateria
- Modos de Energia Adaptativos: Ajusta automaticamente com base no nível da bateria
- Modo desempenho: Funcionalidades completas ao carregar ou bateria >60%
- Modo equilibrado: Operação padrão (30-60% de bateria)
- Economia de energia: Varredura reduzida com bateria <30%
- Potência ultrabaixa: Modo de emergência com bateria <10%
- Eficiência em segundo plano: Economia automática de energia quando o aplicativo está em segundo plano
- Varredura configurável: Ciclo de trabalho se adapta ao estado da bateria
Eficiência de Rede
- Filtros Bloom Otimizados: Detecção de duplicatas mais rápida com menos memória
- Agregação de Mensagens: Agrupa mensagens pequenas para reduzir transmissões
- Limites de Conexão Adaptativos: Ajusta conexões de pares com base no modo de energia
Arquitetura Técnica
Protocolo Binário
O bitchat usa um protocolo binário eficiente otimizado para Bluetooth LE:
- Formato compacto de pacote com campo de tipo de 1 byte
- Roteamento de mensagens baseado em TTL (máx. 7 saltos)
- Fragmentação automática para mensagens grandes
- Deduplicação de mensagens via IDs únicos
Rede Mesh
- Cada dispositivo atua como cliente e periférico
- Descoberta automática de pares e gerenciamento de conexão
- Armazenar e encaminhar para entrega de mensagens offline
- Ciclo de trabalho adaptativo para otimização da bateria
Otimizações Específicas do Android
- Arquitetura de Corrotinas: Operações assíncronas para rede mesh
- Kotlin Coroutines: Operações mesh simultâneas seguras para threads
- EncryptedSharedPreferences: Armazenamento seguro para configurações do usuário
- Consciente do Ciclo de Vida: Manipulação adequada do ciclo de vida do aplicativo Android
- Otimização de Bateria: Serviço em primeiro plano e varredura adaptativa
Arquitetura Técnica do Android
Componentes Principais
- BitchatApplication.kt: Inicialização no nível do aplicativo e injeção de dependência
- MainActivity.kt: Atividade principal que gerencia permissões e hospedagem da interface
- ChatViewModel.kt: Padrão MVVM gerenciando estado do aplicativo e lógica de negócios
- BluetoothMeshService.kt: Rede mesh BLE principal (função central + periférica)
- EncryptionService.kt: Operações criptográficas usando BouncyCastle
- BinaryProtocol.kt: Codificação/decodificação de pacotes binários compatível com o formato iOS
- ChatScreen.kt: Interface Jetpack Compose com Material Design 3
Dependências
- Jetpack Compose: Interface declarativa moderna
- BouncyCastle: Operações criptográficas (X25519, Ed25519, AES-GCM)
- Biblioteca BLE Nordic: Operações Bluetooth LE confiáveis
- Kotlin Coroutines: Programação assíncrona
- LZ4: Compressão de mensagens (quando ativada)
- EncryptedSharedPreferences: Armazenamento local seguro
Compatibilidade do Protocolo Binário
A implementação Android mantém 100% de compatibilidade de protocolo binário com iOS:
- Formato de Cabeçalho: Estrutura de cabeçalho idêntica de 13 bytes
- Tipos de Pacote: Mesmos tipos de mensagem e lógica de roteamento
- Criptografia: Algoritmos criptográficos idênticos e troca de chaves
- UUIDs: Mesmos identificadores de serviço e característica Bluetooth
- Fragmentação: Fragmentação de mensagens compatível para conteúdo grande
Publicação no Google Play
Preparação
-
Atualize as informações da versão:
// In app/build.gradle.kts
defaultConfig {
versionCode = 2 // Incrementar para cada lançamento
versionName = "1.1.0" // Versão visível ao usuário
}
-
Crie uma compilação de lançamento assinada:
./gradlew assembleRelease
-
Gere o pacote do aplicativo (recomendado para Play Store):
Requisitos da Play Store
- API Alvo: API Android mais recente (atualmente 34)
- Política de Privacidade: Necessária para aplicativos que solicitam permissões sensíveis
- Permissões do Aplicativo: Justifique o uso de Bluetooth e localização
- Classificação de Conteúdo: Preencha questionário para conteúdo adequado à idade
Distribuição
- Google Play Store: Canal principal de distribuição
- F-Droid: Para distribuição de código aberto
- APK Direto: Para testes e desenvolvimento
Esta portabilidade Android permite comunicação perfeita com o aplicativo bitchat iOS original:
- iPhone ↔ Android: Mensagens bidirecionais completas
- Grupos Mistos: Usuários iOS e Android nos mesmos canais
- Paridade de Funcionalidades: Todos os comandos e criptografia funcionam entre plataformas
- Sincronização de Protocolo: Formato de mensagem e comportamento de roteamento idênticos
Versão iOS: Para usuários de iPhone/iPad, obtenha o bitchat original em github.com/jackjackbits/bitchat
Contribuindo
Contribuições são bem-vindas! Áreas-chave para melhoria:
- Desempenho: Otimização da bateria e confiabilidade da conexão
- UI/UX: Funcionalidades adicionais do Material Design 3
- Segurança: Funcionalidades criptográficas aprimoradas
- Testes: Cobertura de testes unitários e de integração
- Documentação: Documentação da API e guias de desenvolvimento
Suporte e Problemas
Para problemas específicos do iOS, consulte o repositório original do bitchat iOS.