python二进制程序打包为 mac app(dmg)-材料准备

简介: python二进制程序打包为 mac app(dmg)-材料准备

python二进制程序打包为 mac app(dmg)-材料准备

前言

刚刚利用Pyinstaller打包了一个应用, 打包最终产物是一个二进制文件配合一些资源文件


本篇研究如何将终产物变成一个 app, 进一步变成 dmg, 就和你网上下载的工具一样


准备工作

  • 二进制打包产物
  • 一张logo图(png文件)1024x1024

你问我为啥要这么大图?不好意思,苹果规定的,我也不知道😂!

  • mac 电脑一台

新建一个文件夹

嗯, 就是一个正常的文件夹, 名字叫 garbevents(你们自己随意哈), 后面所有的修改除重命名本文件夹以外, 「都在这个文件夹里进行」


别问,就是这样你跟着我做

logo制作

这个东西是咱们的应用图标,接下来我们一起做logo!

  • 我们的文件大小是256x256的,需要调整大小
  • 用mac 自带的图片查看器,挑战分辨率为1024x1024
  • 接下来开始生产苹果专用的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
  • 依次执行完上面的神秘代码之后,你会得到一个icon.icns文件,如下所示

Contents 文件夹

新建一个 Contents 文件夹, 至于为什么要这么命名, 其实是苹果对于 app 的规定, 遵守就好

里面的东西如下:

lijiawei@bogon Documents % tree garbevents 
garbevents
└── Contents
    ├── MacOS
    │   └── gbweb
    ├── Resources
    │   └── icon.icns
    └── info.plist
3 directories, 3 files
  • info.plist app 的清单文件, 后面看
  • MacOS python打包的二进制产物复制进来
  • Resource 资源文件都会在这里,图标之类的

info.plist

这个是清单文件,一个 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>

这是我的,你们记得修改为自己的内容

  • CFBundleExecutable: 你要运行的二进制, 这里是 json_to_dart
  • CFBundleIconFile: 应用图标的指向, 相对 Resources 文件的路径
  • CFBundleIdentifier: 应用唯一标示, 这里根据你的情况写
  • NSHighResolutionCapable: 是否支持高清(Retina 屏,建议设置为 true)
  • LSUIElement: 是否后台运行,就是有没有前台进程

重命名.app

到最外面重命名文件夹, 加上.app 后缀, 就会自动变成一个 app 了

运行

到此为止,你就得到了一个app,你可以双击运行他!到了这步已经可以使用了, 但是一般情况下, 会使用 dmg 格式来分发应用!

下篇文章我们讲一下,如何发分应用!

相关文章
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
770 1
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
115 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
26天前
|
API Python
利用python淘宝/天猫获得淘宝app商品详情原数据 API
要使用Python获取淘宝/天猫商品详情原数据,需先注册开放平台账号并实名认证,创建应用获取API权限。随后,根据API文档构建请求URL和参数,使用requests库发送请求,处理返回的商品详情数据。注意遵守平台使用规则。
|
2月前
|
存储 网络安全 数据安全/隐私保护
|
2月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
80 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
|
2月前
|
机器人 Shell Linux
【Azure Bot Service】部署Python ChatBot代码到App Service中
本文介绍了使用Python编写的ChatBot在部署到Azure App Service时遇到的问题及解决方案。主要问题是应用启动失败,错误信息为“Failed to find attribute &#39;app&#39; in &#39;app&#39;”。解决步骤包括:1) 修改`app.py`文件,添加`init_func`函数;2) 配置`config.py`,添加与Azure Bot Service认证相关的配置项;3) 设置App Service的启动命令为`python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func`。
|
2月前
|
移动开发 小程序 数据可视化
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
基于npm CLI脚手架的uniapp项目创建、运行与打包全攻略(微信小程序、H5、APP全覆盖)
373 3
|
2月前
|
iOS开发 开发者 MacOS
在线创建ios打包证书无需mac
这个文件并不一定需要使用mac OS去创建,在苹果开发者中心,生成了cer格式的证书后,导出p12证书这个过程,其实也并不一定需要mac电脑来完成。
36 0
|
2月前
|
缓存 开发框架 移动开发
uni-app:下载使用uni&创建项目&和小程序链接&数据缓存&小程序打包 (一)
uni-app 是一个跨平台的开发框架,它允许开发者使用 Vue.js 来构建应用程序,并能够同时发布到多个平台,如微信小程序、支付宝小程序、H5、App(通过DCloud的打包服务)等。uni-app 的目标是通过统一的代码库,简化多平台开发过程,提高开发效率。 在这一部分中,我们将逐步介绍如何下载和使用uni-app、创建一个新的项目、如何将项目链接到小程序,以及实现数据缓存的基本方法。
|
4月前
|
存储 BI Android开发
全开源仿第八区H5APP封装打包分发系统源码
全开源仿第八区H5APP封装打包分发系统源码
158 4