AES parameters specifications I'm writinig manager for all transformations which is described on https://developer.android.com/reference/javax/crypto/Cipher.html  

There are few questions about how cryptographic algorithm works.

I found on Wikipedia that AES can have 128, 192, 256 key sizes. But I cannot define sizes for IV.

I got this error:

java.security.InvalidAlgorithmParameterException: expected IV length of 16


So is it mean that for all AES transformations IV should have only one size (128-bit)?

Except ECB:

java.security.InvalidAlgorithmParameterException: ECB mode does not use an IV


I also noticed that AES/CBC/NoPadding doesn't work with any stream (it should be fixed). What the sense of this transformation if it cannot be applied to all data? But it works with any data if I preferred padding. Any explanations?

javax.crypto.IllegalBlockSizeException: error:0607F08A:digital envelope routines:EVP_EncryptFinal_ex:data not multiple of block length


And the last question. For which modes IV is necessary/optional (it seems like necessary (not optional) for every mode except ECB) while encryption and for which is unnecessary while decryption?

Finally I should to create table for every mode (there is 6): CBC, CFB, CTR, CTS, ECB, OFB. Something like:
1. IV: necessary / optional / unnecessary.
2. IV for decryption: necessary / unnecessary.
3. Acceptable IV lengths.
4. Data should multiple of block length: true / false (block length).
So is it mean that for all AES transformations IV should have only one
  size (128-bit)?


No, not really. The acceptable size for the IV is defined by the mode of operation. Some modes require a full block size as the IV (CBC, CTR, ...), others a bit less and again others take just about any length of an IV that you throw at them (GCM, ...).


  What the sense of this transformation if it cannot be applied to all
  data?


CBC works by chaining full blocks together. Thus you need to process a multiple of the block size. Normally if we don't have a multiple of the block size we pad our data to this size, but in this case you chose to disable padding and as such the length restriction applies.


  For which modes IV is necessary/optional?


Any mode that does not take an IV is trivially insecure under standard security definitions. As such it is strongly recommended against using any such mode (like ECB or SIV) unless absolutely neccessary. Every other mode requires an IV. And if you need an IV for encryption you'll also need one for decryption and vice versa.