Hi, I just ran into that issue and find a lot of similar with no solution. So I want to share my case here and hope, it can be helpful to someone else running into that.
I’m creating a module for a loading screen using the Movieplayer API. Packaging for Android just failed.
********** **COOK COMMAND STARTED** **********
...
UATHelper: Packaging (Android (ASTC)): LogInit: Display: LogHerb64LoadingScreen: Error: StartupModule(): MoviePlayer is not enabled
..
AutomationTool exiting with ExitCode=25 (Error_UnknownCookFailure)
Wait, that’s my own code logging the error…
So, what’s happening?
The Cooking process obviously starts my module, and the MoviePlayer does not activate by design in that case (see end of this post). I do a check in the StartupModule() function - and I do an UE_LOG for this as Error.
The Cooking process does intercept this one and recognizes this ‘Error’ severity in as such and decides to fail with that UnknownCookFailure.
My learning and the solution:
Change any UE_LOG statements from Error to Warning, if your own module is run by the Cooking process, otherwise Cooking fails, as these get interpreted by the tool:
UE_LOG(LogHerb64LoadingScreen, Warning, TEXT("StartupModule(): MoviePlayer is not enabled"));
And another lesson learned: try to build early to find issues like this ‘in time’
BTW: just for completenes: see the MoviePlayer.cpp engine source, which shows, that this one always will report a non-running movieplayer:
bool bEnabled = !GIsEditor && !IsRunningDedicatedServer() && !IsRunningCommandlet() && GUseThreadedRendering;
#if !UE_BUILD_SHIPPING
bEnabled &= !FParse::Param(FCommandLine::Get(), TEXT("NoLoadingScreen"));
#endif