Cordova android emulation - Error: Cannot read property 'semver' of null

This is due using an emulator with an unstable Developer Preview API version.

You probably have a device using API 27 (Android 8.1).

Open your AVD, remove that device and re-run.

It's also useful to use --target <emulator_name> when launching the emulator if you have more than one.

To get a list of available names to use, call the emulate command with --list


This is a bug in cordova-android's list_images method, it crashes when it encounters an android version on your system that's not in its list: https://github.com/apache/cordova-android/pull/422

You can apply the fix manually in platforms/android/cordova/emulator.js within your project


The Mighty Chris is right, that is the problem and he fixed it upstream (thank you Chris!). However just to add to his answer, for people like me who cannot update cordova-android to include the patch, the fix is (for cordova-android v6.4.0):

  • find the path <project_root>/platforms/android/cordova/lib/emulator.js
  • find the line avd.target = 'Android ' + level.semver + ' (API level ' + api_level + ')';
  • replace it with avd.target = 'Android ' + (level ? level.semver : '') + ' (API level ' + api_level + ')';

Here is the relevant patch.