44

Unity一键导出iOS的IPA安装包-腾讯游戏学院

 5 years ago
source link: http://gad.qq.com/article/detail/288796
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1. 概述

本文出自Unity一键导出iOS安装包工具的说明文档容。最最重要的是证书的权限设置,其他根据本文指引和Google,可以毫无障碍地实现此功能。当然,捷径也是有的:
IpaExporter in Unity Asset Store
.

如题所述,本文的目的是一键导出iOS安装包。只要提供了证书文件,不需要Apple账号和密码,就可以同时导出ad-hoc和ios store的安装包。工具里提供了一个简单的证书解析器,所以打包的信息均从证书中提取,不需要额外配置,易于维护,省时省心。工具内包含所有脚本,可按需修改。

2. 怎么做

2.1. 准备工作

  • 有效的Apple证书
  • 证书的App ID不包含通配符. (如前述,导出Apple工程的APP ID用的是证书里的App ID,如果要包含通配符,你得把App ID hard code一下)

2.2. 导入证书并开放访问权限

每次更新证书(私钥),都得重做步骤2.2.2至2.2.3。如果App签名失败,你得重新检查/重做这些步骤。

开放证书权限会导致任何应用都可以使用其进行签名,目前来看也不能拿他去干什么坏事情。

2.2.1 导入私钥和证书

鼠标双击文件即可。

私钥如果是p12文件会需要密码,需要私钥提供者提供。如果私钥有更新,可能需要删除原导入的证书后,再导入新的证书(我们试过一次旧证书不删除无法更新的情况)。

如果仅更新证书,直接替换原证书文件双击即可。

2.2.2 开放证书权限(非常重要)

因为在工具里,我们是用bash脚本进行签名的,所以不会弹出窗口请求证书权限,所以我们需要设置证书的权限为”allow all…”。所有步骤见下图(中文版请自行人工智能匹配)。

ppconfig.png

对每一个证书,你需要检查/重做步骤6-10。

2.2.3 Copy证书进工程

如前所诉,工具里包含了一个简单的证书解析工具,我们可以将证书Copy进工程,当配置文件用。

Copy文件 .mobileprovision 到工程相对目录 **Assets/IpaExporter/IosProvisioningProfile/* .

如果你的工程像我的一样,有几个App Id,那么我建议把同一个App Id的证书文件放到一个这个APP Id命名的目录下。看起来路径像是这样子: Assets/IpaExporter/IosProvisioningProfile/[bundleid]/*.mobileprovision.

目录下仅需要保留最新的证书文件,删掉旧的文件。一旦新的证书在苹果页面上生成,旧的就没用了,所以也没必要保留他。如果新旧文件放在一起,工具没区分,会用错证书。

2.3. 简要的一键打包页面

在工具里可以通过菜单路径打开一键打包页面: IpaExproter -> Build Ipa Window
editor.png

下面是每一项的说明:

  1. 证书目录的全路径。
  2. 版本号。
  3. 导出Apk的bundle id。
  4. 如果第三项导出Apk的bundle id对应的证书找不到,会有一个错误提示。然后下面会列出当前证书目录下证书所含的所有bundle id。你可以选择一个,然后第三项的内容会被修正。证书文件被更新或者工程被重新编译,缓存数据被清除,请点击刷新按钮重新解析证书导入缓存。
  5. 当前证书目录下证书所含的所有bundle id。可以选择1个,第三项的bundle id会随之改变。
  6. Xcode的bitcode选项。万恶之源,请保持他勾上,不如会导致时间变得很长,这里是演示怎么控制导出的Xcode工程的选项。
  7. 勾上此选项,会在出包时加上BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging
  8. 工具里包含一个空场景,勾上时会只包含这个空场景,否则包含Player Settings下的场景。
  9. 如果一切顺利,点击此按钮回生成Apk包。Apk包生成后, 会弹出其所在目录。如果失败,参考3.3获取失败日志。

3. 工具详述

3.1. 目录结构

以下文件路径均相对于IpaExporter,各文件说明如下:

文件名 说明 Config/IosBuildingOptions.json 工具选项配置,如果没有会自动生成一份默认的。 Demo/Scene/0.unity 演示用的空场景。 IosProvisioningProfile/ 证书( *.mobileprovision)目录 。 Editor/BuilderMenu.cs Unity菜单 Editor/BuildIpaWindow.cs 一键打包页面 Editor/IosProvisioningProfileMgr.cs 证书的解析和管理脚本。 Editor/IpaExporter.cs 此脚本实现了下文3.2里的打包步骤。

3.2. 打包步骤

点击Build按钮,会触发开始打包。打包的逻辑在文件 IpaExporter.cs里。步骤如下:

workflow.png

  • 步骤 1: 准备打包环境。打包UI上的配置会从文件反序列化,并不依赖UI。这样方便从Unity命令行启动打包,方便日常的Daily Build。
  • 步骤 2: 导出XCode工程。导出工程时优先选择开发证书,方便打开XCode工程时调试。如果没有开发证书,会选择逻辑上的第一个证书(天知道是哪个,不重要,最后导出的IPA包由脚本指定)。
  • 步骤 3: 根据需要修改XCode工程。Unity5以后提供了接口,工具中把Bitcode选项禁用了。你可以加其他的capability,如推送之类的。
  • 步骤 4: XCode工程里,苹果把导出IPA文件分成了两步,分别是archive和export。这一步里工具会生成两类bash脚本,一类脚本名字为archive.sh,就一个,用来编译并生成release版的无签名archive文件;另一类脚本叫export_xxx.sh,用来生成各个Provisioning Profile对应的IPA。需要注意的是,Development Provisioning Profile没有生成对应的脚本,因为测试发现Development Provisioning Profile里的team名字可能和私钥对不上。如果你一定要生成Development版的IPA,你可能需要hard code组名(可能还有其他信息),不过大多数时候我们只生成app-store版和adhoc版的证书。
  • 步骤 5: 执行步骤4里生成的脚本。

3.3. Logs

失败的时候,你可以到下面的地方查找日志:

  • 首先检查Unity Editor里的控制台窗口,打包步骤里1-4步如果有错误,会输出到这里。
  • 打包步骤里第五步执行脚本的日志会被输出到下面的日志文件: [TheProjectPath]/OsxCmd/cmd.log

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK