How to use UPL(unreal plugin langauge) with iOS

UE support UPL with iOS since 4.13 update.

Android example is exist in /Engine/Plugins/Runtime/GearVR/Source/GearVR/GearVR_APL.xml

but iOS example is not exist.

I try below upl xml code.

<?xml version="1.0" encoding="utf-8"?>
<root>
	<!-- init section is always evaluated once per architecture -->
	<init>
		<log text="IPL init"/>
        <copyDir src="$S(PluginDir)/ThirdParty/iOS/resource/"
        dst="$S(BuildDir)/" />
        <log text="IPL resource -> $S(BuildDir) copy done"/>
	</init>
    <iosPListUpdates>
        <log text="IPL In iosPlistUpdates...."/>
        <insert>
            <key>CFBundleVersion</key>
            <string>0.4a</string>
        </insert>
    </iosPListUpdates>
</root>

init process is normally passed.

but iosPlistUpdates is not passed.

what’s wrong with this?

I saw that upl use “iosPlistUpdates” keyword in “UEDeployIOS.cs”…

  • Build Error Output log.

    [2016.09.19-09.08.01:513][584]LogPlayLevel: UnrealBuildTool: UnrealBuildTool Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
    [2016.09.19-09.08.01:513][584]LogPlayLevel: UnrealBuildTool: at System.ThrowHelper.ThrowKeyNotFoundException () [0x00000] in :0
    [2016.09.19-09.08.01:513][584]LogPlayLevel: UnrealBuildTool: at System.Collections.Generic.Dictionary`2[System.String,UnrealBuildTool.UnrealPluginLanguage+UPLContext].get_Item (System.String key) [0x00000] in :0
    [2016.09.19-09.08.01:513][584]LogPlayLevel: UnrealBuildTool: at UnrealBuildTool.UnrealPluginLanguage.ProcessPluginNode (System.String Architecture, System.String NodeName, System.String Input, System.Xml.Linq.XDocument& XMLWork) [0x00000] in :0
    [2016.09.19-09.08.01:513][584]LogPlayLevel: UnrealBuildTool: at UnrealBuildTool.UEDeployIOS.GenerateIOSPList (System.String ProjectDirectory, Boolean bIsUE4Game, System.String GameName, System.String ProjectName, System.String InEngineDir, System.String AppDirectory, UnrealBuildTool.UEDeployIOS InThis) [0x00000] in :0
    [2016.09.19-09.08.01:513][584]LogPlayLevel: UnrealBuildTool: at UnrealBuildTool.UEDeployIOS.GeneratePList (System.String ProjectDirectory, Boolean bIsUE4Game, System.String GameName, System.String ProjectName, System.String InEngineDir, System.String AppDirectory) [0x00000] in :0
    [2016.09.19-09.08.01:514][584]LogPlayLevel: UnrealBuildTool: at UnrealBuildTool.UEDeployIOS.PrepForUATPackageOrDeploy (UnrealBuildTool.FileReference ProjectFile, System.String InProjectName, System.String InProjectDirectory, System.String InExecutablePath, System.String InEngineDir, Boolean bForDistribution, System.String CookFlavor, Boolean bIsDataDeploy)
    [0x00000] in :0
    [2016.09.19-09.08.01:514][584]LogPlayLevel: UnrealBuildTool: at UnrealBuildTool.UEDeployIOS.PrepTargetForDeployment (UnrealBuildTool.UEBuildTarget InTarget) [0x00000] in :0
    [2016.09.19-09.08.01:663][598]LogPlayLevel: UnrealBuildTool: at UnrealBuildTool.UnrealBuildTool.DoPostStartupStuffThatCanAccessConfigs (System.String[] Arguments) [0x00000] in :0
    [2016.09.19-09.08.01:664][598]LogPlayLevel: CommandUtils.Run: Run: Took 11.705935s to run mono, ExitCode=5

using Node in 4.13… could’t compile.

Is there bug???

I believe there may be a bug with iosPListUpdates I have submitted a pull request to have it corrected. Please look at the UnrealEngine git repo and look for pull requests from me “robertfsegal”.

In 4.14 still the same problem…