这是 Delta Chat 的 Android 客户端。它可在 F-Droid 和 Google Play 商店上使用。也可以从 get.delta.chat 下载 APK。
核心库及其他常用信息请参考Delta Chat核心库。
有关一般贡献提示,请参阅 CONTRIBUTING.md。
查看deltachat-android时,请确保还查看子项目deltachat-core-rust :
$ git clone --recursive https://github.com/deltachat/deltachat-android
执行此操作,或稍后通过git submodule update --init --recursive
执行此操作。如果您在主目录中执行此操作,则会生成文件夹~/deltachat-android
这很好。该存储库包含flake.nix
文件中描述的 Nix 开发环境。如果您没有安装 Nix,最简单的方法是使用确定 Nix 安装程序,它会在安装 Nix 时启用开箱即用的 Flakes 功能,并且可以在不需要时使用/nix/nix-installer uninstall
彻底卸载不再了。
设置好具有 Flakes 功能的 Nix 后,启动开发环境 shell:
nix develop
Nix 开发环境包含带有交叉编译工具链的 Rust 和 Android SDK。
要构建 APK,请运行以下 2 个步骤。请注意,对于所有架构,第一步可能需要一些时间来构建。您可以选择阅读ndk-make.sh
脚本中的第一个注释块,以获取有关如何构建特定架构的指针。
$ scripts/ndk-make.sh
$ ./gradlew assembleDebug
生成的 APK 文件可以在build/outputs/apk/gplay/debug/
和build/outputs/apk/fat/debug/
中找到。
构建 APK 的另一种方法是将提供的Dockerfile
与 Docker 或 Podman 一起使用。 Podman 是 Docker 的直接替代品,不需要 root 权限。
如果您还没有设置 Docker 或 Podman,请阅读下面如何设置 Podman。如果您不想使用 Docker 或 Podman,请阅读如何手动安装构建环境。
首先,通过运行构建图像deltachat-android
podman build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
或者
docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
然后,运行图像:
podman run --userns=keep-id -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
或者
docker run -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
您可以使用 Ctrl+D 离开容器,或者输入exit
并使用docker start -ia deltachat
或podman start -ia deltachat
重新输入容器。
在容器内,安装工具链并构建本机库:
deltachat@6012dcb974fe:/home/app$ scripts/install-toolchains.sh
deltachat@6012dcb974fe:/home/app$ scripts/ndk-make.sh
然后,构建一个 APK:
deltachat@6012dcb974fe:/home/app$ ./gradlew assembleDebug
在容器内执行./gradlew assembleDebug
失败,并显示The SDK directory '/home/user/Android/Sdk' does not exist.
:
问题是 Android Studio(在容器外部)自动创建一个文件local.properties
,其内容类似于sdk.dir=/home/username/Android/Sdk
,因此,Gradle-inside-the-container 在/home/username/Android/Sdk
查找 Sdk /home/username/Android/Sdk
,在那里找不到它。你可以:
sdk.dir
开头的行./gradlew assembleDebug
(但是,如果容器内部和外部安装了不同版本,可能会出现不兼容问题)运行映像失败并出现ERRO[0000] The storage 'driver' option must be set in /etc/containers/storage.conf, guarantee proper operation.
:
在 /etc/containers/storage.conf 中,将行: driver = ""
替换为: driver = "overlay"
。您还可以将driver
选项设置为其他内容,只需将其设置为某个内容即可。请在此处阅读有关可能的选项的信息。
到目前为止,这些指令仅在 Manjaro 机器上进行了测试。如果有什么不起作用,请打开一个问题。
首先,安装 Podman。
然后,如果您想在没有 root 的情况下运行 Podman,请运行:
sudo touch /etc/subgid
sudo touch /etc/subuid
sudo usermod --add-subuids 165536-231072 --add-subgids 165536-231072 yourusername
(用yourusername
替换您的用户名)。请参阅 https://wiki.archlinux.org/index.php/Podman#Rootless_Podman 了解更多信息。
手动设置构建环境:
然后,在这两种情况下,通过执行scripts/install-toolchains.sh
使用 rustup 和 Rust 工具链进行交叉编译来安装 Rust。
然后,配置ANDROID_NDK_ROOT
环境变量以指向 Android NDK 安装目录,例如将其添加到.bashrc
中:
export ANDROID_NDK_ROOT= ${HOME} /Android/Sdk/ndk/[version] # (or wherever your NDK is) Note that there is no `/` at the end!
export PATH= ${PATH} : ${ANDROID_NDK_ROOT} /toolchains/llvm/prebuilt/linux-x86_64/bin/: ${ANDROID_NDK_ROOT}
之后,调用根目录下的scripts/ndk-make.sh
来构建core-rust。然后在 Android Studio 中运行该项目。该项目需要 API 25。
如果有机会,就是这样:) - 如果没有,请阅读如何设置适当的开发环境。
Android Studio 所需的一些库在 64 位 Linux 机器上可能会丢失[来源],因此对于 Ubuntu 执行$ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
对于 Fedora 执行$ sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686
。
从 https://developer.android.com (android-studio-ide-...-linux.zip) 下载 Android Studio 并解压存档,其中包含一个名为android-studio
文件夹;将此文件夹移动到~/android-studio
。
要首次启动 Android Studio,请打开终端,导航到~/android-studio/bin
,执行./studio.sh
并使用向导中的所有标准值。
Android Studio 现在会询问您是否要打开现有项目;选择“构建”章节中创建的~/deltachat-android
(Android Studio 开始构建项目,但是,在成功之前还缺少一些步骤)。
如果缺少组件,请单击相应的错误消息并安装,例如。所需的 SDK 和“构建工具”(您还应该在“工具/Android/SDK 管理器/SDK 平台”中找到该选项)。现在构建应该会成功 - 但应用程序仍然缺少本机部分。
从 NDK Archives 下载 Android NDK 并解压包含一个名为android-ndk-r23b-linux
的文件夹的存档;将此文件夹移动到~/android-ndk
。
将环境的文件夹路径导出为ANDROID_NDK_ROOT
并将其添加到PATH
。您可以通过将其添加到.bashrc
来实现此目的
export ANDROID_NDK_ROOT= ${HOME} /android-ndk
export PATH= ${PATH} : ${ANDROID_NDK_ROOT} /toolchains/llvm/prebuilt/linux-x86_64/bin/: ${ANDROID_NDK_ROOT}
您不一定需要专用的测试设备。先备份一下当前账号,切换账号可能会出现一些bug。
您可以在模拟设备或真实设备上运行基准测试。您至少需要 Android 9。为了获得更好的基准测试结果,您应该在真实设备上运行基准测试并确保核心在发布模式下编译。
禁用设备上的动画,否则测试可能会失败:在“开发人员选项”中将“窗口动画比例”、“过渡动画比例”和“动画持续时间比例”全部设置为 0x
在 Android Studio 中:“文件”/“将项目与 gradle 文件同步”
在 Android Studio 中:“运行”/“编辑配置”/“+”/“Android Instrumented 测试”:选择特定类或选择“全部在模块中”/“确定”/在工具栏中选择您的配置/单击工具栏中的绿色“运行”按钮用于运行测试
基准测试完成后,您将得到类似MEASURED RESULTS (Benchmark) - Going thorough all 10 chats: 11635,11207,11363,11352,11279,11183,11137,11145,11032,11057
结果。您可以将11635,11207,11363,11352,11279,11183,11137,11145,11032,11057
粘贴到 LibreOffice 电子表格中的单元格中,执行“数据”/“文本到列”,选择,
作为分隔符,点击“确定” ”,并创建一个图表。
对于某些测试,您需要提供实际电子邮件帐户的凭据。您有两种方法可以做到这一点:
(推荐):将它们放入文件 ~/.gradle/gradle.properties (如果不存在则创建它):
[email protected]
TEST_MAIL_PW=youpassword
或者通过环境变量设置它们。
Android 元数据和变更日志使用 Weblate 进行翻译。
当我们在 2019 年从以前的 Telegram-UI 基础移植 Android Signal Messenger 时,许多用户界面类都是基于 Android Signal Messenger 的。同时,许多领域的开发也出现了分歧。
已获得 GPLv3+ 许可,请参阅许可证文件了解详细信息。
版权所有 © 2022 Delta Chat 贡献者。