Steps for IOS build with UnrealRemoteTool

I only have a mac mini and a powerful PC so I’d prefer to do most of my work on PC and only compile on mac and use it for packaging. I’m trying to setup UnrealRemoteTool and it generates an ipa, but fails to open my descriptor file on startup. I want to double check my steps. Can someone confirm I’m doing this right?

Mac is on Mavericks
PC is on Windows 8 with Visual Studio Express 2013

Here’s my steps so far:

Mac

-Clone GitHub

-Install Xcode from the app store

-Sign up for Apple Developer IOS

-Create mobileprovision file on the Apple Developer site that covers my iphones and ipad

-Install the mobileprovision on all my devices

-Start a terminal session

-sudo mkdir /UE4

-sudo chmod 777 /UE4

-sudo mkdir -p /Library/MobileDevice/Provisioning\ Profiles

-sudo chmod 777 /Library/MobileDevice/Provisioning\ Profiles

-Run the UnrealRemoteTool binary from Engine/Build/IOS/

PC

-Clone from GitHub

-Run generate project files batch

-Open the solution file

-Build UE4 project in development win64

-Edited RemoteServerName in RemoteToolChain.cs to point at my mac (The correct way is to set an environment variable, but this works)

-Add loadFromRemoteSources enabled="true" /> to the iphone packager exe config and app config to work around a packager error

-Added UE4Games.uprojectdirs file to the root directory with “./” in it

-Open UE4Editor.exe

-Make a new Basic Code project called IOSTest

-Built IOSTest Development Editor Win64 in VS 2013

-Open UE4Editor.exe, pick IOSTest, run in Mobile Simulator just for fun

-Build IOSTest Test config IOS platform in VS 2013

Mac

-Double click the IPA generated in the UE4\machinename*dirpathonpc*\Binaries\IOS

-Open the Apps tab in iTunes for my connected iPhone, click install next to IOSTest, Click sync

Is UnrealRemoteTool going to be fully supported eventually?

http://blogs.msdn.com/b/shawnfa/archive/2009/06/08/more-implicit-uses-of-cas-policy-loadfromremotesources.aspx was the problem I was getting from iphonepackager. Might be because I’m on Windows 8 instead of 7 or 7.1.

Packaging in the editor now. Going to be a while, mac mini is a bit slow to compile.

Your main problem is that you have no content in your .ipa.

For starters, some of what you were doing is based on old UE3 methods. Secondly, I am away from a computer, and so am not running myself through these steps to verify :slight_smile: Since we haven’t been focusing on compiling IOS on a PC, we haven’t really been testing this path in the GitHub build, although it should all work, since we use this at Epic :wink:

We will be making this a more polished/documented experience right “out of the box”

But for now, here’s fixed steps from your list.

Mac

-Install Xcode from the app store

-Sign up for Apple Developer IOS

-Create certificate mobileprovision file on the Apple Developer site that covers my iphones and iPad

-Install certificate on your Mac by double clicking on what you download.

-Start a terminal session

-sudo mkdir /UE4

-sudo chmod 777 /UE4

-Get UnrealRemoteTool on your Mac (either by cloning in GitHub or by copying from a PC). If you copy from a PC, then make sure to chmod a+x the UnrealRemoteTool executable

-Run the UnrealRemoteTool binary from anywhere. It’s recommended to run it in a loop in case it crashes:

-for (( ; ; )) ; do ./UnrealRemoteTool; done

PC

-Clone from GitHub

-Run generate project files batch

-Open the solution file

-Build UE4 project in development win64

-Edited RemoteServerName in RemoteToolChain.cs to point at my mac (The correct way is to set an environment variable in UE 4.0, or a .xml file coming up in 4.1)

-Add loadFromRemoteSources enabled=“true” /> to the iphone packager exe config and app config to work around a packager error (NOTE: I have never heard of this, so I don’t know what this is for, but I guess it can’t hurt?)

