Reasons for app startup failure:
- Not waiting for "deviceready"
- A syntax or semantic error occurring during initialization
- Failure to load an external library (use local libraries instead!)
- Failure to load the app's external code (use local code instead!)
Note that the emulator is far from a perfect guarantee that your app will function correctly -- as you are now learning. Manufacturers also often supply their own "special sauce", and sometimes this can also get in the way of our apps functioning correctly. I suggest using the Crosswalk Plugin (https://www.npmjs.com/package/cordova-plugin-crosswalk-webview) to help mitigate those issues.
I hope that helps, and if you post more information, perhaps we can narrow down the cause of the failure.