前言
今天嘗試了下把 ShadowsockAndroid 工程自主編譯打包, 走了很多彎路, 試了好久才成功. 最后回過頭來看, 其實(shí)也很簡單.
前提條件
- Android系統(tǒng)6.0+的手機(jī)(Android SDK >= 23)
- 你的電腦已裝好 Git 環(huán)境
- 你的電腦已裝好 Rust 環(huán)境
步驟
檢查 Rust 環(huán)境
在命令行中運(yùn)行 rustup --version
, 應(yīng)該能得到如下的提示
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 配置國內(nèi)鏡像
- 添加環(huán)境變量
# 中國科學(xué)技術(shù)大學(xué)
RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
將以上內(nèi)容放到你的 bash_profile
中就可以了 (Windows 的話, 加到環(huán)境變量中就行)
- 修改 cargo 的配置文件
找到 ~/.cargo/config
文件(如果沒有, 就自己創(chuàng)建一個(gè), 同理, 在 Windows 上就是相應(yīng)的位置, 個(gè)人目錄下的 .cargo/config
), 加入以下內(nèi)容
[source.crates-io]
replace-with = 'ustc'
# 中國科學(xué)技術(shù)大學(xué)
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
更新 Rust
這一步應(yīng)該也不是必要, 根本實(shí)際情況, 自行判斷吧
命令行中運(yùn)行如下命令:
更新 rustup 自身
rustup self update
更新 rust
rustup update
Clone ShadowSocks
克隆 ShadowSocks
git clone https://github.com/shadowsocks/shadowsocks-android.git
倉庫的依賴別忘了更新
cd shadowsocks-android
git submodule update --init --recursive
添加 rust target
在 shadowsocks-rust 中添加target, 運(yùn)行以下兩個(gè)命令:
cd core/src/main/rust/shadowsocks-rust
rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android
編譯 ShadowSocks
用 Android Studio 打開工程 shadowsocks-android , 聯(lián)接手機(jī).
這里要注意一點(diǎn), shadowsocks-android 需要 JDK 11.
如果你的本機(jī)就是 JDK 11 , 那無事.
如果你的電腦是其它版本, 那么你可以直接替換(重新安裝)本機(jī) JDK 為 11.
同時(shí)還有一種方法, 在 Android Studio 中的工程設(shè)置中, 選擇 Android Studio 中內(nèi)置的 JDK 11.
直接開始編譯吧.
理論上, 應(yīng)該可以成功了.