[URGENT] Remote Build for iOS doesn't copy framework resources

Resources are not present in final .ipa package when I try to build and package iOS app using remote connection from Windows to macOS with included frameworks with resources. This is only problem with remote connection, when I try the same on local macOS instance without remote connection, it works properly. Also it worked good in previous UE4 versions.

Steps to reproduce:

  1. Framework with resources to include: Engine\Plugins\Runtime\Advertising\IOSTapJoy\ThirdPartyFrameworks\Tapjoy.embeddedframework.zip

  2. Code to place in module’s Build.cs:

    PublicAdditionalFrameworks.Add(
    new UEBuildFramework(
    “TapJoy”,
    “…/…/ThirdPartyFrameworks/Tapjoy.embeddedframework.zip”,
    “Resources/TapjoyResources.bundle”
    )
    );

  3. Build and package project

  4. Open package .ipa file, it should contain TapjoyResources.bundle inside but it’s not present there.

Please fix this ASAP because it breaks most of the plugins and remote building for iOS is currently completely useless.

Thank you in advance.

This should be reported via the bug reporting system or?

https://epicsupport.force.com/unrealengine/s/

Any update/workaround on this? Thanks.

Looking at the UBT logs, it seems that the resource bundles are copied after having built and signed the IPA and are copied from the local
Engine/Intermediate/UnzippedFrameworks/ directory (where they were successfully unzipped) to the local project’s Intermediate/IOS/FrameworksAssets/ directory. I suspect they are copied to the wrong place or - more likely (as they would not be signed otherwise) - at the wrong time.

The code performing the copy is this: https://github.com/EpicGames/UnrealEngine/blob/f7626ddd147fe20a6144b521a26739c863546f4a/Engine/Source/Programs/UnrealBuildTool/Platform/IOS/IOSToolChain.cs#L1687

Edit: my issue is with the GoogleVR plugin, where it lists several resource bundles to package in the IPA: https://github.com/EpicGames/UnrealEngine/blob/f7626ddd147fe20a6144b521a26739c863546f4a/Engine/Source/ThirdParty/GoogleVR/GoogleVR.Build.cs#L78

We reported this issue to Epic almost two months ago but still not fix provided…

I can confirm that this issue exists. Eagerly waiting for a fix from epic.

I made some progress, of course it’s more complex than expected.

The first issue is that the asset bundles are embedded into the IPA on the Windows machine, not the Mac (where the asset bundles are decompressed). The fix is to modify the file “RemoteMac.cs” (near line 563 - UE4.21.1) adding a call to rsync to sync-back the directory “Intermediate/IOS/FrameworkAssets/”. Running the Package command, this produces an IPA file on Windows containing all the needed asset bundles. But…

…Using the Launch command to run the IPA on the device, re-builds the IPA without adding the asset bundles. I’m still investigating this. I suspect that the Launch command uses a different build path respect to the Package command, and the iPhonePackager doesn’t take care of the “Intermediate/IOS/FrameworkAssets/” directory, failing to include the needed files.

I succeeded: using the patch described above and installing the app using the Project Launcher (with “by the book” cooking), I’m able - from Windows - to build remotely integrating third-party framework resources in the installed IPA. I’ll try to post some more information in the next days.

The fix (for the master branch): https://github.com/EpicGames/UnrealEngine/pull/5488

In attachment the patch file for UE4.21. To use it you must apply the patch and rebuild the solution at Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.csproj (it works also with Rocket).