Telegram-X - Telegram Xのメインリポジトリ—Android用の公式の代替Telegramクライアント。固定された問題の25,000ドルのコンテストをチェックしてください。

(The main repository of Telegram X — official alternative Telegram client for Android. Check out the $25,000 contest in the pinned issue.)

Created at: 2021-08-18 01:09:25
Language: Java
License: GPL-3.0

Telegram X —TDLibに基づく洗練された実験的なTelegramクライアント。

テレグラムX

これは、 Telegram APITDLibを介したMTProtoセキュアプロトコルに基づく、Telegramメッセンジャーの公式の代替Androidクライアントの完全なソースコードとビルド手順です。

ビルド手順

前提条件

  • 少なくとも5,34GBの空きディスク容量:ソースコード用に487,10MB、すべてのバリアントをビルドした後に生成されたファイル用に約4,85GB
  • 4GBのRAM
  • macOSまたはLinuxベースのオペレーティングシステム。Windowsプラットフォームは、ネイティブの依存関係を構築するスクリプトではまだサポートされていませんが、動作させるためにパッチを適用するのは簡単な場合があります。

マックOS

  • 自作
  • LFS、wget、sedを使用したgit:
    $ brew install git git-lfs wget gsed && git lfs install

Ubuntu

  • LFSを使用したgit:
    # apt install git git-lfs
  • 以前にインストール
    $ git lfs install
    していない場合は、現在のユーザーに対して実行します
    git-lfs

建物

  1. $ git clone --recursive --depth=1 --shallow-submodules https://github.com/TGX-Android/Telegram-X tgx
    —サブモジュールを使用してTelegramXのクローンを作成します
  2. --recursive
    フラグを忘れた場合は、ディレクトリに
    cd
    入れて:
    tgx
    $ git submodule init && git submodule update --init --recursive --depth=1
  3. keystore.properties
    次のプロパティを使用して、ソースツリーの外部にファイルを作成します。
    keystore.file
    :キーストアファイルへの絶対パス:キー
    keystore.password
    ストアのパスワード:
    key.alias
    アプリの署名に使用されるキーエイリアス
    key.password
    :キーパスワード。
    警告:このファイルを安全に保管し、あなた以外の誰もがこのファイルにアクセスできないようにしてください。本番ビルドの場合、物理的な盗難による被害を回避するために、ホームフォルダーを暗号化した別のユーザーを使用できます。
  4. $ cd tgx
  5. 実行
    $ scripts/./setup.sh
    し、指示に従ってください
  6. Telegram Xが使用しているものとは異なるパッケージ名を指定した場合は、Firebaseをセットアップし、必要
    google-services.json
    に応じて適切なものに置き換えてください
    app.id
  7. これで、 Android Studioを使用してプロジェクトを開くか、コマンドラインから手動でビルドできます
    ./gradlew assembleUniversalRelease

利用可能なフレーバー

  • arm64
    arm64-v8aビルドを(Lollipop)に
    minSdkVersion
    設定
    21
  • arm32
    armeabi-v7aビルド
  • x64
    :(Lollipop)に設定されたx86_64ビルド
    minSdkVersion
    21
  • x86
    x86ビルド
  • universal
    :すべてのプラットフォームのネイティブバンドルを含むユニバーサルビルド。

パブリックビルドの複製

公式APK内に追加のソースコードが挿入されていないことを確認するには、Ubuntu 21.04を使用し、次の要件に準拠する必要があります。

  1. vk
    次の場所にあるホームディレクトリで呼び出されるユーザーを作成します。
    /home/vk
  2. tgx
    リポジトリのクローンを作成する
    /home/vk/tgx
  3. 確認したい特定のコミットを確認してください
  4. マージされていないプルリクエストを含むビルドのまれなケースでは、パブリッシャー
    fetchPr
    squashPr
    タスクによって実行されるアクションに従う必要があります
  5. cd
    tgx
    フォルダに入れて依存関係をインストールします。
    # apt install $(cat reproducible-builds/dependencies.txt)
  6. 前のセクションのビルド手順をフォローアップします
  7. 走る
    $ apkanalyzer apk compare --different-only <remote-apk> <reproduced-apk>
  8. 署名ファイルとメタデータのみが異なる場合、ビルドの再現は成功します。