-Added UE4Games.uprojectdirs file to the root directory with “./” in it

-Open UE4Editor.exe

-Make a new Basic Code project called IOSTest

-Built IOSTest Development Editor Win64 in VS 2013

-Open UE4Editor.exe, pick IOSTest, run in Mobile Simulator just for fun

-Download your .mobileprovision file from Apple, and put it into IOSTest/Build/IOS and name it IOSTest.mobileprovision

-Build IOSTest Development config IOS platform in VS 2013

-Back in the editor, select File | Package | IOS. This will make a .ipa in IOSTest/Binaries/IOS with all cooked data in it. Alternatively, you can use the Launch button to cook just the map open in the editor into the .ipa.

Alternatively, you can use a Cook on the Fly server on the PC for your IOS game to load from. THIS IS EVEN LESS TESTED, ESPECIALLY WITH CODE-BASED PROJECTS FROM THE EDITOR.

-In Engine/Binaries/Win64, run:

-UE4Editor-cmd IOSTest -run=cook -targetplatform=IOS -cookonthefly

Mac

-Find the project on the Mac here: /UE4/Builds/…/Engine/Binaries/IOS/UE4_FromPC.xcodeproj. Actually, I’ve never personally tested building a editor-made code project remotely, so I am not 100% sure where project ends up, maybe it’s in IOSTest on the Mac?

-Open that project, select IOSTest - IOS (Run), hit Option-Command-R and set your command line to be -filehostip=xx.xx.xx.xx (use your PC’s IP address here).

-This will connect your IOS device to your PC and load content without needing to precook it, and then you can debug the IOS app using Xcode.

Just to clarify Josh’s debugging steps.

/UE4/Builds/PCmachinename/PCRootDir/UnrealEngine/Engine/Binaries/ has an xcode project in it that you open

Set scheme to IOSTest_RunIOS

Set destination to the iPhone that is plugged in

Product->Build For->Running (Option + Command + R, doesn’t seem to work on my PC keyboard)

Then Product->Scheme->Edit Scheme->Run IOSTest.app->Arguments tab

Put -filehostip=x.x.x.x into arguments passed on launch

Hi,

I’m using 4.1 but I’m getting an error building Development IOS in VS 2013:

