Since multiple dict tags can be in a plist, not just the top level, need to be able to specify to only insert once.
Adding an optional once="true" attribute to these commands in UPL will allow this.
1. Create iOS code project
2. Add this to the project's Build.cs:
if (Target.Platform == UnrealTargetPlatform.IOS) { string PluginPath = Utils.MakePathRelativeTo(ModuleDirectory, BuildConfiguration.RelativeEnginePath); AdditionalPropertiesForReceipt.Add(new ReceiptProperty("IOSPlugin", Path.Combine(PluginPath, "Test_UPL.xml"))); }
And add this Test_UPL.xml file:
<?xml version="1.0" encoding="utf-8"?> <root> <!-- init section is always evaluated once per architecture --> <init> <log text="Test UPL init"/> <setString name="APIKey" value="testkey"/> </init> <iosPListUpdates> <!-- Add Fabric.io ApiKey --> <addElements tag="dict" once="true"> <key>Fabric</key> </addElements> <setElement result="FabricKey" xml="<dict><key>APIKey</key><string>$S(APIKey)</string><key>Kits</key><array><dict><key>KitInfo</key><dict/><key>KitName</key><string>Crashlytics</string></dict></array></dict>"/> <addElement tag="dict" name="FabricKey" once="true"/> </iosPListUpdates> </root>
3. Package for iOS and look at the plist file to make sure the fabric key is only inserted once instead of for every dict block.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-47951 in the post.
5 |
Component | UE - Platform - Mobile |
---|---|
Affects Versions | 4.17, 4.18 |
Target Fix | 4.17 |
Created | Aug 1, 2017 |
---|---|
Resolved | Aug 2, 2017 |
Updated | Sep 16, 2019 |