user3302800 user3302800 - 1 month ago 21
Android Question

Cordova app crashing on Samsung Marshmallow phones

I'm trying to teach myself JavaScript by creating an little puzzle/game app with Cordova. I've got a basic prototype thing working, and have successfully got it to build on iPhone, and it runs perfectly.

I have 3 android phones to test with, 1 Marshmallow (BLU branded), 1 Lollipop, and 1 Kitkat... and the app works perfectly on those as well. I sent the app to 2 friends on the other side of the country to test, and it crashes on their Samsung Marshmallow phones ( a Galaxy 7, and a Galaxy Edge 7). It runs for a bit, and then just crashes without any user input.

So, I tried 2 separate crash analytics plugins, Fabric and Crittercism. I can verify that both of these are working, as I can force a crash in the app, and it shows up as a crash report.

But when my friends run the app with the crash analytics, whatever is going on that makes the app blowup, it isn't triggering any reports from Fabric or Crittercism. I've tried to get the android emulator running on my PC, but unfortunately it is an AMD processor, which is missing some necessary virtualization. I can't even get the super slow ARM version of the emulator to run on my PC, it just hangs forever.

I just recently installed cordova, and took all the defaults during setup. So from what I can tell, it should be targeting android API 23 (Marshmallow). But maybe there's some other kind of build issue that is messing things up?

So I'm kind of at a loss of how to debug this problem. Short of finding someone locally who can lend me a Samsung Marshmallow phone to debug with, I can't think of anything else that would work. Does anyone have any ideas?

Answer
  1. The ARM emulator is indeed excruciatingly slow. I would suggest a third-party emulator. I use GenyMotion (which uses VirtualBox under the hood). You might have some luck with that. Alternatively, ManyMo is a cloud-based solution that might prove useful.

  2. The system web view used by PhoneGap/Cordova will vary widely across Android devices, which means you can run into different issues across Android versions and device manufacturers. I suggest using the Crosswalk plugin to mitigate those problems. Do note that this will increase the size of your APK and footprint of the installed app on your device.

  3. When the app crashes, does it actually crash to the launcher, or does the app reload itself (or just show a background color)? I wouldn't expect Crashlytics to handle JavaScript issues unless the JavaScript caused the app to crash out to the launcher.