1>EXEC : error : Error getting full path for: /UE4/Builds/XXX-PC/Udk/UnrealEngine-4.1/Engine/Source/../../C:\Users\xxx\Documents\Unreal Projects\IOSTest\Intermediate\Build\IOS\IOSTest\Inc\Launch\ (Exception: The given path's format is not supported.)

Any ideas what could be causing this? I followed the steps but used the XML file from 4.1 to point to my Mac server.

Can anyone expand on “Added UE4Games.uprojectdirs file to the root directory with “./” in it”, Where do I add this?

You need to have the UE4 folder in the Root of your drive on PC and Mac, put the UE4Games.uprojectdirs file in the UnrealEngine folder, and your projects.

Has anyone ever actually got this to work? I’ve been trying to for a long time now (I really should give up, but I continue on in spite). Not said on this list, I had to install my Developer Certificate on my WINDOWS machine too, because for whatever reason the iPhonePackager looks for it? It also fails to merge the final exe with the Mobile provision and Code Resources (though no error is outputed, it acts it did everything fine, I’m speculating that maybe a shell script is failing? Finally, which may because of the merge failure above, it searches the code blob for a code signing and fails and I can’t get past this point. Anyways, if possible it would be nice if someone can review the steps posted above, because I am in complete doubt in them now that I’ve had to install my Developer Certificate on my Windows machine which isn’t a stated step. Looking at the Source too, it appears it takes some pretty big assumptions on where certain folders will be, so I think being more clear on where to place the engine on the PC and Mac, and Projects would be helpful to.

I’m getting close but the remote tool keeps throwing the following error for every file.

MainFrameActions: Packaging (iOS): UnrealBuildTool: Error:Error Domain=NSCocoaErrorDomain Code=513 “You don’t have permission to save the file “Textures” in the folder “Public”.” UserInfo=0x7f96f8d02c90 {NSFilePath=/UE4/Builds/GT02/UE4/UnrealEngine-4.2/Engine/Source/Runtime/SlateCore/Public

Now I made sure to do the 777 permission step on the ue4 folder. What can I be missing? Can there be a permission issue with transferring files over the network? How can I figure out what permissions are required??

I’m getting close but the remote tool keeps throwing the following error for every file.

MainFrameActions: Packaging (iOS): UnrealBuildTool: Error:Error Domain=NSCocoaErrorDomain Code=513 “You don’t have permission to save the file “Textures” in the folder “Public”.” UserInfo=0x7f96f8d02c90 {NSFilePath=/UE4/Builds/GT02/UE4/UnrealEngine-4.2/Engine/Source/Runtime/SlateCore/Public

Now I made sure to do the 777 permission step on the ue4 folder. What can I be missing? Can there be a permission issue with transferring files over the network? How can I figure out what permissions are required??

I also have this issue.Do you solve?Could you help me?

I am going this step.
Open that project, select IOSTest - IOS (Run), hit Option-Command-R and set your command line to be -filehostip=xx.xx.xx.xx (use your PC’s IP address here).
But the Xcode output report information:Attempting to badge the application icon but haven't received permission from the user to badge the application.And My iPad hint me connect failed.

So,how can I solve this issue.

I had the same issue as voigtboy… ended up doing chmod -R 777 on the UE4 directory on the Mac did the trick. It’s complaining because it can’t write to the /UE4/Builds/GT02/UE4…etc path.

Some recent info you guys may want to know about:

  • We’ve updated how everything works to allow for SSH/Rsync compilation instead of using UnrealRemoteTool.
  • It’s currently optional (in 4.7). In 4.8 I’m hoping it will be the default
  • The biggest issue with it now is that there are one or two phases that are slower than URT (which had custom logic to optimize stuff)
  • We are moving the location of syncing from /UE4 to ~/UE4 (or something, but basically, it will help with the permission junk - i.e., it will just work)
  • If you run UAT on the Mac to package a .ipa (which makes an uncompressed .app), then you’ll be able to Xcode debug the full packaged build without needing -filehostip (i.e., you won’t need the device on a network). I assume that you could make a .ipa in Windows and copy it over and debug that one, but you’d have to unzip it the .app from the .ipa. Probably. This hasn’t been tested AFAIK.

Josh

Is there any documentation on how to setup the ssh/rsync compilation yet? I think I have it pretty close, but get a bunch of rsync errors when (i think) it’s trying to copy my project files to the build server, and when it gets to the compile phase, I get “no such file or directory” errors. Here’s a sampling:

The rsync error:
rsync: link_stat “/cygdrive/C/UE4/source/UnrealEngine/Users/michaeldko/Documents/UnrealProjects/TestIOS/Intermediate/Build/IOS/TestIOS/Inc/CoreUObject” failed: No such file or directory (2)

The clang error:
clang : error : no such file or directory: ‘/Users/michaeldko/UE4/Builds/MICHAELDKO-MBP/C/Users/michaeldko/Documents/UnrealProjects/TestIOS/Intermediate/Build/IOS/TestIOS/Inc/Paper2D/Paper2D.generated.cpp’

Thanks in advance for any input.
Mike

We just discovered that SSH doesn’t work when your code project is outside the UE4 directory structure. I am pretty sure that is causing your problem.

Can you move your project into ue4?

That worked, and it’s now compiling. Thanks Josh!

We’ll have the external project thing squared away for 4.8

**

  • I Everyone, I want to user the Unreal 4.18.3 im my Mac, but Open GL is not supported. How do i do to make run the UNREAL 4.18.3 trough the Metal? How do i do to install the Metal in my Imac (mid 2011 - HighSierraOs). Who can help me?
    ========================================

**