将来的には、ビルドの再現が容易になる可能性があります。関連するPRウェルカムTODOのリストは次のとおりです。

  • プロジェクトパスは結果の
    .so
    ファイルに影響を与えてはならないため、ユーザーとプロジェクトの場所の要件を削除できます
  • macOSでネイティブバイナリをビルドする場合、 ELFセクションはLinuxバージョンのNDKで
    .comment
    ビルドされたセクションとは異なります。破損などの副作用なしに削除または決定論的にする必要があります(またはNDKチームに報告する必要がありますか?)
    native-debug-symbols.zip
  • --build-id=0x<commit>
    代わりに使用することをお勧めします
    --build-id=none
  • 同じキーストアが適用され、内部APKコンテンツが生成されても、コールドAPKビルドのチェックサムは常に異なります。可能であれば、実際の原因を調査して修正する必要があります。コールドビルドを生成するには、と
    を呼び出します。警告:これにより、一部のサブモジュール( ffmpeglibvpxwebpopusExoPlayer)内の変更もリセットされます
    $ scripts/./reset.sh
    $ scripts/./setup.sh --skip-sdk-setup

  • ローカルプルリクエストをPublisherからこのリポジトリ内のスクリプトにスカッシュマージして、それらを含むビルドの再現を容易にします。

PS:Dockerはこれらのタスクを隠すだけであり、公開されているすべてのAPKを使用してビルドする必要があるため、オプションとは見なされません。

サイドロードされたAPKの検証

Telegram X APKをどこかからダウンロードし、悪意のあるソースコードが挿入されていない元のAPKであるかどうかを簡単に確認したい場合は、ダウンロードしたAPKファイルのチェックサム(

SHA-256
SHA-1
または)を取得して、既知のTelegramXに対応するかどうかを確認する必要があります。バージョン。
MD5

APKのSHA-256を取得するには:

  • $ sha256sum <path-to-apk>
    Ubuntu
  • $ shasum -a 256 <path-to-apk>
    macOS

取得したら、特定のチェックサムのコミットを見つける3つの方法があります。

  • チェックサムをに送信する
    @tgx_bot
  • でチェックサムを検索しています
    @tgx_log
    。このURL形式を使用すると、Telegramクライアントをインストールする必要なしにこれを行うことができます:(
    https://t.me/s/tgx_log?q={checksum}
    クリックして動作を確認してください)。注:未公開のビルドは、この方法では検証できません。

ライセンス

Telegram X
GNU General PublicLicensev3.0の条件の下でライセンスされています。

詳細については、LICENSEファイルを参照してください。

コンポーネントのライセンスとそれが依存するサードパーティの依存関係は異なる場合があり

LICENSE
ます。対応するフォルダのファイルを確認してください。

サードパーティの依存関係

Telegram Xで使用されるサードパーティコンポーネントのリストは、ここにあります。さらに、ここここなど、使用されているサードパーティコンポーネントの特定のコミットを確認できます。

貢献

TelegramXは貢献を歓迎します。最初のプルリクエストを作成する前に、プルリクエストテンプレート寄稿者向けガイドを確認して、TelegramXの内部について詳しく学んでください。

通常のユーザーでTelegramXの問題が発生した場合、解決策を探すのに最適な場所はTelegramXチャットです。これは4,000人を超えるメンバーがいるコミュニティです。このリポジトリを使用して質問をしないでください。Telegramに一般的な問題がある場合は、FAQを参照するか、 Telegramサポートに連絡してください。