Multi-Platform Support for UE4 Plugins
The plugin I currently have listed on the Marketplace, ObjectDeliverer, only supports Windows.
Recently, I received several requests from users asking for support for other platforms, so I decided to reluctantly look into it.
I found many articles about multi-platform support for the final game package, but I had trouble finding much information specifically about plugin packaging.
However, since most of it is the same as game packaging methods, by piecing together various bits of information, I managed to get to a point where it seems likely to work.
The following information assumes a Windows development environment.
- As I will write at the end, only iOS is not working correctly.
Environment Preparation
First, from the Engine installation options, check the platforms you want to output to and install the necessary features.

Next, install additionally required software.
Android
Install the tools necessary for the Android development environment all at once using the following installer:
[UE4 Install Directory]\Engine\Extras\AndroidWorks\Win64\CodeWorksforAndroid-1R7u1-windows.exe
Details about this information can be confirmed from the link below.
Unreal Engine | 1. Settings Required for Android Game Development
Linux
For Linux, the official website has links to installers for the necessary software (toolchain), so download and install from there.
The toolchain differs for each Engine version, so installation is required for each Engine version you want to package for.

Links to the installers are available on the site below.
(The Japanese page only goes up to Engine version 4.19, so I am providing the link to the English page.)
iOS
Since iOS cannot be built on a Windows machine, the method seems to be preparing a Mac machine on the same network and building by remotely logging in from Windows.
Therefore, remote login settings need to be configured.
For normal game packaging, it seems the settings are completed by entering the Mac machine name and login username in [ProjectSettings]-[Platforms]-[iOS]-[Build]-[Remote Build Options].
You can also create and register SSH Keys here.
However, this information is not used for plugin packaging, and it won’t remotely access the Mac.
After trying various things, adding the following description to [UE4 Install Directory]\Engine\Config\IOS\IOSEngine.ini made it attempt remote connection.
[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
RemoteServerName=Mac_Machine_Name
RSyncUsername=Login_Username
Plugin Packaging
For the basic method of plugin packaging, please refer to the previous article.
Creating a Package for a Custom UE4 Plugin for the Marketplace - AYU MAX
Also, if creating via Editor operations instead of commands, it seems you can also Package from the Plugins window. (Learned this recently)
To create output for the targeted platform at this time, it is necessary to write the platform name in WhitelistPlatforms in the *.uplugin file. (It seems you can also specify via command line arguments instead of using WhitelistPlatforms)
Writing as follows apparently outputs for Windows (64bit, 32bit), Mac, Linux, iOS, Android, HTML5, so let’s try running the packaging command with this setting.
"WhitelistPlatforms": [
"Win64",
"Win32",
"Mac",
"Linux",
"IOS",
"Android",
"HTML5"
]
Packaging Results
I judged whether packaging was successful by looking at the command results and the contents within the plugin output directory’s \Intermediate\Build.
The results were as follows:
Platform | Result |
---|---|
Win64 | 〇 (Success) |
Win32 | 〇 (Success) |
Mac | × (Failure) |
Linux | 〇 (Success) |
iOS | × (Failure) |
Android | 〇 (Success) |
HTML5 | 〇 (Success) |
As a result, generation succeeded for all except Mac and iOS.
Looking into it, it seems Mac currently cannot be built from Windows, and the only way for Mac is to install UE4 on a Mac and build from there.
iOS actually failed with an error during the command execution, and it didn’t work.
From the error message content, I think it’s related to provisioning, but I haven’t found a proper solution yet.
The official method is probably the procedure described in Unreal Engine | 3. iOS Provisioning - Generating Signing Certificates, but this procedure cannot be realized without completing iOS Developer registration, so I am looking for alternative methods.
I understand it’s absolutely necessary for game builds, but personally, I wonder if it’s also needed for plugin builds.
If I can’t find a method, I will obediently pay the tribute to Apple and try building with the official method.
If anyone knows a way to package plugins without paying the tribute, please let me know.
Summary
Although only iOS didn’t work, I was able to package the UE4 plugin for multi-platform support.
However, I am thinking of supporting only Windows for my plugin for the time being.
If there is a problem with the plugin released on the Marketplace, I think I can manage it with my knowledge for Windows, but I don’t have much experience with other platforms, so I currently lack the confidence to support them properly.
Releasing with the restriction of not supporting anything other than Windows might be an option, but I will think about it a little longer.