flutter 打包mac程序 dmg教程

? 前提條件

  1. ? 你已經在 macOS 上安裝了 Android Studio + Flutter SDK。

  2. ? Flutter 支持 macOS 構建。

  • 運行下面命令確認是否支持:

    ```Plain Text bash 復制編輯 flutter doctor

---## 🧱 第一步:啟用 macOS 支持如果是新項目,執行以下命令添加 macOS 支持:

Plain Text bash 復制編輯 flutter create .

或者,確保 `macos/` 目錄已經存在。---## 🛠 第二步:設置 macOS 工程(可選)你可以修改 `macos/Runner.xcworkspace` 下的設置,比如:- 圖標:`macos/Runner/Assets.xcassets/AppIcon.appiconset/`- 應用名稱等:`macos/Runner/Info.plist`---## 🏗 第三步:構建 macOS 程序### ? Release 模式構建

Plain Text bash 復制編輯 flutter build macos

構建成功后,會生成一個可運行的 `.app` 包:📁 路徑:

Plain Text swift 復制編輯 build/macos/Build/Products/Release/YourApp.app ```

你可以直接雙擊運行,或右鍵 -> 顯示包內容,查看內部結構。

創建create_dmg.sh腳本

腳本完整內容如下
?

#!/bin/bash# 1.打包 flutter build macos
# 2.授予權限 chmod +x create_dmg.sh# 定義源目錄
SOURCE_DIR="./build/macos/Build/Products/Release/"# 查找第一個 .app 文件
SOURCE_APP_PATH=$(find "$SOURCE_DIR" -maxdepth 1 -type d -name "*.app" | head -n 1)# 檢查是否找到了 .app 文件
if [ -z "$SOURCE_APP_PATH" ]; thenecho "No .app file found in $SOURCE_DIR"exit 1
fi# 設置輸出 DMG 路徑
OUTPUT_DMG_PATH="$SOURCE_DIR"$(basename "$SOURCE_APP_PATH" .app).dmg# 創建 DMG 文件
echo "Creating DMG from $SOURCE_APP_PATH to $OUTPUT_DMG_PATH..."# hdiutil打包詳細參數如下
# `-volname`: 安裝時掛載的名字(一般和 app 一樣)
#`-srcfolder`: 你的 `.app` 路徑
#`-format UDZO`: 壓縮格式(推薦使用)
# `-ov`: 允許覆蓋已有文件
# 輸出路徑是 `.dmg` 文件最終保存的位置
hdiutil create -volname "$(basename "$SOURCE_APP_PATH")" \-srcfolder "$SOURCE_APP_PATH" \-ov -format UDZO "$OUTPUT_DMG_PATH"echo "DMG created successfully at $OUTPUT_DMG_PATH"

注意給腳本程序增加權限

chmod +x create_dmg.sh

點擊執行腳本

執行結果

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

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

相關文章

鴻蒙開發-動畫

1. 動畫-動畫特效 // 定義接口 (每個列表項的數據結構) interface ImageCount {url: stringcount: number }// 需求1: 遮罩層顯隱 透明度opacity 0-1 層級zIndex -1~99 // 需求2: 圖片縮放 縮放scale 0-1Entry Component struct Index {// 基于接口, 準備數據State images…

js:循環查詢數組對象中的某一項的值是否為空

循環檢查 selinfo 數組中的每一個對象,判斷其中的 po_qty 和 price 是否為空(null、undefined 或空字符串 ""),可以使用以下幾種方法: 方法1:使用 forEach 循環檢查每一項 const selinfo this.…

x-cmd install | jellex - 用 Python 語法在終端里玩轉 JSON 數據!

目錄 核心功能與特點安裝優勢亮點適用場景 還在為命令行下處理 JSON 數據煩惱嗎?jellex 來了!它是一款基于終端的交互式 JSON 和 JSON Lines 數據處理工具,讓你用熟悉的 Python 語法,輕松過濾、轉換和探索 JSON 數據。 核心功能與…

4月份到9月份看6本書第二天【ERP與企業管理】

ERP與企業管理 1-11章全面介紹了ERP的基本原理、物料管理功能、計劃功能、生產和采購管理功能、效益以及實施和應用ERP為企業帶來的深層次的變化。 第12章討論了軟件系統的選型。 第13章介紹了ERP實施和運行管理的方法 第14章介紹了國際上廣泛使用的ERP實施應用的評估方法。…

Opencv計算機視覺編程攻略-第十三節 跟蹤視頻中的物品

這是opencv系列的最后一節,主要學習視頻序列,上一節介紹了讀取、處理和存儲視頻的工具,本文將介紹幾種跟蹤圖像序列中運動物體的算法。可見運動或表觀運動,是物體以不同的速度在不同的方向上移動,或者是因為相機在移動…

001 藍橋杯嵌入式賽道備賽——基礎

個人筆記,不扭扭捏捏,一口氣到位。方便自己也方便大家 00 時鐘線 cubeMX已經完成了大多數工作 01 LED(GPIO輸出) 在使用LED的時候先把SN74HC573鎖存器PD2置高電平,然后寫入LED所要的高低電平,然后置PD2低…

案例-索引對于并發Insert性能優化測試

