So I’m working through all of the documented iOS development steps. I’m getting hung up when I try to deploy it to an iOS device. The error message states: No provisioning profiles matching the bundle identifier ???com.epicgames.Charm???
Now, I created an appID on the iOS development center called Cii Charm. I have a .profile file downloaded. I copied it to Charm/Build/IOS folder and renamed it to Cii Charm.mobileprovision. I even tried renaming it to Charm.mobileprovision and UE4Game.mobileprovision.
My project name inside the settings file is called Charm. This is a C++ code project.
Now, is the error due to a fact that there is a mismatch in the names specified above or does the editor truly not see the provision file at all? I’m new to this process as I’m a windows developer trying to deploy on our companies mac machine.
What you are missing it looks like is your bundle name does not reflect your mobile provision URL.
You need to look into your info plist and verify it matches what ever URL you used for your mobile provision. com.epicgames is just a default epic games put there and unless you used the same name when creating your app id and mobile provision this won’t be correct.
To verify what your app id is go to the developer website find your mobile provision click it and check the app Id and make sure you use the same one for your info plist.
Your tutorial goes through how to use the remote tool to build and deploy it from a PC. I have a PC and I just copied my files over to a mac and rebuilt it from there. I didn’t plan on using a remote tool at this point since it requires the Github version. Is it possible for me to launch it to the iPad from the mac in this manner? Also you refer to a .plist file. I’m not sure how and/or where that file gets generated? It doesn’t seem to be generated in the steps provided from the Unreal documentation =(
I’m not exactly sure if your using the Mac sox. In windows you would go to project settings in the editor then ios, and there should be something about the plist there after you configure the project for it. In a code project you should be able to find it in your build folder.
So check those two places first.
I haven’t tried launching to a device directly using remote tool, I usually create IPA and install so I can’t comment on that.
Using the GitHub version is a pain but it’s pretty useful too for tracking down issues. Plus I’ve had to change the source twice now in a code project because of missing “engine_api” tags causing dll linker errors.
OK. I’m getting close. After going through all of the steps I’m able to initiate the Package Process! It even can connect to the UnrealRemoteTool via ip address and starts the process.
After about 15 seconds into the process runs into the same error over and over:
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
This is what the UnrealRemoteTool spits out so I’m assuming it is a permissions issue on the MAC machine. I made sure to do the 777 command on the UE4 folder at the start of the steps. Is there something else I could be missing?
I haven’t seen the above error before, I can only assume there is still something going on with permissions. Maybe try running the remote tool with sudo?
Try launching the game from the editor on the Mac and see if that works before using the Remote Tool. Also generate Xcode files(right click on UE4 project file) after copying everything over to the Mac. If it is a non code project you can deploy directly from windows in 4.3(works with the preview version).
OK. My issue was that the UE4 folder was not on the root on the MAC. It was under the root of my users folder =(. I moved it over and reran the process. I’m past that error and it seems to be compiling. I’ll update you all after the process completes.
Good to hear. Currently the whole process is very fragile. That root folder path is actually hard coded (at least in 4.1 and I assume 4.2 also). Did you find the info plist file?
So I can finally get it to remote build but still have problems with the signing (see below). Updated the plist file Key=CFBundleURLName String=com.ciinc.ciicharm since I think that is what is in the .mobileprovision file.
I opened the .mobileprovision file and found the following:
So I basically tried both “com.ciinc.ciicharm” and “72AG549EXJ.com.ciinc.ciicharm” but it keeps throwing the same error. Perhaps the files aren’t in the correct location? The error below says CODE_SIGN_RESOURCE_RULES_PATH = /UE4/Builds/GT02/UE4/UnrealEngine/Charm/Binaries/IOS/CustomResourceRules.plist which is the path on the remote MAC machine. Looking in that location there is a CustomResourceRules.plist file but there is no .mobileprovision file in that location. Should it be copied to that location during the process??
Running RPC on 10.2.1.133 …
… making application (codesign, etc…)
Using signing identity ‘iPhone Developer’
… working folder: /UE4/Builds/GT02/UE4/UnrealEngine/Engine/Binaries/IOS/XcodeSupportFiles/…
… /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project UE4_FromPC.xcodeproj -configuration Development -target ‘Charm - iOS’ -sdk iphoneos CODE_SIGN_RESOURCE_RULES_PATH=/UE4/Builds/GT02/UE4/UnrealEngine/Charm/Binaries/IOS/CustomResourceRules.plist CODE_SIGN_IDENTITY=“iPhone Developer” IPHONEOS_DEPLOYMENT_TARGET=“6.0”
[RPC] Build settings from command line:
[RPC] CODE_SIGN_IDENTITY = iPhone Developer
[RPC] CODE_SIGN_RESOURCE_RULES_PATH = /UE4/Builds/GT02/UE4/UnrealEngine/Charm/Binaries/IOS/CustomResourceRules.plist
[RPC] IPHONEOS_DEPLOYMENT_TARGET = 6.0
[RPC] SDKROOT = iphoneos7.1
[RPC] === BUILD TARGET Charm - iOS OF PROJECT UE4_FromPC WITH CONFIGURATION Development ===
[RPC] Check dependencies
[RPC] Code Sign error: No matching provisioning profiles found: No provisioning profiles matching the bundle identifier “com.ciinc.Charm” were found.
[RPC] CodeSign error: code signing is required for product type ‘Application’ in SDK ‘iOS 7.1’
[RPC] ** BUILD FAILED **
IPP ERROR: Xcode build failed!
[RPC] The following build commands failed:
[RPC] Check dependencies
[RPC] (1 failure)
IPP ERROR: RPCCommand MakeApp failed with return code 65
[=voigtboy;97702]
So I can finally get it to remote build but still have problems with the signing (see below). Updated the plist file Key=CFBundleURLName String=com.ciinc.ciicharm since I think that is what is in the .mobileprovision file.
I opened the .mobileprovision file and found the following:
So I basically tried both “com.ciinc.ciicharm” and “72AG549EXJ.com.ciinc.ciicharm” but it keeps throwing the same error. Perhaps the files aren’t in the correct location? The error below says CODE_SIGN_RESOURCE_RULES_PATH = /UE4/Builds/GT02/UE4/UnrealEngine/Charm/Binaries/IOS/CustomResourceRules.plist which is the path on the remote MAC machine. Looking in that location there is a CustomResourceRules.plist file but there is no .mobileprovision file in that location. Should it be copied to that location during the process??
Running RPC on 10.2.1.133 …
… making application (codesign, etc…)
Using signing identity ‘iPhone Developer’
… working folder: /UE4/Builds/GT02/UE4/UnrealEngine/Engine/Binaries/IOS/XcodeSupportFiles/…
… /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -project UE4_FromPC.xcodeproj -configuration Development -target ‘Charm - iOS’ -sdk iphoneos CODE_SIGN_RESOURCE_RULES_PATH=/UE4/Builds/GT02/UE4/UnrealEngine/Charm/Binaries/IOS/CustomResourceRules.plist CODE_SIGN_IDENTITY="iPhone Developer" IPHONEOS_DEPLOYMENT_TARGET="6.0"
[RPC] Build settings from command line:
[RPC] CODE_SIGN_IDENTITY = iPhone Developer
[RPC] CODE_SIGN_RESOURCE_RULES_PATH = /UE4/Builds/GT02/UE4/UnrealEngine/Charm/Binaries/IOS/CustomResourceRules.plist
[RPC] IPHONEOS_DEPLOYMENT_TARGET = 6.0
[RPC] SDKROOT = iphoneos7.1
[RPC] === BUILD TARGET Charm - iOS OF PROJECT UE4_FromPC WITH CONFIGURATION Development ===
[RPC] Check dependencies
[RPC] Code Sign error: No matching provisioning profiles found: No provisioning profiles matching the bundle identifier “com.ciinc.Charm” were found.
[RPC] CodeSign error: code signing is required for product type ‘Application’ in SDK ‘iOS 7.1’
[RPC] ** BUILD FAILED **
IPP ERROR: Xcode build failed!
[RPC] The following build commands failed:
[RPC] Check dependencies
[RPC] (1 failure)
IPP ERROR: RPCCommand MakeApp failed with return code 65
[/]
I’m documenting all of this in hopes to help others. So in the .plist file it had:
All is good. Now I’m troubleshooting why it doesn’t seem to find the cert/private key that I imported on my windows machine =( Any ideas??
Found Info.plist (D:\UE4\UnrealEngine\Charm\Saved\StagedBuilds\IOS\Info.plist) in stage, which will be merged in with stub plist contents
Using mobile provision ‘iOS Team Provisioning Profile: com.ciinc.ciicharm’ to code sign
… Writing updated embedded.mobileprovision
IPP ERROR: … Failed to find a certificate that matches the mobile provision to be used for code signing
Found CFBundleVersion string ‘10246.0’ and updated it to ‘10246.9’
Saving IPA …
… Writing updated Info.plist
Opening source executable…
… Initial signature step
In the future you can make what’s called a “wildcard” app Id. Basically your app if can be something like com.something.* . The star means your bundle can have any word there. If your mobile provision and app I’d were set up this way it would have worked but yours didn’t have a wild card so you needed to be specific.
Also another tip in project settings under packaging uncheck rebuild (this will make it so it doesn’t rebuild every time you package making things slot faster second time around)
Did you import it under your user account and put in the “personal” store? If you double click it does it say there’s a private key associated with it (in mmc)?
The bundle identifier set-up is a known issue which I am hoping to fix for the next release by adding the ability to modify it from the iOS Project Settings. Sorry about that one. As for the provision issue, we did just update how we handle finding provisions on the PC to mimic what happens on the Mac with Xcode. So if Xcode via the remote tool found and signed the application, then IPP should be able to find and sign the application. Can you check in your C:\Users<UserName>\AppData\Local\Apple Computer\MobileDevice\Provisioning Profiles directory to see if Charm.mobileprovision exists? If so, then it did find it and the signing error is something else. If it isn’t there, then for some reason IPP is not finding the provision/cert combination. Once you find out the answer to the above, could you open a answerhub question and post the full log of the build. I may be able to determine more from the whole thing.
Ok, a quick update as I looked through the IPP code to see if I could narrow this down. It is finding the correct provision from the cache and as part of finding it, it does validate the provision against your installed certificates. However, a little bit later in the code (actually almost immediately after) when it tries to find the certificate again to load it, it fails to find it. I’m not sure why, and so far I haven’t been able to reproduce this locally. I’ll see if I can get a reproducible case tomorrow and a fix.
So I must have been more tired last night than I thought, but looking through the code today I can see a way for it to make it past finding a provision without verifying the certificate until later. In this case what must be happening is it doesn’t find a matching cert/provision pair and you don’t have a wildcard provision so it defaults to utilizing the embedded provision brought back from the remote build. In this case, you don’t have a valid certificate on the PC for that provision and so it fails (I will be adding some better messaging for that). So, can you point me to which document you used to import your provision and certificate? Is the certificate used to sign on the mac remote build the same one as you imported on the PC? Also, the question above still stands about checking or the mobile provisions in your cache. Hopefully we can get this resolved in short order.
Also, it just occurred to me. What version of UE are you on? 4.1, 4.2, 4.3? I’m assuming you are using the source from GitHub since you are building, but knowing what version you are coming from would help because IPP did just change in 4.3 and that is what I am basing my advice on
OK. My last issue had to do with the certificate. Apparently I downloaded the wrong one. Once I downloaded the correct one I just had to import it on the PC like it did the other and it worked fine. We got it launching on the iPAD and all was good. Then I ran into other issues and eventually found myself making this post: