程式閃一下 Go 程式在 macOS 上的打包功能

2021-10-16 06:48:37 字數 2683 閱讀 5069

關於這個端到端的解決方案的主題還有其他很多的指導文章,有的講的比我想要做的內容多很多,有的又是採用不同的方式,而我想呈現給你的是如何將檔案打包的過程。

要求:你必須要有乙個 macos。此方法不會在 windows 或者 linux 上生效。事實上,它也可能生效,但是你必須要手動或者借助某些瘋狂的工具來製作和 macos 相關的東西,比如 dmg 或者.ds_store檔案。

為了最好的效果,將圖示儲存為 1024x1024 解析度的透明 png 檔案。

如下為一些示例:

當準備好大圖示之後,你需要將它儲存成不同的尺寸和解析度。為了獲得更好的相容性,推薦的尺寸列表為:16,32,64,128,256,512 和 1024;每乙個尺寸都需要為高解析度的場景(除了 1024)準備@2x的圖示。如果沒有乙個圖形化的程式幫你做這件事情,將會非常乏味和冗長;或者你可以利用如下所示的命令 (sips) 來做解析度調整的工作:

$ sips -z $size $size myicon.png 

--out myicon_$x$.png

以此類推。不要忘了@2x的批次,它們的尺寸的級別更高,但是會標註為當前的名稱。這的確是很繁瑣的工作,但這是可以自動化的,而且你只需要做一次(本文末尾鏈結了乙個示例程式)。

接著,假設你的圖示檔案位於乙個叫做 myicons 的資料夾呢,使用iconutil來生成圖示:

$ iconutil -c icns -o 

icon.icns myicons.iconset

└── contents

├── info.plist

├── macos

│ └── caddy

└── resources

└── icon.icns

3 directories, 3 files

關鍵檔案包含:

這裡展示了乙個清單檔案,你可以根據自己的內容進行修改(來自 dmitri shurylov,感謝原作者)

<?xml version="1.0" encoding="utf-8"?>

cfbundleexecutable

caddy

cfbundleiconfile

icon.icns

cfbundleidentifier

com.example.yours

nshighresolutioncapable

lsuielement

請確保替換了cfbundleexecutablecfbundleidentifier

注意:lsuielement告訴作業系統你的程式是乙個**程式,所以他不會出現在工作列。這非常重要,否則它將一直反覆出現在工作列中,除非你的 go 程式設計成像 cocoa 程式一樣響應 mac 事件迴圈中的事件。

此教程展示了手動的製作過程,後面的要點是告訴你如何自動化的做這件事情。

模板只需要製作一次。

開啟磁碟工具。按 ⌘n 建立乙個新的磁碟映象。給它取個名字,配置好足以容納你的程式包的空間大小。

在 finder 中找到掛載的映象。定製化此資料夾的檢視設定,使得它成為你想要使用者實際安裝時看到的樣子。可以考慮設定乙個背景圖,隱藏工具欄和邊欄,增加圖示尺寸等。

注意:背景圖必須包含在 dmg 中。通常會放在.background資料夾中。資料夾名字以點號開頭,它會顯示為隱藏資料夾。把背景放在這裡,並拖放到檢視選項中進行配置。

幹得好!我們的模板 dmg 已經全部建好了。現在它已經可以用於分發了。

當前的 dmg 沒有經過壓縮並且是可寫的。這對於發布程式是不夠的,所以我們必須做一下轉換來修復。

開啟磁碟工具,選擇映象->轉換。給檔案起乙個有意義的名稱,其他設定保持不變。(映象格式應為「壓縮」)

瞧!你現在擁有了乙個可以發布的壓縮包。當你開啟這個檔案,把它拖動到應用程式建立快捷方式後,它會出現在啟動器中:

「哦,很漂亮!」...除了有點兒單調。

上面介紹的一些一次性的工作可以自動化(比如建立圖示庫)。但是有些很難用自動化取得很好的結果(比如定製化 dmg 的檢視)。幸運的是,除此之外的部分是很容易做到自動化的,包括每次重新打包乙個新的發布版本所需要的步驟。hdiutil 這個命令可以幫助你來建立、掛在和轉換映象。

這不是乙個會繼續維護的開源專案。如果要使用它,你可以將它整合進實際的應用場景中。

回憶一下簡單多視窗程式

7月份公司的專案忙著 查錯 改錯 結項什麼的,成天跟產品和測試部門打交道,忙的焦頭爛額 正好又趕上忙著入dang 光入dang的材料我就抄了一打信紙 我去 一直也時間弄ios,iphone開發基礎 倒是能抽空看兩眼,看到二百來頁了,今天看到第九章 說試試之前看的東西 結果發現都忘沒了 新虧有部落格 ...

有益的,回答一下 GO

1 下列程式定義了乙個calc add類,請寫出程式的執行結果。public class calc add system.out.print sum sum 執行結果為 2 請寫出程式的執行結果。class person public int getweight public int getheig...

記錄一下mac使用macOS系統下各資料夾詳解

macos是乙個基於unix核心的系統,增強了系統的穩定性 效能以及響應能力。下圖就介紹了macos,windows和linux系統之間的區別 image.png 符合unix傳統的目錄 bin 傳統unix命令的存放目錄,如ls,rm,mv等。sbin 傳統unix管理類命令存放目錄,如fdisk...