刚刚利用Pyinstaller打包了一个应用, 打包最终产物是一个二进制文件配合一些资源文件
本篇研究如何将终产物变成一个 app, 进一步变成 dmg, 就和你网上下载的工具一样
你问我为啥要这么大图?不好意思,苹果规定的,我也不知道😂!
嗯, 就是一个正常的文件夹, 名字叫 garbevents(你们自己随意哈), 后面所有的修改除重命名本文件夹以外, 「都在这个文件夹里进行」。
别问,就是这样你跟着我做
这个东西是咱们的应用图标,接下来我们一起做logo!
// 这里直接在桌面路径下操作
// 把刚刚生成的图片命名为icon.png
cd /Users/lijiawei/desktop
// 新建临时文件夹
mkdir tmp.iconset
// 生成特定分辨率的图片,并保存到临时文件夹
sips -z 16 16 icon.png --out tmp.iconset/icon_16x16.png
sips -z 32 32 icon.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32 icon.png --out tmp.iconset/icon_32x32.png
sips -z 64 64 icon.png --out tmp.iconset/icon_32x32@2x.png
sips -z 128 128 icon.png --out tmp.iconset/icon_128x128.png
sips -z 256 256 icon.png --out tmp.iconset/icon_128x128@2x.png
sips -z 256 256 icon.png --out tmp.iconset/icon_256x256.png
sips -z 512 512 icon.png --out tmp.iconset/icon_256x256@2x.png
sips -z 512 512 icon.png --out tmp.iconset/icon_512x512.png
sips -z 1024 1024 icon.png --out tmp.iconset/icon_512x512@2x.png
// 生成.icns文件
iconutil -c icns tmp.iconset -o icon.icns
新建一个 Contents 文件夹, 至于为什么要这么命名, 其实是苹果对于 app 的规定, 遵守就好
里面的东西如下:
lijiawei@bogon Documents % tree garbevents
garbevents
└── Contents
├── MacOS
│ └── gbweb
├── Resources
│ └── icon.icns
└── info.plist
3 directories, 3 files
这个是清单文件,一个 xml, 但是语法比较怪 ,key 和 value 分别是某个标签的 content。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>gbweb</string>
<key>CFBundleIconFile</key>
<string>icon.icns</string>
<key>CFBundleIdentifier</key>
<string>garbevents</string>
<key>NSHighResolutionCapable</key>
<false/>
<key>LSUIElement</key>
<false/>
</dict>
</plist>
这是我的,你们记得修改为自己的内容
到最外面重命名文件夹, 加上.app 后缀, 就会自动变成一个 app 了
到此为止,你就得到了一个app,你可以双击运行他!到了这步已经可以使用了, 但是一般情况下, 会使用 dmg 格式来分发应用!
下篇文章我们讲一下,如何发分应用!