Skip to content

iOS打包工具发布

IMPORTANT

本文档介绍U8SDK在Mac系统下面发布iOS打包客户端的流程。

如果你还没有搭建好本地的打包工具项目开发环境,请参考这篇文档先行搭建:打包工具开发环境搭建

修改配置

在发布程序之前, 我们需要先将程序的配置文件进行一些必要的配置。

package.json文件中:

"name": 当前程序的名称,请使用英文或者字母,不要使用中文
"description": 当前程序的描述信息
"author": 当前程序的开发者信息
"version": 当前程序的版本信息
"bundleID": 当前程序的包名,可以自定义,比如com.u8sdk.package.tool
"platform": 编译iOS打包工具时,设置为ios;编译android打包工具时设置为:android
"copyright": 安装界面版权声明

.env文件中:

VUE_APP_API: 后端U8SDK管理后台后端服务(u8-x-manager) 的访问地址,记得最后加上/, 比如https://mgrapi.u8sdk.com/

准备工作

1、runtime_ios目录结构

正式发布安装程序之前, 我们需要先配置一下runtime_ios下面的辅助程序。 整个runtime_ios下面需要放置的文件如下:

bash
scripts: 在mac下面,使用pyinstaller将打包脚本生成对应的可执行文件,然后将整个可执行文件目录拷贝到这里
u8sdk.json: 打包工具部分辅助工具自定义配置文件,发布的时候,不需要修改;后续发布的app使用者可以根据自己的需要来修改

2、编译打包脚本

为了避免直接使用打包脚本的源码程序,我们先将打包脚本使用pyinstaller编译成可执行程序.app,然后将可执行程序目录,拷贝到上面runtime_ios目录下scripts目录里面即可。

如果你还没有安装pyinstaller组件, 请先安装pyinstaller组件:

因为mac系统下自带了python2.7版本, 而且诸多系统环境依赖这个python,所以对这个python上面安装一些模块可能会因为各种权限限制而导致失败。 所以,建议可以使用homebrew安装另一个python版本, 比如可以安装一个python3.8.2版本,然后运行如下命令安装pyinstaller:

bash
python -m pip install pyinstaller

然后,在iOS打包脚本scripts目录下,执行如下命令,就可以将scripts脚本编译生成.app可执行程序了:

bash
pyinstaller -w package.py  -p plist_utils.py -p u8sdk-export.py -p build.py -p pbxproj/pbxextensions/ProjectFlags.py -p pbxproj/pbxextensions/ProjectFiles.py -p pbxproj/pbxextensions/__init__.py -p pbxproj/pbxextensions/ProjectGroups.py -p pbxproj/PBXRootObject.py -p pbxproj/PBXObjects.py -p pbxproj/PBXGenericObject.py -p pbxproj/__init__.py -p pbxproj/pbxsections/PBXSourcesBuildPhase.py -p pbxproj/pbxsections/PBXTargetDependency.py -p pbxproj/pbxsections/XCBuildConfiguration.py -p pbxproj/pbxsections/PBXFrameworksBuildPhase.py -p pbxproj/pbxsections/PBXReferenceProxy.py -p pbxproj/pbxsections/PBXHeadersBuildPhase.py -p pbxproj/pbxsections/PBXAggregateTarget.py -p pbxproj/pbxsections/__init__.py -p pbxproj/pbxsections/PBXNativeTarget.py -p pbxproj/pbxsections/PBXProject.py -p pbxproj/pbxsections/PBXContainerItemProxy.py -p pbxproj/pbxsections/XCConfigurationList.py -p pbxproj/pbxsections/PBXShellScriptBuildPhase.py -p pbxproj/pbxsections/PBXResourcesBuildPhase.py -p pbxproj/pbxsections/PBXCopyFilesBuildPhase.py -p pbxproj/pbxsections/PBXBuildFile.py -p pbxproj/pbxsections/PBXGroup.py -p pbxproj/pbxsections/PBXGenericTarget.py -p pbxproj/pbxsections/PBXFileReference.py -p pbxproj/pbxsections/PBXLegacyTarget.py -p pbxproj/pbxsections/PBXGenericBuildPhase.py -p pbxproj/XcodeProject.py -p pbxproj/pbxcli/pbxproj_file.py -p pbxproj/pbxcli/__init__.py -p pbxproj/pbxcli/pbxproj_flag.py -p pbxproj/pbxcli/pbxproj_show.py -p pbxproj/pbxcli/pbxproj_folder.py -p pbxproj/PBXKey.py -p pbxproj/PBXList.py -p pbxproj/openstep_parser.py -p config.py -p ipapackage.py -p log_utils.py -p store_utils.py -p pbxu8sdk/XcodeProjectExt.py -p pbxu8sdk/__init__.py -p pbxu8sdk/PBXSignExt.py -p pbxu8sdk/PBXBuildFileExt.py -p pbxu8sdk/XCBuildConfigurationExt.py -p check_update.py -p xcode_gen.py -p http_utils.py -p u8sdk-repack.py -p utils.py -p iconutils.py -p file_utils.py -p app_process.py -p u8sdk-ota.py -p u8sdk-build.py -p openstep_parser.py

等待编译完成, 然后将scripts/dist/package目录下的内容, 全部拷贝到上面runtime_ios/scripts目录下

编译发布

准备好了runtime_ios目录下的内容之后, 我们就可以编译发布生成mac下可执行程序和安装程序了;在U8SDKPM目录下,启动命令行,执行如下命令:

bash
npm run electron:build

等待编译完成, 在U8SDKPM/dist_electron目录下就生成了对应的可执行程序和安装程序了:

mac: 该目录下是绿色免安装版本,可以直接执行里面的U8SDKPM.app启动打包工具
U8SDKPM-1.0.0.dmg: 该文件就是iOS打包工具安装程序, 可以提供这个供合作研发下载在mac下安装

生成ICON

Mac下安装程序的图标, 对应的是U8SDKPM目录下的u8sdk_icon_mac.icns文件, 该文件的生成方式如下:

准备一张大小1024×1024的图标的png图片,命名为:logo_app.png

在mac下面,创建一个目录,将上面图片拷贝进去,然后启动终端,进入该目录执行:

bash
mkdir tmp.iconset

sips -z 16 16 logo_app.png --out tmp.iconset/icon_16x16.png
sips -z 32 32 logo_app.png --out tmp.iconset/icon_16x16@2x.png
sips -z 32 32 logo_app.png --out tmp.iconset/icon_32x32.png
sips -z 64 64 logo_app.png --out tmp.iconset/icon_32x32@2x.png
sips -z 128 128 logo_app.png --out tmp.iconset/icon_128x128.png
sips -z 256 256 logo_app.png --out tmp.iconset/icon_128x128@2x.png
sips -z 256 256 logo_app.png --out tmp.iconset/icon_256x256.png
sips -z 512 512 logo_app.png --out tmp.iconset/icon_256x256@2x.png
sips -z 512 512 logo_app.png --out tmp.iconset/icon_512x512.png
sips -z 1024 1024 logo_app.png --out tmp.iconset/icon_512x512@2x.png

iconutil -c icns tmp.iconset -o Icon.icns

生成的Icon.icns就是你需要的图标文件了。

版权所有© 2021-2030 上海丞诺网络科技有限公司