ShadowsocksAndroid工程的編譯打包

## 前言

今天嘗試了下把 ShadowsockAndroid 工程自主編譯打包, 走了很多彎路, 試了好久才成功。 最後回過頭來看, 其實也很簡單。

## 前提條件

* Android系統6。0+的手機(Android SDK >= 23)

* 你的電腦已裝好 Git 環境

* 你的電腦已裝好 Rust 環境

## 步驟

### 檢查 Rust 環境

在命令列中執行 `rustup ——version` , 應該能得到如下的提示

```bash

rustup ——version

rustup 1。24。3 (ce5817a94 2021-05-31)

info: This is the version for the rustup toolchain manager, not the rustc compiler。

info: The currently active `rustc` version is `rustc 1。54。0-nightly (dbe459ded 2021-06-02)`

```

### 給 Rust 配置國內映象

* 新增環境變數

```bash

# 中國科學技術大學

RUSTUP_DIST_SERVER=https://mirrors。ustc。edu。cn/rust-static

RUSTUP_UPDATE_ROOT=https://mirrors。ustc。edu。cn/rust-static/rustup

```

將以上內容放到你的 `bash_profile` 中就可以了 (Windows 的話, 加到環境變數中就行)

* 修改 cargo 的配置檔案

找到 `~/。cargo/config` 檔案(如果沒有, 就自己建立一個, 同理, 在 Windows 上就是相應的位置, 個人目錄下的 `。cargo/config`), 加入以下內容

```yml

[source。crates-io]

replace-with = ‘ustc’

# 中國科學技術大學

[source。ustc]

registry = “git://mirrors。ustc。edu。cn/crates。io-index”

```

### 更新 Rust

這一步應該也不是必要, 根據實際情況, 自行判斷吧

命令列中執行如下命令:

更新 rustup 自身

```bash

rustup self update

```

更新 rust

```bash

rustup update

```

### Clone ShadowSocks

克隆 ShadowSocks

```bash

git clone https://github。com/shadowsocks/shadowsocks-android。git

```

倉庫的依賴別忘了更新

```bash

cd shadowsocks-android

git submodule update ——init ——recursive

```

### 新增 rust target

在 shadowsocks-rust 中新增target, 執行以下兩個命令:

```bash

cd core/src/main/rust/shadowsocks-rust

```

```bash

rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android

```

### 編譯 ShadowSocks

用 Android Studio 開啟工程 shadowsocks-android , 連線手機。

這裡要注意一點, shadowsocks-android 需要 JDK 11。

如果你的本機就是 JDK 11 , 那無事。

如果你的電腦是其它版本, 那麼你可以直接替換(重新安裝)本機 JDK 為 11。

同時還有一種方法, 在 Android Studio 中的工程設定中, 選擇 Android Studio 中內建的 JDK 11。

直接開始編譯吧。

理論上, 應該可以成功了。