接上文

操作系统:macOS Catalinna 10.15.2  Xcode版本Version 11.3 (11C29)

1 首先是xocde11的splash页面匪夷所思的问题 - -

由于前面并没有在unity内设置splash,这里选择在xcode里设置splash页面。如果你也是感觉自己设置的完全没毛病,但是splash他就是不显示,那么看下面。

1,点击你工程中的images.xcassets,如图:记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_开发者账号

2,找到右边已经存在的launchimage,删除它,没错,删除:记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_xcode11_02

3,重新创建一个launchimage,如图:记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_xcode11_03然后:记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_开发者账号_04

之后把你的splash图挨个拖入机型中:

4,找到工程中的LaunchScreen-iPhone.xib文件,点击他,然后在右边找到这个选项,取消勾选他:

记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_xcode11_05

假如你也要打iPad包,那么对应的LaunchScreen-iPad.xib里面的同一个选项也取消勾选。

然后打包,你的splash讲道理就应该有了,但是假如还是没有,那就点这里清楚一下缓存,再打个包。。

记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_ios_06

然后插一嘴,我想让splash页面多显示几秒,在UnityAppController.mm里的startUnity方法中加入了暂停3秒进程的代码,可能不是很科学,仅供参考吧,代码如下:

- (void)startUnity:(UIApplication*)application
{
    NSAssert(_unityAppReady == NO, @"[UnityAppController startUnity:] called after Unity has been initialized");
    //进程暂停3秒
    [NSThread sleepForTimeInterval:3];
    UnityInitApplicationGraphics();

    // we make sure that first level gets correct display list and orientation
    [[DisplayManager Instance] updateDisplayListCacheInUnity];

    UnityLoadApplication();
    Profiler_InitProfiler();

    [self showGameUI];
    [self createDisplayLink];

    UnitySetPlayerFocus(1);
}

2 关于签名那些设置

由于最初我没有开发者账号,所以搞起来费了好多时间。没有开发者账号其实也是可以打包的,但是也只能自己测试用吧。开发的话尽量申请开发者账号吧,没有开发者账号打包的流程就不在这里哔哔了,网上可以搜到一堆:其实就是在这里设置一下账号吧啦吧啦的:记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_xcode11_07

然后general里关于包名啊什么的,都设置为你在Apple开发者网站申请的那些就OK了。

3 额 遇到的坑好像挺多的,一时半会想不起来了,后面记录一下上传testflight的坑吧。

对了还有关于没有通知权限时的编译错误(当账号不是开发者账号时):

"does not support the Push Notifications capability."

在xcode里面搜索这个文件: entitlements ,将其删除继续编译就好了。

记录一下unity 打包Xcode以及上传testflight的一些坑---xocde11一些打包设置以及坑_ios_08