@Nullable public AvdInfo createOrUpdateAvd(@Nullable AvdInfo currentInfo,@NotNull String avdName,@NotNull Device device,@NotNull SystemImageDescription systemImageDescription,@NotNull ScreenOrientation orientation,boolean isCircular,@Nullable String sdCard,@Nullable File skinFolder,@NotNull Map<String,String> hardwareProperties,boolean createSnapshot){
  if (!initIfNecessary()) {
    return null;
  }
  File avdFolder;
  try {
    if (currentInfo != null) {
      avdFolder=new File(currentInfo.getDataFolderPath());
    }
 else {
      avdFolder=AvdInfo.getDefaultAvdFolder(myAvdManager,avdName,myFileOp,true);
    }
  }
 catch (  AndroidLocation.AndroidLocationException e) {
    IJ_LOG.error("Could not create AVD " + avdName,e);
    return null;
  }
  Dimension resolution=device.getScreenSize(orientation);
  assert resolution != null;
  String skinName=null;
  if (skinFolder == null && isCircular) {
    skinFolder=getRoundSkin(systemImageDescription);
  }
  if (FileUtil.filesEqual(skinFolder,AvdWizardUtils.NO_SKIN)) {
    skinFolder=null;
  }
  if (skinFolder == null) {
    skinName=String.format("%dx%d",Math.round(resolution.getWidth()),Math.round(resolution.getHeight()));
  }
  if (orientation == ScreenOrientation.LANDSCAPE) {
    hardwareProperties.put(HardwareProperties.HW_INITIAL_ORIENTATION,ScreenOrientation.LANDSCAPE.getShortDisplayValue().toLowerCase(Locale.ROOT));
  }
  if (currentInfo != null && !avdName.equals(currentInfo.getName())) {
    boolean success=myAvdManager.moveAvd(currentInfo,avdName,currentInfo.getDataFolderPath(),SDK_LOG);
    if (!success) {
      return null;
    }
  }
  return myAvdManager.createAvd(avdFolder,avdName,systemImageDescription.getSystemImage(),skinFolder,skinName,sdCard,hardwareProperties,device.getBootProps(),createSnapshot,false,currentInfo != null,SDK_LOG);
}

@ Nullable public AvdInfo createOrUpdateAvd ( @ Nullable AvdInfo currentInfo , @ NotNull String avdName , @ NotNull Device device , @ NotNull SystemImageDescription systemImageDescription , @ NotNull ScreenOrientation orientation , boolean isCircular , @ Nullable String sdCard , @ Nullable File skinFolder , @ NotNull Map < String , String > hardwareProperties , boolean createSnapshot ) { if ( ! initIfNecessary ( ) ) { return null ; } File avdFolder ; try { if ( currentInfo != null ) { avdFolder = new File ( currentInfo . getDataFolderPath ( ) ) ; } else { avdFolder = AvdInfo . getDefaultAvdFolder ( myAvdManager , avdName , myFileOp , true ) ; } } catch ( AndroidLocation . AndroidLocationException e ) { IJ_LOG . error ( "Could not create AVD " + avdName , e ) ; return null ; } Dimension resolution = device . getScreenSize ( orientation ) ; assert resolution != null ; String skinName = null ; if ( skinFolder == null && isCircular ) { skinFolder = getRoundSkin ( systemImageDescription ) ; } if ( FileUtil . filesEqual ( skinFolder , AvdWizardUtils . NO_SKIN ) ) { skinFolder = null ; } if ( skinFolder == null ) { skinName = String . format ( "%dx%d" , Math . round ( resolution . getWidth ( ) ) , Math . round ( resolution . getHeight ( ) ) ) ; } if ( orientation == ScreenOrientation . LANDSCAPE ) { hardwareProperties . put ( HardwareProperties . HW_INITIAL_ORIENTATION , ScreenOrientation . LANDSCAPE . getShortDisplayValue ( ) . toLowerCase ( Locale . ROOT ) ) ; } if ( currentInfo != null && ! avdName . equals ( currentInfo . getName ( ) ) ) { boolean success = myAvdManager . moveAvd ( currentInfo , avdName , currentInfo . getDataFolderPath ( ) , SDK_LOG ) ; if ( ! success ) { return null ; } } return myAvdManager . createAvd ( avdFolder , avdName , systemImageDescription . getSystemImage ( ) , skinFolder , skinName , sdCard , hardwareProperties , device . getBootProps ( ) , createSnapshot , false , currentInfo != null , SDK_LOG ) ; }
update the given avd with the new settings or create one if no avd is specified . returns the created avd .
