How to change app icons on Unreal Engine 5 with modernized Xcode enabled

One of the major updates in Unreal Engine 5 about mobile game development was the introduction of modernized Xcode workflow. Modernized Xcode changes the way Unreal Engine builds for iOS: instead of relying mostly on UBT, it now can use plain Xcode projects for building and archiving projects. Modernized Xcode is more closely aligned with iOS development conventions, and improves packaging and distribution workflows. Overall, modernized Xcode workflow makes packaging iOS projects easier for those of us who come with iOS development background.

However, modernized Xcode workflow is in its early stage of adoption as for now. Many developers experience little papercuts when building their games for iOS, especially those who try to package their projects the way it was on UE4.

Unfortunately, when an issue arises, common advice is to disable modernized Xcode altogether. I think this is not an optimal solution. Firstly, the closer the build processes are to the target platform, the better. Unnecessary abstraction can hinder learning and troubleshooting and can slow down development. Secondly, the UBT-centered (“old”) build process will be deprecated and then removed from the engine at some time. It is better to be prepared in advance.

One of the first issues I had when building for iOS on Unreal Engine 5 was that icons set under Project Settings → Platforms → iOS aren’t used when modernized Xcode is enabled. Unreal Engine now uses the standard Xcode asset catalog system to set icons. The icons listed under the project iOS settings are no longer used.

To set icons, first generate an Xcode project if you haven’t already (Tools → Generate Xcode Project). Then in this Xcode project set the icons as you would do with a regular iOS application: Project Navigator → Games → ProjectName → ProjectName (iOS) → Resources → Assets.xcassets. Then locate the Assets.xcassets asset catalog and copy it in the Build/IOS/Resources folder, so icons stay checked in when the Xcode project is generated by your team members or on CI build machines. And that’s it! Now you have set your app icons without ditching modernized Xcode.