玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)

本文以構建 desktop-entry-editor 為例,該項目依賴較為簡單,僅需玲瓏官方文檔中默認提供的基礎運行環(huán)境即可成功構建運行

第一步:前期準備

在終端中執(zhí)行

sudo apt install linglong-builder –no-install-recommends

安裝 ll-builder 工具

玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)

由于推薦安裝依賴較多,此處跳過推薦依賴不進行安裝。如有需要,去除命令中 –no-install-recommends 參數即可

第二步:創(chuàng)建項目

由于需要從源代碼構建玲瓏格式應用,故可以跳過 ll-builder create 操作,無需創(chuàng)建玲瓏對應文件夾,直接在工程源代碼頂層目錄編寫 linglong.yaml 文件即可(可使用官網提供的完整的 模板文件 )。

第三步:編輯 linglong.yaml

version:"1" # linglong.yaml 文件語法的版本package: # 軟件包元信息配置id:com.github.desktop-entry-editor # 軟件包 appid,類似 deb 格式軟件包包名,區(qū)分不同玲瓏格式軟件包name:desktop-entry-editor # 應用名稱version:1.4.6.1 # 軟件包版本kind:app # 軟件包類型,多數應用為 app,基礎環(huán)境和運行時為 runtimedescription:| # 軟件包描述 desktop entry editor fo deepin os.command: # 容器內可執(zhí)行程序啟動命令-/opt/apps/com.github.desktop-entry-editor/files/bin/desktop-entey-editorbase:org.deepin.foundation/23.0.0 # 基礎環(huán)境runtime:org.deepin.Runtime/23.0.1 # 運行時source: # 構建來源kind: local # 由于直接在工程源代碼中構建,此處選擇 local 即可,無需從 git 倉庫拉取代碼build:| # 構建rm -rf build-linglongmkdir -p build-linglong qmake BUILD_VERSION=1.4.6 PREFIX=${PREFIX} LIB_INSTALL_DIR=${PREFIX}/lib/${TRIPLET} INSTALL_ROOT=${PREFIX} -spec Linux-g CONFIG =Qtquickcompiler -o build-linglong desktop-entry-editor.promake -C build-linglong -j$(nproc)make-C build-linglong -j$(nproc) install

以此 linglong.yaml 為例,軟件包元信息按需填寫即可。

由于項目較為簡單,僅需要基礎的 Qt 和 Dtk 環(huán)境即可構建,使用模板文件中所示的 baseruntime 即可。更復雜的構建環(huán)境可參考構建計算器,在構建應用前拉取所需依賴代碼,優(yōu)先構建所需依賴。

理解安裝位置“前綴”

以我們所熟知的方式來理解,一般可執(zhí)行文件需要放到 /usr/bin 文件夾下,在終端嘗試執(zhí)行時才能被找到;.desktop 文件提供了啟動的入口,想在啟動器中看到應用圖標,一般放到 /usr/share/applications 文件夾下;而圖片文件會放到 /usr/share/icons 文件夾中具體的圖標主題及尺寸和分類文件夾下。這其中,/usr 就是所有文件安裝位置的前綴。

根據 GNU 編碼標準,前綴 的默認值一般為 /usr/local;而構建 deb 格式軟件包時,一般會使用 /usr 前綴。

而玲瓏容器啟動時,會將容器內容 files 文件夾掛載至/opt/apps/${appid}文件夾下,故可以近似認為前綴/opt/apps/${appid}/files。以此類推,可執(zhí)行文件的實際位置為 /opt/apps/${appid}/files/bin/可執(zhí)行文件名稱,所以 linglong.yaml 中 command 啟動指令部分也需要如此填寫,而不是常見的 /usr/bin/ 可執(zhí)行文件名稱。

檢查修改工程源代碼

理解了前綴 的概念,就要檢查工程源代碼的安裝位置前綴了。qmake工程中,默認安裝位置前綴一般為 /opt/$${TARGET}文件夾,如可執(zhí)行文件就被在 /opt/$${TARGET}/bin文件夾中。此處可能需要修改 .pro文件,將前綴修改為 /opt/apps/${appid}/files 文件夾,保證玲瓏容器啟動后文件位置正確。

或者如構建 計算器 所示,通過 qmake 參數從外部傳入安裝位置前綴,并在 .pro 文件中解析 ${PREFIX} 以實現控制文件安裝位置。

第四步:構建應用

在工程源代碼頂層目錄(linglong.yaml同級目錄)打開終端,執(zhí)行ll-builder build命令即可。

玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)

首次構建時需下載指定的 base 和 runtime,耗時較長,需要耐心等待

