Shaders don't work unless recompile them

I’m developing with Unreal 4.18.3. I have two global shaders in my plugin and they only work after recompiled. After recompiled they work till the editor is closed, and keep down for next time when I open the editor. I used to force to recompile them at BeginPlay but this doesn’t work on Android Platform so I have to figure out how to fix it.
Something interesting is that when I change the code in one of the two usf files before launching the editor, then both of them will run properly.
So the question is

  1. If they can run successfully after being recompiled, why the good result doesn’t cached correctlly?
  2. There isn’t any error or warning. ShaderDevelopmentMode is on. They just don’t draw anything. What’s the main reason?
  3. How to solve this?I have to launch my app on mobile so I can’t just force them to be recompiled in runtime.