permissionlesstech/bitchat-android

GitHub Trending (daily) 产品

摘要

Bitchat 是一款安全、去中心化的点对点消息应用,适用于 Android,通过蓝牙网状网络运行,无需互联网或电话号码,具有端到端加密,并与 iOS 跨平台兼容。

蓝牙网状聊天,IRC 风格
查看原文
查看缓存全文

缓存时间: 2026/07/27 01:37

permissionlesstech/bitchat-android 源码:https://github.com/permissionlesstech/bitchat-android

本软件尚未经过外部安全审查,可能包含漏洞,且不一定能达到其声称的安全目标。请勿用于敏感场景,在审查完成前不要依赖其安全性。尚在开发中。

bitchat for Android

一款安全、去中心化、点对点的消息应用,可通过蓝牙网状网络工作。无需互联网即可进行网状聊天,无需服务器,无需手机号——纯粹加密通信。Bitchat 还支持地理哈希频道,利用互联网连接将您与同一地理区域的其他用户联系起来。

这是原版 bitchat iOS 应用(https://github.com/jackjackbits/bitchat)的 Android 移植版,保持 100% 协议兼容,实现跨平台通信。

安装 bitchat

您可以从 GitHub Releases 页面(https://github.com/permissionlesstech/bitchat-android/releases)下载最新版本的 bitchat for Android。

或者您也可以:Google Play

操作步骤:

  1. 下载 APK: 在您的 Android 设备上,访问上述链接并下载最新的 .apk 文件,然后打开它。
  2. 允许未知来源: 在某些设备上,安装 APK 前可能需要启用“允许安装未知来源”,通常在 设置 > 安全设置 > 应用和通知 > 特殊应用权限 下。
  3. 安装: 打开下载的 .apk 文件开始安装。

许可证

本项目已发布到公共领域。详见 LICENSE 文件。

功能特点

  • ✅ 跨平台兼容:与 iOS bitchat 完全协议兼容
  • ✅ 去中心化网状网络:通过蓝牙低功耗自动发现对等点并多跳中继消息
  • ✅ 端到端加密:X25519 密钥交换 + AES-256-GCM 用于私密消息
  • ✅ 频道聊天:基于主题的群组消息,支持可选的密码保护
  • ✅ 存储转发:为离线对等点缓存消息,并在其重新连接时传递
  • ✅ 隐私优先:无账户、无手机号、无持久标识符
  • ✅ IRC 风格命令:熟悉的 /join/msg/who 等接口
  • ✅ 消息保留:频道所有者可选择性启用全频道消息保存
  • ✅ 紧急擦除:三次点击标志即可立即清除所有数据
  • ✅ 现代化 Android UI:Jetpack Compose + Material Design 3
  • ✅ 深色/浅色主题:终端风格美学,与 iOS 版本一致
  • ✅ 电池优化:自适应扫描和电源管理

Android 设置

前提条件

  • Android Studio:Arctic Fox (2020.3.1) 或更新版本
  • Android SDK:API 级别 26(Android 8.0)或更高
  • Kotlin:1.8.0 或更新版本
  • Gradle:7.0 或更新版本

构建说明

  1. 克隆仓库:

    git clone https://github.com/permissionlesstech/bitchat-android.git
    cd bitchat-android
    
  2. 在 Android Studio 中打开:

    # 打开 Android Studio,选择“打开现有项目”
    # 导航到 bitchat-android 目录
    
  3. 构建项目:

    ./gradlew build
    
  4. 安装到设备:

    ./gradlew installDebug
    

开发构建

如需启用调试的开发构建:

./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk

发布构建

用于生产发布:

./gradlew assembleRelease

Android 特定要求

权限

应用需要以下权限(会自动请求):

  • 蓝牙:核心 BLE 功能
  • 位置:Android 上 BLE 扫描所需
  • 网络:通过公共互联网中继扩展您的网状网络
  • 通知:消息提醒和后台更新

硬件要求

  • 蓝牙低功耗 (BLE):网状网络必需
  • Android 8.0+:最低 API 级别 26
  • RAM:建议 2GB 以获得最佳性能

使用方法

基本命令

  • /j #channel - 加入或创建频道
  • /m @name message - 发送私密消息
  • /w - 列出在线用户
  • /channels - 显示所有发现频道
  • /block @name - 屏蔽某个对等点,阻止其发消息给您
  • /block - 列出所有已屏蔽对等点
  • /unblock @name - 解除屏蔽
  • /clear - 清除聊天消息
  • /pass [password] - 设置/更改频道密码(仅限所有者)
  • /transfer @name - 转移频道所有权
  • /save - 切换频道消息保留(仅限所有者)

入门指南

  1. 在您的 Android 设备上安装应用(需 Android 8.0+)
  2. 按提示授予蓝牙和位置权限
  3. 启动 bitchat - 它将自动启动网状网络
  4. 设置昵称或使用自动生成的昵称
  5. 自动连接到附近的 iOS 和 Android bitchat 用户
  6. 使用 /j #general 加入频道,或开始在公共区域聊天
  7. 消息通过网状网络中继以到达远处的对等点

Android UI 特性

  • Jetpack Compose UI:现代化的 Material Design 3 界面
  • 深色/浅色主题:终端风格美学,与 iOS 一致
  • 触觉反馈:交互和通知时的震动
  • 自适应布局:针对各种 Android 屏幕尺寸优化
  • 消息状态:实时投递与已读回执
  • RSSI 指示器:每个对等点的信号强度颜色

频道功能

  • 密码保护:频道所有者可使用 /pass 设置密码
  • 消息保留:所有者可使用 /save 启用强制消息保存
  • @ 提及:使用 @nickname 提及用户(带自动补全)
  • 所有权转移:使用 /transfer 将控制权交给受信任的用户

安全与隐私

加密

  • 私密消息:X25519 密钥交换 + AES-256-GCM 加密
  • 频道消息:Argon2id 密码推导 + AES-256-GCM
  • 数字签名:Ed25519 确保消息真实性
  • 前向保密:每次会话生成新的密钥对

隐私功能

  • 无需注册:无需账户、邮箱或手机号
  • 默认临时性:消息仅存在于设备内存中
  • 掩盖流量:随机延迟和虚假消息防止流量分析
  • 紧急擦除:三次点击标志即可立即清除所有数据
  • 内置 Tor 支持:集成 Tor 网络,在可连接互联网时增强隐私

性能与效率

消息压缩

  • LZ4 压缩:对大于 100 字节的消息自动压缩
  • 典型文本消息节省 30-70% 带宽
  • 智能压缩:跳过已压缩的数据

电池优化

  • 自适应电源模式:根据电量自动调整
    • 性能模式:充电或电量 >60% 时全功能
    • 均衡模式:默认操作(电量 30-60%)
    • 省电模式:电量 <30% 时减少扫描
    • 超低功耗:电量 <10% 时紧急模式
  • 后台效率:应用进入后台时自动省电
  • 可配置扫描:占空比根据电池状态自适应

网络效率

  • 优化的布隆过滤器:更快去重且占用更少内存
  • 消息聚合:批量发送小消息以减少传输次数
  • 自适应连接限制:根据电源模式调整对等连接数

技术架构

二进制协议

bitchat 使用针对蓝牙低功耗优化的高效二进制协议:

  • 紧凑的数据包格式,1 字节类型字段
  • 基于 TTL 的消息路由(最多 7 跳)
  • 大消息自动分片
  • 通过唯一 ID 实现消息去重

网状网络

  • 每个设备同时充当客户端和外围设备
  • 自动发现对等点并管理连接
  • 离线消息的存储转发
  • 自适应占空比以优化电池

Android 特定优化

  • 协程架构:网状网络的异步操作
  • Kotlin 协程:线程安全的并发网状操作
  • EncryptedSharedPreferences:用户设置的安全存储
  • 生命周期感知:正确处理 Android 应用生命周期
  • 电池优化:前台服务和自适应扫描

Android 技术架构

核心组件

  1. BitchatApplication.kt:应用级初始化和依赖注入
  2. MainActivity.kt:处理权限和 UI 承载的主活动
  3. ChatViewModel.kt:MVVM 模式,管理应用状态和业务逻辑
  4. BluetoothMeshService.kt:核心 BLE 网状网络(中央 + 外围角色)
  5. EncryptionService.kt:使用 BouncyCastle 的加密操作
  6. BinaryProtocol.kt:与 iOS 格式一致的二进制数据包编解码
  7. ChatScreen.kt:Jetpack Compose UI,Material Design 3

依赖项

  • Jetpack Compose:现代声明式 UI
  • BouncyCastle:加密操作(X25519、Ed25519、AES-GCM)
  • Nordic BLE Library:可靠的蓝牙低功耗操作
  • Kotlin Coroutines:异步编程
  • LZ4:消息压缩(启用时)
  • EncryptedSharedPreferences:安全本地存储

二进制协议兼容性

Android 实现与 iOS 保持 100% 二进制协议兼容:

  • 头部格式:相同的 13 字节头部结构
  • 数据包类型:相同的消息类型和路由逻辑
  • 加密:相同的加密算法和密钥交换
  • UUID:相同的蓝牙服务和特征标识符
  • 分片:兼容的大内容消息分片

发布到 Google Play

准备工作

  1. 更新版本信息:

    // 在 app/build.gradle.kts 中
    defaultConfig {
        versionCode = 2 // 每次发布递增
        versionName = "1.1.0" // 用户可见版本
    }
    
  2. 创建签名发布构建:

    ./gradlew assembleRelease
    
  3. 生成应用包(Play Store 推荐):

    ./gradlew bundleRelease
    

Play Store 要求

  • 目标 API:最新的 Android API(目前为 34)
  • 隐私政策:请求敏感权限的应用需要
  • 应用权限:说明蓝牙和位置用途
  • 内容分级:填写问卷以确定适龄内容

分发渠道

  • Google Play Store:主要分发渠道
  • F-Droid:用于开源分发
  • 直接 APK:用于测试和开发

跨平台通信

此 Android 移植版实现了与原始 iOS bitchat 应用的无缝通信:

  • iPhone ↔ Android:全双向消息
  • 混合群组:iOS 和 Android 用户在同一个频道
  • 功能对等:所有命令和加密跨平台工作
  • 协议同步:相同的消息格式和路由行为

iOS 版本:iPhone/iPad 用户,请获取原始 bitchat:github.com/jackjackbits/bitchat (https://github.com/jackjackbits/bitchat)

贡献

欢迎贡献!主要改进领域:

  1. 性能:电池优化和连接可靠性
  2. UI/UX:更多 Material Design 3 功能
  3. 安全:增强的加密功能
  4. 测试:单元测试和集成测试覆盖
  5. 文档:API 文档和开发指南

支持与问题

  • Bug 报告:在 Issues 页创建 (../../issues),附上设备信息和日志
  • 功能请求:发起讨论 (https://github.com/orgs/permissionlesstech/discussions)
  • 安全问题:通过私密邮件报告安全相关事宜
  • iOS 兼容性:对照原始 iOS 仓库 (https://github.com/jackjackbits/bitchat)

对于 iOS 特定问题,请参考原始 iOS bitchat 仓库 (https://github.com/jackjackbits/bitchat)。

相似文章

permissionlesstech/bitchat

GitHub Trending (daily)

BitChat 是一款去中心化点对点消息应用,利用蓝牙网状网络实现离线通信,并采用 Nostr 协议进行基于互联网的全球消息传递,注重隐私,无需账户,无中心服务器。

@jack: 酷

X AI KOLs Timeline

bitchat 现在可以在无需互联网的情况下将自身发送到另一台 Android 手机,实现离线点对点通信。

@IndieDevHailey: 亿万富翁 Jack Dorsey 开源的神级项目 Bitchat ,简直是现代黑科技! 完全不需要互联网,用蓝牙就能收发 #Bitcoin + 聊天!!! - 飞机上、演唱会、地铁、荒郊野外、断网灾区……信号全无也能实时通讯 + 转账 -…

X AI KOLs Timeline

Jack Dorsey 开源了 Bitchat 项目,这是一个无需互联网、利用蓝牙 Mesh 网络实现离线通讯和比特币转账的工具,支持多跳中继、Cashu eCash 离线转账和双重加密,适用于断网、监控等场景。