第五步:測試運行應用

在工程源代碼頂層目錄(linglong.yaml同級目錄)打開終端,執(zhí)行ll-builder run –exec 可執(zhí)行程序名稱,可測試在玲瓏容器環(huán)境內啟動應用。

玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)

若找不到可執(zhí)行程序,請檢查工程源代碼中文件安裝位置是否正確。可查看工程頂層目錄下 linglong/output/runtime/files/bin 文件夾中是否生成可執(zhí)行文件。

若啟動應用失敗,參考 文檔 在容器內進行調試。

第六步:導出 layer 文件

在工程源代碼頂層目錄(linglong.yaml同級目錄)打開終端,執(zhí)行ll-builder export命令,即可在目錄中生成${appid}_${version}_${arch}_develop.layer ${appid}_${version}_${arch}runtime.layer 文件。

玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)

第七步:測安裝 layer 文件

在工程源代碼頂層目錄(linglong.yaml 同級目錄)打開終端,輸入 ll-cli install并輸入空格分隔后,將文件夾中的 runtime.layer文件拖入終端,按回車執(zhí)行,將 layer文件安裝至本地玲瓏環(huán)境中。

玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)

安裝成功后,應該可以在啟動器中看到該應用,并進行啟動和使用測試。

玲瓏入門教程:從源代碼開始構建玲瓏格式應用(玲瓏官方網站)

若啟動器中無法找到該應用,請檢查工程源代碼中文件安裝位置是否正確??刹榭垂こ添攲幽夸浵?linglong/output/runtime/entries/share/applications 文件夾中是否生成 .desktop 文件。

若存在啟動失敗情況,可查看對應 .desktop 文件并復制 Exec 字段內容至終端中執(zhí)行,觀察啟動輸出日志。若提示缺少玲瓏對應版本的 base 或 runtime 環(huán)境,需手動執(zhí)行 ll-cli install 環(huán)境名稱/版本號 進行安裝以排除故障(e.g. ll-cli install org.deepin.Runtime/23.0.1)。

總結:

至此從源代碼構建玲瓏格式應用已完成。

本文舉例的項目使用 qmake 構建,依賴簡單,且支持構建時外部傳入 ${PREFIX}設置文件安裝位置,構建為玲瓏格式應用非常簡單。若項目使用 cmake或其他工具構建,同理需在工程內修改安裝前綴,或在 linglong.yaml 構建部分傳入參數進行設置,否則即使構建成功,也會出現容器內無法找到可執(zhí)行文件,或安裝后啟動器沒有圖標等各種問題。

【產品面對面】是 deepin 社區(qū) 2024 年 5 月新推出的專題欄目,在本欄目中,我們將會邀請不同產品的產品經理來跟大家分享交流好玩好用的 deepin 或 Linux 相關應用,產品經理們也會在 deepin 論壇與所有用戶進行交流答疑。

今天分享的文章來自 deepin 社區(qū)商店產品經理,同時也是 deepin 社區(qū)的論壇用戶(忘記、過去),希望大家持續(xù)關注 deepin 論壇專欄活動【產品面對面】。

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部
主站蜘蛛池模板: 李丽莎1分37钞视频最大尺度| 久久国产热这里只有精品| 1000部无遮挡拍拍拍免费视频观看| 欧美亚洲另类在线| 国产女人高潮叫床视频| 久久99精品免费视频| 精品无码国产一区二区三区av| 天干天干天啪啪夜爽爽AV| 亚洲男人的天堂在线| 人与禽交zozo| 无主之花2025韩语中字| 免费无码不卡视频在线观看| 91精品国产9l久久久久| 最近中文字幕国语免费高清6| 国产乱人伦app精品久久| 一二三四日本高清社区5| 欧美特黄三级在线观看| 国产成人做受免费视频| 三级韩国床戏3小时合集| 欧美视频www| 国产好吊妞视频在线观看| 一级美国片免费看| 欧美日韩精品在线| 国产午夜福利在线观看红一片| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品综合麻豆 | 亚洲综合无码一区二区三区| 欧美另类xxxx图片| 成年人性生活免费视频| 亚洲精品国产专区91在线| 黑猫福利精品第一视频| 成人18xxxx网站| 亚洲成人黄色网址| 苍井苍空A免费井线在线观看| 天堂网www天堂在线资源| 亚欧洲精品在线视频免费观看 | 六月婷婷综合激情| 三级视频在线播放| 欧美乱大交xxxxx| 四虎影视www四虎免费| 8050午夜网| 新人本田岬847正在播放|