首先,在打包IOS时,不管是否需要远程mac打包。
我们都需要证书文件(cer 或者 p12)和描述文件。
cer证书带有公钥,在生成时,需要csr(证书签名请求) ,安装cer需要私钥。
开发证书可以创建p12副本证书,用在其他电脑上。p12是带有私钥的证书。
下面的步骤包括:
1.证书与描述文件获取
2.项目打包基础设置
3.远程打包设置
关于证书与描述文件请看下面
https://www.jianshu.com/p/8eff18ad88b3(【实用帖】苹果开发者账号证书详解)
如果是只是测试用一下,没有付费的开发者账号,要获取证书文件(.p12)和描述文件(.mobileprovision),可以看这里,然后跳过步骤一
http://www.applicationloader.net/blog/zh/1073.html
步骤一
如果有付费开发者账号,可以通过下面两种方式获得证书文件(.cer)。
1.第一种, 使用UE4 自带的工具申请证书。
-
浏览到Engine\Binaries\DotNET\IOS\目录,并运行iPhonePackager.exe。
-
信息提供是对应每个项目的。 当提示时,选择您项目的.uproject文件,将其与iPhonePackager应用程序关联,然后点击 打开 。
这个操作必须在您每次运行iPhonePackager应用程序时完成。 但是,它会记忆您选择的上一个项目的位置。
-
选择 新建用户 选项卡并点击 Create certificate request and a key pair(创建认证申请和密匙对) 。
此时打开 Generate Certificate Request (生成认证申请)对话框。
-
输入所需信息,其中包括您的苹果ID的电邮地址和名称(或公司名称)。
-
点击 Generate a key pair(生成密匙对) 并选择一个位置以保存.key文件。
-
点击 Generate Certificate Request(生成认证申请) 并选择一个位置以保存.csr文件。
此时 Generate Certificate Request(生成认证申请) 窗口关闭,您会返回主iPhonePackager窗口。
-
请转到苹果 iOS 开发者网站的iOS认证 页面。
-
点击按钮来生成新的认证。
-
选择 iOS App Development(iOS应用程序开发) 并点击 继续 。
10.点击 继续 。
11.点击 Choose File(选择文件) 并选择您之前生成的认证签名申请 (.csr)文件,然后点击 Generate(生成) 。
12。下载认证(.cer)文件到您的电脑。
2.第二种,在mac中申请。(这种情况可以获得cer,但是如果我们要在windows中的ue4中使用的话,cer 没有单独的私钥文件,所以我们都是从钥匙链中获取p12文件来用,关于怎么导出p12,请看最上面的连接)
第一种,通过钥匙串访问生成CSR 并从IOS认证页面生成
生成证书请求:钥匙串访问⟶证书助理⟶从证书颁发机构请求证书
填写开发账号邮件和常用名称,勾选“存储到磁盘” 保存后的名称应该为:CertificateSigningRequest.certSigningRequest
保存到磁盘后在你的钥匙串访问窗口应该会出两个**,一个公钥**,一个专用**,红色部分就是你在上面输入的常用名
备注:CSR文件尽量每个证书都制作一次,将常用名称区分开来,因为该常用名称是证书中的**的名字;之后在开发者中心将该CSR文件提交;
-
请转到苹果 iOS 开发者网站的iOS认证 页面。
-
点击按钮来生成新的认证。
-
选择 iOS App Development(iOS应用程序开发) 并点击 继续 。
4.点击 继续 。
5.点击 Choose File(选择文件) 并选择您之前生成的认证签名申请 (.csr)文件,然后点击 Generate(生成) 。
6.下载认证(.cer)文件到您的电脑。然后双击安装到钥匙链。
第二种,通过XCode 生成
-
在Xcode下拉菜单中,选择 Preferences(偏好设置) 。
-
选择 Accounts(账户) 选项卡。
-
点击左侧角落的加号按钮,然后选择 Add Apple ID(添加苹果ID) 。
-
输入您的苹果ID信息,然后点击 Add(添加) 。
-
选择左侧面板的苹果ID, 右边会出来一个详细信息面板,点击右下角的Manage Certificates。
-
点击加号按钮,然后选择 iOS Development(iOS开发) 来完成认证生成过程。
-
这种情况时,证书文件已经安装到了钥匙链中了。
接下来是获取描述文件,也就是授权文件(.mobileprovision)
描述文件里包含了App ID , Certificates (证书), Devices(设备)。 说明生成描述文件需要用到这些信息。我们要打包或者在真机上运行一个应用程序,首先需要证书来进行签名,用来标识这个应用程序是合法的、安全的、完整的等等。然后需要指明它的App ID,并且验证Bundle ID是否与其一致。再次,如果是真机调试,需要确认这台设备能否用来运行程序。而Provisioning Profile就把这些信息全部打包在一起,方便我们在调试和发布程序打包时使用,这样我们只要在不同的情况下选择不同的profile文件就可以了。而且这个Provisioning Profile文件会在打包时嵌入.ipa的包里。
接下来我们需要先注册APP ID 和测试设备,然后再获取授权文件
所以接下来我们需要注册APP ID,也就是一个应用的ID
选择 “Identifiers”的 “App IDs”,点击“+”出现以下界面:
App ID Description 是一个App ID的描述,就是一个名字,这个名字可以随便取,通常我们可以与应用名称相同
填写bundle ID: 这里就是我们需要在UE4项目中填写的 bundle ID
服务中文翻译
最后会有一个详细的内容列表,对应无误后,提交完成
接下来我们需要注册用来测试的设备
如图,点击“+”,一个99美元账号只能申请100个设备。
填写自己测试设备的名字和UDID,UDID在Xcode中可以查看,也可以用 爱思助手 等工具查看。UE4自带的工具也可以查看
填好 name 和 UDID后,点击continue 就可以看到如下界面,点击“Register”就可以在苹果上登记了。
现在我们开始获取授权文件
打开https://developer.apple.com/account/ios/certificate/,点击页面左侧的Provinsioning Profiles分类下的All
点击右上角的+按钮,准备为你的开发者账号添加一个Provisioning Profile。 选择授权文件类型,下面罗列了iOS常的授权文件类型
选择 iOS App Development, 点击Continue。
选择我们刚刚生成的 App ID,选好后,点击“Continue”
选择刚刚添加的证书,点击Continue。
选择设备,设备可以选择全部设备,也可以按需选择你需要的设备:
这里给我们的描述文件取一个名字,这个名字在以后的xcode中是看得到的,所以可以取一个好辨认的名字。取好名字后,选择“Continue”生成描述文件。
生成好描述文件后,选择“Download”
步骤二
接下来我们配置UE4工程(是否远程编译都要先设置一下)
打开项目的项目设置, 然后在“ 移动设置” 部分的“ 平台 > iOS” 下 ,按“ 导入设置” 按钮导入您的设置,然后对“ 导入证书”执行相同操作。
p12 证书需要 密码,而cer证书需要.key文件。 都导入成功后
然后在下面的Bundle Information 中,需要将Bundle Identifier 设置成你之前注册的APP ID的 bundle ID, 然后 你会看到 上面的证书与描述文件会变成绿色的。 表示配置成功了.
如果是纯蓝图工程就可以直接编译了。如果是c++工程等需要mac才能完成的编译项目请看步骤三
步骤三
远程编译ios包
我们只需要一台装有Xcode的 mac电脑或者mac虚拟机 即可。这里并不需要安装开发证书
首先需要设置mac电脑的远程登陆,打开mac的系统偏好设置,找到共享
勾选远程登陆, 让电脑可以通过启动SSH远程登陆。
然后打开项目的项目设置, 然后在“ 移动设置” 部分的“ 平台 > iOS” 下 ,找到Build
修改如下设置为你需要连接的mac电脑的ip地址
Remote Server Name:mac 的iP地址
修改如下设置为登陆mac电脑的用户名
Rsync User name : mac 登录的用户名。
然后点击下面的 Generate SSH Key。然后弹出如下对话框
这里有几个提示必须看一下:主要根据弹出窗口中的提示进行 SSH 设置。此处的额外步骤将助您完成此操作。
-
如 host 无法被认证,在弹出提示中输入“yes”。
-
输入 Remote User Name 中指定的用户密码。
-
弹出提示将要求输入口令。建议不指定口令,以便脱离用户交互进行使用。
-
之后将弹出提示再次输入用户名的密码,完成操作。
现在我们按任意键继续:
根据上面的提示出现这个我们直接输入yes
然后这里让我们输入登陆mac的密码
有可能中间会断开,这时候不用管,直接一路回车到最后就可以了
看一下这里如果是空的,就继续点击Generate SSH Key按钮
第一次输入登陆mac的密码,然后会出来一个Enter passphrase, 这时候一路回车就可以了,直到出现再出现passward,这时候再次输入mac登陆密码,然后回车,私钥就下载下来了
然后你会看到
表示,私钥已经下载下来了。
这里有一个bug,就是这里的私钥直接使用有可能这个会出现下面的错误(参照这里 https://answers.unrealengine.com/questions/844683/view.html)
这个貌似是路径问题,解决方法就是我们把这个私钥复制到一个比较简单的路径中,然后在Override existing SSH Permissions file 中指定它
然后我们就可以打包了。
第一次打包,速度会比较慢,因为会上传大量引擎的文件到mac中, 目录就在 ~/UE4 中