這是 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.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 貢獻者。