首先,Unity打包IOS必须条件:
Unity3D下载了IOS平台
下载了XCode软件(必须是MacOS 系统)
在苹果开发者中心注册了开发者帐号
第一步:注册苹果开发者帐号;
Unity3D下载IOS平台和XCode下载就不介绍了,直接开始开发者帐号申请
注意:帐号是收费的,一个是个人版或者公司版,一个是企业版(了解到APPLE的政策是,要发布到APP STORE必须用99美元的个人版或公司版Apple Developer Programs,要在非商店外下载只能使用299美元的企业版iOS Developer Enterprise)
注册地址:https://developer.apple.com/membercenter/index.action
注册前准备:
- 2个邮箱(299美元的必须是公司域名邮箱)
- 邓白氏编码DUNS
注册流程:
注册APPLE ID → 注册邓白氏编码 → 获取邓白氏编码后继续验证APPLE ID的公司信息 → 等待APPLE官方审核资料 → 审核通过,缴费 → 收工
关于邓白氏编码
- 一个邓白氏编码可以注册多个APPLE 开发者账号
- 通过APPLE的链接申请邓白氏编码,基本上一周左右就可获得。其中邓白氏那边会打电话给你核实身份,然后发邮件给你要补充公司信息,这个公司信息到时候APPLE验证DUNS编码时会用到,两边最好一致,否则修改麻烦。
- 新的邓白氏编码,请注意尝试次数不要超过3次,超过次数编码会被锁住,解锁及注册方面问题请找苹果客服
第二步:注册完成后
- 登录开发者账号
- 下载开发者证书(开发者证书(分为开发和发布两种,类型为iOS Development,ios Distribution),这个是最基础的,不论是真机调试,还是上传到appstore都是需要的,是一个基证书,用来证明自己开发者身份的)
注意一下几点:
- appID,这是每一个应用的独立标识,在设置项中可以配置该应用的权限,比如是否用到了PassBook,GameCenter,以及更常见的push服务,如果选中了push服务,那么就可以创建生成下面第3条所提到的推送证书,所以,在所有和推送相关的配置中,首先要做的就是先开通支持推送服务的appID;
- 推送证书(分为开发和发布两种,类型分别为APNs Development ios,APNs Distribution ios),该证书在appID配置中创建生成,和开发者证书一样,安装到开发电脑上;
- Provisioning Profiles,这个东西是很有苹果特色的一个东西,我一般称之为PP文件,该文件将appID,开发者证书,硬件Device绑定到一块儿,在开发者中心配置好后可以添加到Xcode上,也可以直接在Xcode上连接开发者中心生成,真机调试时需要在PP文件中添加真机的udid;是真机调试和必架必备之珍品;
- 平常我们的制作流程一般都是按以上序列进行,先利用开发者帐号登陆开发者中心,创建开发者证书,appID,在appID中开通推送服务,在开通推送服务的选项下面创建推送证书(服务器端的推送证书见下文),之后在PP文件中绑定所有的证书id,添加调试真机等;
*CRS文件创建:
或者
进入
CRS文件已经生成好了
3.进入开发者设置界面
* certificates(证书)
选中All,接着点击右上角的加号,我们先来创建开发者(真机调试)证书,提交证书和调试证书创建步骤几乎一样
这里我们Development类型证书,(用于真机调试)。选中之后进入下一个页面:
这里会提示你选择创建好的CRS文件,选择上面创建好的CRS文件,点击continue提交,就生成证书
下载下来保存到你对应得文件夹就好了,暂且不要双击安装,后面会讲解安装证书和配置文件
注意:证书最好不要创建多个,不易于管理
* identifiers(App ID)
配置App的Bundle ID,就是和XCode中对应的那个Bundle ID, 点击左边的视图identifiers下面的App IDs
点击标记2,添加AppID,设置AppID名称
设置Bundle ID
生成Bundle ID 的设置
App ID创建好之后,不需要去动它,也会在后面用到
* Devices(设备ID)**
添加你要真机调试的设备ID
设置手机名称和UDID,UDID获取通过手机连接电脑,打开iTunes软件,点击序列号字母处,显示的就是UDID
* profiles(配置文件)**
配置证书的最后一步,生成profiles,这个profiles其实最终是安装到Xcode里的,它关联证书、App ID、和Device ID,把前三者结合起来,生成一个可安装的配置文件,用于Xcode进行真机调试,用于发布应用也一样,在进行App打包生成ipa文件时,也会去验证你的证书和profiles,这也是你能否打包成功的关键。
点击第四个模块(profiles)下面的All选项,创建profiles:
开发者证书的配置完成。
注意:最终配置完成后只需下载两个文件:一个就是第一个模块里面的开发者真机调试证书、然后就是第四个模块里的profiles文件,把这两个文件下载下来,保存好避免遗失,以便接下来在Xcode中配置和使用。(PS 放好这两个文件,记住他们的位置)
Run in Xcode
第三步:Unity打包;
切换到IOS平台,进行设置
- Run in Xcode:选择你电脑上安装的Xcode版本,或者默认Latest version,默认是你电脑上 最新版本
- Run in Xcode as:选择Debug或者Release版本;PS:和最后Xcode打包时选择保持一致
点击Player Settings ->Other settings 设置
- 包名设置:和安卓设置方法一样,格式:com.公司名.工程名。设置版本号
- 设备型号设置:设置只能iPhone用还是iPad用或者两个都能用,以及设备最低的系统版本设置
- 设置其他你需要的设置
最后,点击Build进行打包,设置包文件夹名,保存
第四步:用你打包时候选的Xcode版本打开你刚才Build的包
其实,Xcode已经帮我们做了很多配置,只需要我们设置以下配置:
1.点击 Product->Scheme->Edit Scheme 或者进入下面界面,并点击Archive,确保Build Configuration 为 你在Unity中的选择保持一致
- Display Name:设置你的App名字
- Bundle Identifier:设置Build ID,来自你在注册苹果开发者帐号时Bundle ID保持一致。
- Version:App版本(与Unity设置保持一致)
- Build:版本号(与Unity设置保持一致)
2.TARGETS->Identity->Team Team选择你注册时对应的App ID 帐号。
PS:可以不用选择注册相应证书时对应的 Apple ID 帐号,而且选择别的对应/非对应帐号也都没问题。
3.TARGETS->Build Setting->Code Signing
基本不用设置,默认配置好的,如有需要可更改设置
其中下方的 Provisioning Profile 可以使用默认的 Automatic,也可以指定对应的描述文件。(一般我们使用Automatic)
注意:如果用USB将手机连接到电脑,手机端打开开发者模式,选择连接的手机,直接点击Xcode运行,就会打包到你连接的手机上,后续步骤可省略。
4.Archive设置;只能选择iOS Device,选择其他模拟器是不能Archive的
等会,Archive会弹出
5.Export 导出;点击上图中的“Export”,如下所示,很显然第一个选项是发布app的,不要点,那是个人开发者账号可以干的事情。
上图四种选项:
- Save for iOS App Store Deployment:保存到本地 准备上传App Store 或者在越狱的iOS设备上使用
- Save for Ad Hoc Deployment:保存到本地 准备在账号添加的可使用设备上使用(具体为在开发者账户下添加可用设备的udid),该app包是发布证书编译的(The app will be code signed with the distribution certificate.)
- Save for Enterprise Deployment:这种主要针对企业级账户下 准备本地服务器分发的app
- Save for Development Deployment:针对内部测试使用,主要给开发者的设备(具体也为在开发者账户下添加可用设备的udid)。该app包是开发证书编译的(The app will be code signed with your development certificate)
点击Next,继续,选择存放路径,继续
点击Next,IPA就打包成功了。
附:app需要使用手机的某些功能或者应用的时候,需要授权才可以访问,下面将展示一些info.plist上常用的一些授权。
bool类型是YES的,这个是允许访问http的网址
下面是以上授权的代码形式,可以直接拷贝到info.plist文件中:
NSAppTransportSecurity
NSAllowsArbitraryLoads
NSContactsUsageDescription
请求访问通讯录
NSMicrophoneUsageDescription
请求访问麦克风
NSPhotoLibraryUsageDescription
请求访问相册
NSCameraUsageDescription
请求访问相机
NSLocationAlwaysUsageDescription
始终访问地理位置
NSLocationWhenInUseUsageDescription
在使用期间访问地理位置
NSCalendarsUsageDescription
请求访问日历
NSRemindersUsageDescription
请求访问注意事项
NSBluetoothPeripheralUsageDescription
请求访问蓝牙
ITSAppUsesNonExemptEncryption
注:至于TestFlight测试和上线,后续再介绍。
Unity3D发布打包系列之(四)——IOS打包发布