permissionlesstech/bitchat-android
摘要
Bitchat 是一款安全、去中心化的点对点消息应用,适用于 Android,通过蓝牙网状网络运行,无需互联网或电话号码,具有端到端加密,并与 iOS 跨平台兼容。
查看缓存全文
缓存时间: 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。
操作步骤:
- 下载 APK: 在您的 Android 设备上,访问上述链接并下载最新的
.apk文件,然后打开它。 - 允许未知来源: 在某些设备上,安装 APK 前可能需要启用“允许安装未知来源”,通常在 设置 > 安全 或 设置 > 应用和通知 > 特殊应用权限 下。
- 安装: 打开下载的
.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 或更新版本
构建说明
-
克隆仓库:
git clone https://github.com/permissionlesstech/bitchat-android.git cd bitchat-android -
在 Android Studio 中打开:
# 打开 Android Studio,选择“打开现有项目” # 导航到 bitchat-android 目录 -
构建项目:
./gradlew build -
安装到设备:
./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- 切换频道消息保留(仅限所有者)
入门指南
- 在您的 Android 设备上安装应用(需 Android 8.0+)
- 按提示授予蓝牙和位置权限
- 启动 bitchat - 它将自动启动网状网络
- 设置昵称或使用自动生成的昵称
- 自动连接到附近的 iOS 和 Android bitchat 用户
- 使用
/j #general加入频道,或开始在公共区域聊天 - 消息通过网状网络中继以到达远处的对等点
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 技术架构
核心组件
- BitchatApplication.kt:应用级初始化和依赖注入
- MainActivity.kt:处理权限和 UI 承载的主活动
- ChatViewModel.kt:MVVM 模式,管理应用状态和业务逻辑
- BluetoothMeshService.kt:核心 BLE 网状网络(中央 + 外围角色)
- EncryptionService.kt:使用 BouncyCastle 的加密操作
- BinaryProtocol.kt:与 iOS 格式一致的二进制数据包编解码
- 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
准备工作
-
更新版本信息:
// 在 app/build.gradle.kts 中 defaultConfig { versionCode = 2 // 每次发布递增 versionName = "1.1.0" // 用户可见版本 } -
创建签名发布构建:
./gradlew assembleRelease -
生成应用包(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)
贡献
欢迎贡献!主要改进领域:
- 性能:电池优化和连接可靠性
- UI/UX:更多 Material Design 3 功能
- 安全:增强的加密功能
- 测试:单元测试和集成测试覆盖
- 文档: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
BitChat 是一款去中心化点对点消息应用,利用蓝牙网状网络实现离线通信,并采用 Nostr 协议进行基于互联网的全球消息传递,注重隐私,无需账户,无中心服务器。
@jack: 酷
bitchat 现在可以在无需互联网的情况下将自身发送到另一台 Android 手机,实现离线点对点通信。
@IndieDevHailey: 亿万富翁 Jack Dorsey 开源的神级项目 Bitchat ,简直是现代黑科技! 完全不需要互联网,用蓝牙就能收发 #Bitcoin + 聊天!!! - 飞机上、演唱会、地铁、荒郊野外、断网灾区……信号全无也能实时通讯 + 转账 -…
Jack Dorsey 开源了 Bitchat 项目,这是一个无需互联网、利用蓝牙 Mesh 网络实现离线通讯和比特币转账的工具,支持多跳中继、Cashu eCash 离线转账和双重加密,适用于断网、监控等场景。
@chat: Android,轮到你了。XChat 即将到来。立即预注册:https://play.google.com/store/apps/details?id=com.x.chat…
XChat 是 X(前身为 Twitter)推出的一款私密端到端加密消息应用,现已开放 Android 预注册。
Bitchat 现已登陆 Radicle
Bitchat,一款聊天应用,现已登陆去中心化代码协作平台 Radicle。
