Skip to content

Commit

Permalink
readme: update compilation guide (#39)
Browse files Browse the repository at this point in the history
  • Loading branch information
ruattd authored Feb 26, 2024
1 parent c629ebc commit e17d7cc
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 45 deletions.
82 changes: 37 additions & 45 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,71 +96,63 @@ Nagram is a third-party Telegram client based on [NekoX](https://github.com/Neko

Telegram API manuals: <https://core.telegram.org/api>

MTproto protocol manuals: <https://core.telegram.org/mtproto>
MTProto protocol manuals: <https://core.telegram.org/mtproto>

## Compilation Guide(By NekoX-dev)
## Compilation Guide

**NOTE: Building on Windows is, unfortunately, not supported.
Consider using a Linux VM or dual booting.**
**NOTE: For Windows users, please consider using a Linux VM (such as WSL2) or dual booting.**

**Important:**
Environment:

1. Checkout all submodules
- A Linux distribution based on Debian (e.g. Ubuntu)

```
git submodule update --init --recursive
```

2. Install Android SDK and NDK (default location is $HOME/Android/SDK, otherwise you need to specify $ANDROID_HOME for it)
- Native tools: `gcc` `go` `make` `cmake` `ninja` `yasm`

```shell
sudo apt install gcc golang make cmake ninja-build yasm
```
- Android SDK: `build-tools;33.0.0` `platforms;android-33` `ndk;21.4.7075529` `cmake;3.18.1` (the default location is **$HOME/Android/SDK**, otherwise you need to specify **$ANDROID_HOME** for it)

It is recommended to use [AndroidStudio](https://developer.android.com/studio) to install.
It is recommended to use [Android Studio](https://developer.android.com/studio) to install, but you can also use `sdkmanager`:

3. Install golang and yasm
```shell
sudo apt install sdkmanager
sdkmanager --sdk_root $HOME/Android/SDK --install "build-tools;33.0.0" "platforms;android-33" "ndk;21.4.7075529" "cmake;3.18.1"
```

```shell
apt install -y golang-1.16 yasm
```

4. Install Rust and its stdlib for Android ABIs, and add environment variables for it.
Build:

It is recommended to use the official script, otherwise you may not find rustup.
1. Checkout submodules

```shell
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y
echo "source \$HOME/.cargo/env" >> $HOME/.bashrc && source $HOME/.cargo/env
```shell
git submodule update --init --recursive
```

rustup install $(cat ss-rust/src/main/rust/shadowsocks-rust/rust-toolchain)
rustup default $(cat ss-rust/src/main/rust/shadowsocks-rust/rust-toolchain)
rustup target install armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
```
2. Build native dependencies:
```shell
./run init libs
```

This step can be skipped if you want to build a `mini` release.
3. Build external libraries and native code:
```shell
./run libs native
```

5. Build native dependencies: `./run init libs`
6. Build external libraries and native code:
4. Fill out `TELEGRAM_APP_ID` and `TELEGRAM_APP_HASH` in **local.properties** (from [Telegram Developer](https://my.telegram.org/auth))

For full release:
5. Replace **TMessagesProj/google-services.json** if you want FCM to work.

uncomment lines in settings.gradle

`./run libs update`

For mini release:

```
./run libs v2ray
./run libs native # libtmessages.so
```
6. Replace **release.keystore** with yours and fill out `ALIAS_NAME`, `KEYSTORE_PASS` and `ALIAS_PASS` in **local.properties**.

1. Fill out `TELEGRAM_APP_ID` and `TELEGRAM_APP_HASH` in `local.properties`
2. Replace TMessagesProj/google-services.json if you want fcm to work.
3. Replace release.keystore with yours and fill out `ALIAS_NAME`, `KEYSTORE_PASS` and `ALIAS_PASS` in `local.properties` if you want a custom sign key.
7. Build with Gradle:

`./gradlew assemble<Full/Mini><Debug/Release/ReleaseNoGcm>`
```shell
./gradlew assembleMini<Debug/Release/ReleaseNoGcm>
```

----

## Compilation with Github Action
## Compilation with GitHub Action

1. Create your own `release.keystore` to replace `TMessagesProj/release.keystore`.

Expand Down
6 changes: 6 additions & 0 deletions TMessagesProj/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,12 @@ android {
resources {
excludes += ['/fabric/**', '/META-INF/*.version', '/META-INF/*.kotlin_module', '/META-INF/native-image/**', '/builddef.lst', '/*.txt', '/DebugProbesKt.bin', '/okhttp3/internal/publicsuffix/NOTICE']
}

def lib = "libtmessages.47.so"
pickFirst "lib/x86/$lib"
pickFirst "lib/x86_64/$lib"
pickFirst "lib/armeabi-v7a/$lib"
pickFirst "lib/arm64-v8a/$lib"
}
namespace "org.telegram.messenger"
lint {
Expand Down

0 comments on commit e17d7cc

Please sign in to comment.