編譯Linux版本的RustDesk
備注:官方文檔上,一邊都是基于sciter,這個在后面已經不建議使用了,但是依然可以編譯
剛開始的時候看官方的文檔,涉及的東西比較多,也搞的一頭霧水,通過B站上一個視頻,可以通過CI/CD來編譯,以及act本地試試(最終放棄,大概需要下載大幾十G的容器下來)。最終總算明確了方向,可以用自動化流水線來編譯。直接看CI/CD的腳本文件
文件在.github/workflows目錄下,重點研究 bridge.yml 和flutter-build.yml 這兩個文件。
bridge
flutter 調用rust,這里用到了rust_bridge的功能
第一步需要把ffi相關的文件構建出來。參考bridge.yml文件
先安裝必備的軟件
安裝特定版本的rust 和flutter
這里用的rust? 1.75.0 版本,flutter 是3.22.3版本
注意環境變量替換成上面的版本信息
到這里正常應該都沒有問題
最終應該會生成這些新的文件
編譯rust-flutter-linux版本
找到對應的節點
注意這里的vcpkg-triplet后面安裝的時候要用到
先安裝這兩個,libva-dev然后執行
$VCPKG_ROOT/vcpkg install --triplet x64-linux --x-install-root "$VCPKG_ROOT/installed"
? 最終看看vcpkg的根目錄里面 installed目錄是否安裝ffmpeg,yuv等包(代碼根目錄里面的vcpkg)
安裝必備的軟件
刪除掉
到這里編譯完成了,就可以編譯flutter了
執行python3 ./build.py --flutter --skip-cargo?
其實就是flutter build linux --release
等待結果,這樣就編譯出rustdesk linux 的flutter版本了
編譯Android版本的RustDesk
參考編譯Linux版本,找到對應的Android版本節點,按步驟來
執行./flutter/build_android_deps.sh arm64-v8a
環境變量在上面找到替換
最終就編譯出so文件,編譯玩了,要拷貝到flutter的Android目錄jni里面,這樣打包。有了librustdesk.so文件,還需要c++的so
注意環境變量,根據自己的系統替換。
編譯apk,最后size 應該是23M左右,我用的是1.4.0分支。
注意release的時候是需要前面的,目前的腳本里面是release 里面用了debug
也可以構建自己的release 簽名密鑰
先用key-tool 生產一個upload-keystore.jks文件。然后創建一個key .properties文件
內容如下
在flutter的build .gardle文件中
確定這里是release,等待最終編譯結束,可以用簽名檢查工具檢查一下。
備注:
1. Rustdesk被詐騙分子利用了,只能部署自己的私有遠程服務器,安裝在手機上會被攔截。酌情安裝。
2. 這里假設讀者已經入門了,比如flutter國內源設置,rust國內源,以及flutter 編譯android安裝設置阿里源。