Plugin defined config files appear to no longer be included in packaged Android builds in 4.20.2

Still digging into this further as I feel this is likely something I’m doing wrong.

Everything worked as expected in 4.18.3. Was unable to fully test in 4.19 due to Android incompatibilities w/ unrelated 3rd party plugins. Now testing in 4.20.2 and have run into this issue.

I have a set of plugins which are used across a number of projects, each plugin defines it’s own config (.ini) file in order to avoid conflicts in the standard configs (Game/Engine/Input/etc) as well as simplifying adding/configuring the plugins per project.

Config classes are defined as follows

UCLASS(config = PluginXYZ, defaultconfig, BlueprintType )
class PLUGINXYZ_API UXYZSettings : public UObject

At first I thought this was an issue w/ the (seemingly new?) [Staging] section in DefaultGame.ini and the WhitelistConfigFiles/BlacklistConfigFiles - and UBT generated helpful warnings pointing me in that direction.

So I added entries as follows to DefaultGame.ini


That silenced the warnings, but I feel I must have configured this wrong… as even w/ this new system to manage user defined .ini files - and specific warnings in the packaging process on how to configure it - it seems to be completely non-functional on Android under 4.20.2? Not to be critical but it strikes me as an absurd and sinister Unity-esque oversight if that’s the case. Took quite a while to figure out what was going wrong as all of the settings are very nuanced, mostly subtle, and the defaults a bit too sensible (I suppose?). Even given that, it’s hard for me to imagine I’d be the first person to run into this issue - though I can’t find anything else about it anywhere. So, circling back - what might I be doing wrong?

I’m going to start testing w/ some blank projects to see if I can narrow down the issue further. I will upload an example project to demonstrate the issue… tomorrow (too much head to keyboard collision for today) - unless someone can lead me to a solution :slight_smile:

So far I have only confirmed that everything works as expected for Win64 (configured settings are correct at runtime) but not on Android (custom/plugin/user config object properties are simply the ctor default values). I have found no indication that the issue affects the standard (Game/Engine/Input/etc) config files - though if that were the case certainly someone else would have noticed by now.

There are no platform override .inis used in these projects at all, and I did try nuking the Saved/Config files to no avail.

I expect if I moved all the settings into one of the standard config files, it would behave correctly. Unfortunately that would be a maintenance disaster and make 4.18->4.20 migration for the associated projects a nightmare… also would break backwards compatibility for the plugins (so many #if ENGINE_MAJOR/MINOR_VERSION checks in vain…), which would create more headaches, so I’d much rather not.

Thanks for reading!

Edit: all builds in shipping configuration due to signature requirements

Update: Well I am doing something wrong, as a simple test project w/ a simple config class seemed to work correctly. Though I can’t for the life of me figure out what the difference is between a new test project w/ a new plugin vs a new test project w/ my existing plugins. Especially given that I made the test plugin by just copying and pasting a subset of one of the full plugins.

Any ideas would be greatly appreciated.

Well, finally figured it out.

Picked up a second (identical) test device, it worked properly w/ the existing .APKs I had already packaged (which were failing on my original test device).

From as far as I’ve been able to narrow it down, the issue appears to only occur when installing an APK packaged w/ 4.18, and then replacing it with a newer version packed w/ 4.20 (presumably w/ the custom .ini files present in both APK versions).

I ended up factory resetting the original device and it worked immediately with the 4.20 packaged APKs, uninstalling the application did not resolve the problem (or the standard generated InstallXYZ.bat - though the bat file has had issues w/ this projects in the past since it’s a SYSTEM app - so maybe it would work on a normal setup). To confirm my theory I installed an old 4.18 packaged APK of the same app, then reinstalled the (just verified working) 4.20 built APK and the problem immediately resurfaced.

Fortunately for me, none of the related projects have been submitted yet - so I’m in the clear :wink: As far as I can tell, however, it would be a catastrophic issue for anyone maintaining an app already in the wild who wanted to update UEngine versions.

Godspeed to whoever gets to fix this issue :X

Noticed that one of the 3rd party plugins in use caused the minimum android SDK requirement for the project to be incremented from 24 to 25 in between the two builds (4.18 vs 4.20) I was testing with. So it may be related to that instead of UEditor version, although 24vs25 is 7.0 v 7.1, which generally should (in theory) be a relatively minor difference.

Also it seems that some Android devices and/or OS versions are not affected by this issue. Haven’t been able to find anything consistent, however it appears to be most common w/ 7.1.2 (SDK 25). Strangely 7.1(.0) seems to be fine.

Unlikely I’ll spend any more time on this, but happy to assist with info.