ALAppExtensions:实践指南
2026-09-11 3465777
2026-09-11 0
在项目中评估threema-android,可以先看清用途边界:适用于 Android 的 Threema 应用程序。这类日常自动化工具真正难在输入边界、依赖和失败处理如果不清楚就很难稳定复用,仓库说明只能作为第一层证据。我建议用一项范围明确的真实任务完成最小试跑,重点记录配置时间、输出质量、异常信息和维护痕迹,再与现有方案比较。它更像给愿意先做小范围验证并复查原始文档的团队准备的可审查方案,是否长期使用应由试跑数据决定。
Android 版三玛
该存储库包含完整的源代码 Threema 适用于 Android。
Bug 报告/功能请求/安全问题
要报告错误并请求新功能,请联系 Threema 支持 团队通过 threema.com/support。
如果您发现 Threema 存在安全问题,请遵守协调一致的规定 漏洞披露模型。要获得错误赏金资格,请提交一份 关于 GObugfree 的报告(其中所有 列出了详细信息,包括赏金级别)。如果你不感兴趣 错误赏金计划,您可以通过 Threema 或电子邮件联系我们;联系方式 详细信息,请参见 threema.com/contact(部分 “安全”)。
Source 代码发布政策
此源代码存储库将针对每个公共非测试版本进行更新。 每个发布版本都会有一次提交。
提交使用 PGP 进行签名。更多信息请参见 SECURITY.md 信息。
Build 变体
私人
目前有以下与私人相关的产品口味 三马版本:
| 风味 | 描述 | 许可证检查 |
|---|---|---|
store_google |
Google Play 商店版本(常规、付费应用程序) | 谷歌游戏 |
hms |
华为AppGallery版(普通版,付费应用) | 华为 HMS |
store_threema¹ |
Threema Shop版本(带播放服务) | 三马店 |
libre¹ |
Libre (F-Droid) 版本(无专有代码) | 三马店 |
对于本地测试,我们建议构建 store_google 或 store_threema
构建变体。
1 store_threema 和 libre 之间的主要区别在于前者
包含专有的推送服务和自我更新程序,而后者确实
不。此外,libre 版本将使用您的系统表情符号,而不是
捆绑表情符号图形。
三玛工作 / OnPrem
此外,这些构建变体仅与 Threema Work 或 Threema OnPrem 客户:
| 风味 | 描述 | 许可证检查 |
|---|---|---|
store_google_work |
Google Play 商店版本(工作,免费应用程序) | 三马工作 |
hms_work |
华为AppGallery版本(工作,免费应用程序) | 三马工作 |
onprem |
Threema OnPremises版本 | 三马工作 |
内部发展
以下变体仅用于 Threema 内的开发和测试:
| 风味 | 描述 | 许可证检查 |
|---|---|---|
none |
用于开发 | 允许名单 |
green |
使用沙箱测试环境¶ | 允许名单 |
sandbox_work |
使用沙箱测试环境¶ | 三马工作 |
blue |
使用沙箱测试环境¶ | 三马工作 |
1 “沙盒”是用于内部测试的后端测试环境 在三马。目前公众无法访问沙盒后端 互联网。
Building
在构建应用程序之前,请阅读上面的“构建变体”部分。对于
本地测试,我们建议构建并运行 store_google 或
store_threema 构建变体。
通过命令行
先决条件:
安装 Rust 所需的所有目标架构的最佳方法是 通过 rustup:
TOOLCHAIN=$(grep 通道 domain/libthreema/rust-toolchain.toml | 切-d'"'-f2)
rustup target add --toolchain $TOOLCHAIN armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
可以使用 Gradle Wrapper 构建应用程序 APK:
# Play Store variant
./gradlew assembleStore_googleDebug
# Threema Store variant
./gradlew assembleStore_threemaDebug
默认情况下不会构建通用 apk。如果需要通用 apk,请使用 -PbuildUniversalApk
也建造了。标志 -PnoAbiSplits 可用于跳过构建特定于 abi 的 apk,并且仅
构建一个通用的 apk。
NOTE: Threema for Android 是在 Linux 机器上开发的,我们无法提供任何 在 macOS、Windows 或其他操作系统上构建的帮助。
通过Android Studio
该项目可以导入到Android Studio中。 要将其构建并将其部署到设备,请单击绿色的“播放”图标。
故障排除
NDK 未安装
如果在构建Threema时出现以下错误:
原因1:org.gradle.api.InvalidUserDataException:未安装NDK
...然后确保您已安装正确版本的 NDK (如定义
通过 ndkVersion 中的 app/build.gradle.kts)。在 Android Studio 中:设置 >
语言和框架 > Android SDK > SDK 工具。
Testing
通过命令行
运行单元测试:
./gradlew testNoneDebug
运行集成测试(连接设备或模拟器):
./gradlew connectedNoneDebugAndroidTest
请注意,集成测试在与“真实”应用程序相同的应用程序环境中运行, 因此数据丢失是可能的。例如,如果集成测试删除了您的 Threema ID 为了测试备份恢复过程,将Threema ID 您的“真实”应用程序也可能消失(如果它是使用相同的签名密钥签名的)。 最好只在非生产设备或非生产设备上运行集成测试 模拟器。
通过Android Studio
您还可以通过 Android Studio 运行测试。
Reproducible 构建
关于如何重现构建过程的说明用于发布官方 Threema 应用程序可以在以下位置找到: threema.com/open-source/reproducible-builds/.
Code 组织/架构
在深入研究代码库之前,您应该阅读 密码学 Whitepaper 了解设计理念。
与核心功能相关的代码(e.g.,连接到聊天服务器,
加密消息等)可以在
domain/src/main/java/ch/threema/ 目录。
实际 Android 应用程序的代码位于
app/src/main/java/ch/threema/ 目录。
非特定于 Threema 的通用代码位于
common/src/main/java/ch/threema/ 目录。
Translating
我们在 Crowdin 上管理我们的应用程序翻译。如果您有兴趣
改进翻译,或者如果您想将 Threema 翻译为新的
语言,请联系我们 support at threema dot ch。