public void createProject(
      AndroidSDK target, String projectName, File path, String activity, String packageName)
      throws CoreException {
    IStatus status = HybridProjectConventions.validateProjectName(projectName);
    if (!status.isOK()) throw new CoreException(status);
    // activity class name matches the project name
    status = HybridProjectConventions.validateProjectName(activity);
    if (!status.isOK()) throw new CoreException(status);

    status = HybridProjectConventions.validateProjectID(packageName);
    if (!status.isOK()) throw new CoreException(status);

    ExternalProcessUtility processUtility = new ExternalProcessUtility();
    StringBuilder command = new StringBuilder();
    command.append(getAndroidCommand());
    command.append(" create project");
    command.append(" --target ").append(target.getId());
    command.append(" --path ").append('"').append(path.getPath()).append('"');
    command.append(" --name ").append('"').append(projectName).append('"');
    command.append(" --activity ").append(activity);
    command.append(" --package ").append(packageName);

    CreateProjectResultParser parser = new CreateProjectResultParser();
    processUtility.execSync(
        command.toString(), null, parser, parser, new NullProgressMonitor(), null, null);
    if (parser.getErrorString() != null) {
      throw new CoreException(
          new Status(
              IStatus.ERROR,
              AndroidCore.PLUGIN_ID,
              "Error creating the Android project: " + parser.getErrorString()));
    }
  }