如何編譯RustDesk(Unbuntu 和Android版本)

編譯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安裝設置阿里源。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90731.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring中的循環依賴:解密、破局與架構啟示

> 當兩個Bean緊緊相擁,Spring容器卻陷入死鎖——這是Java開發者的經典噩夢 某電商平臺凌晨上線時突然宕機,日志里反復滾動著`BeanCurrentlyInCreationException`的報錯。經排查,**優惠券服務與庫存服務在初始化時相互依賴**,形成致命閉環。這個價值百萬的故障案例,揭開…

DataFrame?(數據框)

一種二維表格型數據結構,類似于電子表格(如 Excel)或 SQL 表,由行(記錄)?和列(字段)?組成。它是數據分析、機器學習和科學計算中最常用的數據結構之一,尤其在 ?Python…

B站視頻評論數據爬取

爬取B站視頻評論數據爬取與分析 如果只要單純的腳本可以直接看項目結構里的b_comments.py 一、技術架構 1、環境配置 Python 3.8PyCharm 2、模塊配置 requests:用于發送HTTP請求time:用于處理時間相關的操作csv:用于讀寫CSV文件json&#xff…

OpenAI最新大模型GPT-4o體驗之Code Copilot AI編程大模型

一、前言GPT-4o("o"代表"全能")具備處理各種文本、聲音和圖像資料的能力,能夠輸出多種格式的文本、聲音和圖像。GPT-4o 的推出標志著 AI 技術的重大突破。它不再局限于單一媒介,而是首次實現了文本、語音和圖…

社交電商推客系統全棧開發指南:SpringCloud+分潤算法+Flutter跨端

一、推客系統概述與市場背景推客系統(TuiKe System)是一種基于社交關系的營銷推廣平臺,通過用戶分享商品或服務鏈接,實現裂變式傳播和精準營銷。近年來,隨著社交電商的蓬勃發展,推客系統已成為企業獲客的重…

網安-中間件-Redis未授權訪問漏洞

目錄 Redis Redis持久化 動態修改配置 使用反彈連接的情況 常見監聽端口的方式 常見建立反彈連接的方式 流程 Linux crontab cron文件存儲路徑 利用Redis實現攻擊 1.webshell提權案例 2.定時任務shell反彈案例 3.SSH Key getshell案例 ?編輯Redis其他利用方式 …

【c++深入系列】:萬字詳解棧和隊列和deque(附模擬實現的源碼)

🔥 本文專欄:c 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄: 石頭能被水滴穿,不是因為水有多強,而是因為它從未停過。 ★★★ 本文前置知識: 模版 棧 那么棧這個…

速通python加密之RSA加密

RSA加密 RSA加密是一種非對稱加密算法(與AES等對稱加密不同),由羅納德李維斯特(Ron Rivest)、阿迪薩莫爾(Adi Shamir)和倫納德阿德曼(Leonard Adleman)于1977年提出&…

Java BeanUtils 類詳解:作用、語法與示例

一、BeanUtils 的核心作用BeanUtils 是 Apache Commons 和 Spring Framework 提供的工具類,主要用于簡化 JavaBean 的操作。核心功能包括:屬性拷貝:對象間同名屬性自動復制動態訪問:通過字符串名稱操作屬性類型轉換:自…

PyCharm高效開發全攻略

安裝與基礎配置下載PyCharm專業版或社區版(免費)并完成安裝。首次啟動時選擇默認設置或自定義主題、字體大小等界面偏好。配置Python解釋器路徑(推薦使用虛擬環境),確保項目依賴隔離。快捷鍵與導航熟悉核心快捷鍵能大幅…

Pycharm 給 python 程序打包EXE的配置和方法

前言: Python 語言的設計變得越來越簡單,它有很多可以使用的庫,所以尤其在人工智能時代,Python語言被廣泛應用。但是Python語言和windows系統的兼容性稍微偏弱,如何生成windows可以執行的exe文件。是要一個很復雜的配置過程,本文就會做一個介紹。 本文,通過一個Python…

【Linux | 網絡】傳輸層(UDP和TCP)

目錄一、再談端口號1.1 端口號1.2 端口號的范圍劃分1.3 常見知名端口號1.4 netstat 命令1.5 進程與端口號的關系1.6 pidof 命令二、UDP協議2.1 UDP協議段格式2.2 如何理解UDP報頭和UDP報文2.2.1 UDP報頭2.2.2 UDP報文和UDP報文的管理2.2.3 UDP封裝過程2.3 UDP的特點2.4 UDP的緩…

mybatisX的自定義模板生成

在idea中使用mybtais的自定義模板生成,可以幫我們省去很多重復的代碼。 打開一個項目,我們要修改的主要就兩個文件,一個是生成的mapper接口,另一個是xml文件: 相應的mapper接口模板為: package ${mapper…

miniz:一個輕量級、高性能的開源壓縮庫

目錄 1.簡介 2.核心特性 3.基本使用示例 4.與 ZLIB 的對比 5.使用場景 6.注意事項 1.簡介 miniz 是一個輕量級、高性能的開源壓縮庫,專注于提供 ZLIB/GZIP 兼容的壓縮和解壓縮功能。它的核心優勢在于體積小巧(單文件實現)、跨平臺支持和…

Jenkins接口自動化測試(構建)平臺搭建

Python接口自動化測試零基礎入門到精通(2025最新版)自動化測試流程 在進行平臺搭建前,我們首先要問自己:我需要搭建的平臺的功能是什么,要實現什么目標? 在我的理解中,自動化構建平臺的執行流…

Day 22: 復習

機器學習數據處理與降維技術復習總結 前言 經過6天的學習,我們系統地學習了從基礎的Numpy數組操作到高級的降維算法,這些內容構成了機器學習數據預處理的重要知識體系。本文將對這一系列學習內容進行全面復習和總結,幫助大家建立完整的知識…

力扣 hot100 Day56

46. 全排列 給定一個不含重復數字的數組 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 //抄的 class Solution { private:vector<vector<int>>result;vector<int> path; public:void backtracking(vector<int>& nu…

Android 編碼規范全指南

在 Android 開發領域&#xff0c;代碼不僅是功能實現的載體&#xff0c;更是團隊協作與項目迭代的基礎。一套完善的編碼規范&#xff0c;能讓代碼從 “可運行” 升級為 “易維護、可擴展、低風險”。本文基于 Google、Square 等頂尖團隊的實踐經驗&#xff0c;結合國內 Android…

[RPA] Excel中的字典處理

案例1一個Excel文件總共有2個Sheet頁&#xff0c;分別為總表和對照表通過對照表sheet頁&#xff0c;設置價格對照字典對照表循環總表sheet頁&#xff0c;根據循環到的商品名稱&#xff0c;找到對應字典中的價格&#xff0c;并計算出總價總表將總價寫入到Excel表中C列&#xff0…

基于NSGAII優化算法的車間生產調度matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.部分程序 4.算法理論概述 5.參考文獻 6.完整程序 1.程序功能描述 車間生產調度是制造業的核心環節&#xff0c;其目標是在滿足設備約束、工序優先級等條件下&#xff0c;優化多個相互沖突的生產指標&#xff08;如…