readme: update compilation guide (#39)

This commit is contained in:
任天天 2024-02-26 09:56:14 +08:00 committed by GitHub
parent c629ebc259
commit e17d7ccace
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 45 deletions

View File

@ -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> 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. **NOTE: For Windows users, please consider using a Linux VM (such as WSL2) or dual booting.**
Consider using a Linux VM or dual booting.**
**Important:** Environment:
1. Checkout all submodules - A Linux distribution based on Debian (e.g. Ubuntu)
``` - Native tools: `gcc` `go` `make` `cmake` `ninja` `yasm`
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) ```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 Build:
apt install -y golang-1.16 yasm
```
4. Install Rust and its stdlib for Android ABIs, and add environment variables for it. 1. Checkout submodules
It is recommended to use the official script, otherwise you may not find rustup. ```shell
git submodule update --init --recursive
```
```shell 2. Build native dependencies:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y ```shell
echo "source \$HOME/.cargo/env" >> $HOME/.bashrc && source $HOME/.cargo/env ./run init libs
```
rustup install $(cat ss-rust/src/main/rust/shadowsocks-rust/rust-toolchain) 3. Build external libraries and native code:
rustup default $(cat ss-rust/src/main/rust/shadowsocks-rust/rust-toolchain) ```shell
rustup target install armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android ./run libs native
``` ```
This step can be skipped if you want to build a `mini` release. 4. Fill out `TELEGRAM_APP_ID` and `TELEGRAM_APP_HASH` in **local.properties** (from [Telegram Developer](https://my.telegram.org/auth))
5. Build native dependencies: `./run init libs` 5. Replace **TMessagesProj/google-services.json** if you want FCM to work.
6. Build external libraries and native code:
For full release: 6. Replace **release.keystore** with yours and fill out `ALIAS_NAME`, `KEYSTORE_PASS` and `ALIAS_PASS` in **local.properties**.
uncomment lines in settings.gradle 7. Build with Gradle:
`./run libs update` ```shell
./gradlew assembleMini<Debug/Release/ReleaseNoGcm>
For mini release: ```
```
./run libs v2ray
./run libs native # libtmessages.so
```
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.
`./gradlew assemble<Full/Mini><Debug/Release/ReleaseNoGcm>`
---- ----
## Compilation with Github Action ## Compilation with GitHub Action
1. Create your own `release.keystore` to replace `TMessagesProj/release.keystore`. 1. Create your own `release.keystore` to replace `TMessagesProj/release.keystore`.

View File

@ -417,6 +417,12 @@ android {
resources { resources {
excludes += ['/fabric/**', '/META-INF/*.version', '/META-INF/*.kotlin_module', '/META-INF/native-image/**', '/builddef.lst', '/*.txt', '/DebugProbesKt.bin', '/okhttp3/internal/publicsuffix/NOTICE'] 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" namespace "org.telegram.messenger"
lint { lint {