It seems like an engine bug, but it was not resolved as of 5.4.1, so AndroidPlatformFile.cpp was modified as follows.
int64 GetEntryLength(const FString & Path)
{
const FString& Dir = Path + TEXT("/");
if (Entries.Contains(Path))
{
TSharedPtr<FFileHandleAndroid>& File = Entries[Path]->File;
return File != nullptr ? File->Size() : 0;
}
else if (Entries.Contains(Dir))
{
TSharedPtr<FFileHandleAndroid>& File = Entries[Dir]->File;
return File != nullptr ? File->Size() : 0;
}
else
{
return 0;
}
TSharedPtr<FFileHandleAndroid>& File = Entries[Path]->File;
return File != nullptr ? File->Size() : 0;
}