前言 最近因業務并發量上升,開發反饋對訂單表Insert性能降低。應開發要求對涉及Insert的表進行分析并提供優化方案。 ??一般對Insert 影響基本都在索引,涉及表已按創建日期做了分區表,索引全部為普通索引未做分區索引。 優化建議: 1、將UNIQUE改為HASH(64) GLOBAL IND…

【技術文章的標準結構與內容指南】

技術文章的標準結構與內容指南 技術文章是傳遞專業知識、分享實踐經驗的重要媒介。一篇高質量的技術文章不僅能夠幫助讀者解決問題,還能促進技術交流與創新。以下是技術文章通常包含的核心內容與結構指南。 1. 標題 一個好的技術文章標題應當: 簡潔明…

豪越消防一體化安全管控平臺:構建消防“一張圖”新生態

在城市化進程加速、建筑規模與功能日益復雜的當下,消防救援工作面臨著諸多嚴峻挑戰。火災隱患如同隱藏在暗處的“定時炸彈”,廣泛分布于城市的各個角落,想要快速、精準定位絕非易事。信息傳遞的不順暢更是雪上加霜,導致救援效率大…

重學Redis:Redis常用數據類型+存儲結構(源碼篇)

一、SDS 1,SDS源碼解讀 sds (Simple Dynamic String),Simple的意思是簡單,Dynamic即動態,意味著其具有動態增加空間的能力,擴容不需要使用者關心。String是字符串的意思。說白了就是用C語言自己封裝了一個字符串類型&a…

抖音IP屬地可以隨便選擇地址嗎?深度解析

在當今社交媒體盛行的時代,抖音作為受歡迎的短視頻平臺之一,其IP屬地顯示功能引發了廣泛關注。許多用戶好奇:抖音的IP屬地是否可以隨意更改?是否存在方法可以“偽裝”自己的位置??本文將深入探討這一話題。 一、抖音I…

SOLID原則詳解:提升軟件設計質量的關鍵

前言 關于設計原則SOLID具體指的是什么,怎么理解這些設計原則,我覺得有必要記錄一筆,畢竟這個設計原則確實經常在關鍵技術文檔中提及,在編程思想中提及,在日常的開發中使用,但是對我來說,似乎知…

如何使用 ONLYOFFICE 恢復之前的文件版本?

如何使用 ONLYOFFICE 恢復之前的文件版本? https://www.onlyoffice.com/blog/zh-hans/2023/04/how-to-use-version-history

簡簡單單實現一個Python+Selenium的自動化測試框架

什么是Selenium? Selenium是一個基于瀏覽器的自動化測試工具,它提供了一種跨平臺、跨瀏覽器的端到端的web自動化解決方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE:Firefox的…

Java設計模式之中介者模式:從入門到架構級實踐

一、什么是中介者模式? 中介者模式(Mediator Pattern)是一種行為型設計模式,其核心思想是通過引入一個中介對象來封裝多個對象之間的交互關系。這種模式將原本復雜的網狀通信結構轉換為星型結構,類似于現實生活中的機…

Trinity三位一體開源程序是可解釋的 AI 分析工具和 3D 可視化

一、軟件介紹 文末提供源碼和程序下載學習 Trinity三位一體開源程序是可解釋的 AI 分析工具和 3D 可視化。Trinity 提供性能分析和 XAI 工具,非常適合深度學習系統或其他執行復雜分類或解碼的模型。 二、軟件作用和特征 Trinity 通過結合具有超維感知能力的不同交…

LeetCode 熱題 100_單詞拆分(86_139_中等_C++)(動態規劃)

LeetCode 熱題 100_單詞拆分(86_139) 題目描述:輸入輸出樣例:題解:解題思路:思路一(動態規劃): 代碼實現代碼實現(思路一(動態規劃)&a…

VM虛擬機安裝及Ubuntu安裝配置

VM虛擬機安裝及Ubuntu安裝配置 1、VM虛擬機安裝2、創建虛擬機3、Ubuntu系統安裝4、編譯環境配置4.1 、Ubuntu和 Windows文件互傳 文件互傳4.1.1、 開啟Ubunt下的FTP服務 4.2、 Ubuntu下NFS和SSH服務開啟4.2.1、 NFS服務開啟4.2.2、 SSH服務開啟 4.3、 交叉編譯器安裝4.3.1 安裝…

【KWDB 創作者計劃】_產品技術解讀_1

【KWDB 創作者計劃】_產品技術解讀_1 一、存儲引擎:高性能混合存儲架構1. 存儲模型設計2. 存儲壓縮與編碼3. 持久化策略二、KWDB 組件源碼解析1. 核心模塊分層架構2. 關鍵組件源碼剖析三、KWDB 特性代碼通讀1. 實時分析能力(Real-Time OLAP)2. 混合負載隔離(HTAP)3. 智能索…

高速電路中的電阻、電容的選型及應用

2.1 電阻的應用 2.1.1 與電阻相關的經典案例 如果說芯片是電路的骨架,那么電阻就是在芯片之間起連接作用的關節。電阻的阻值、布放位置等,對設計的成功起著至關重要的作用。 【案例2.1】串聯電阻過大,導致板間告警失敗 某產品由業務板和主…