I don't understand why virtual keyboards (e.g. on Android) cannot have letters with diacritic along with normal letters (not hidden behind long tap popup). That should not be difficult to do.
They can and do (maybe not standard on Serbian phones, though). My German Android keyboard has extra keys for äöüß. They make typing somewhat harder, because all the keys have to be smaller to fit
Usually carrier provided phones come preconfigured with the Serbian Latin as the base language and come with a fully-fledged Latin keyboard with all of the extra letters visible.
Some phones from the carriers (LG phones notably) come with the default Android Serbian Cyrillic localization and Cyrillic keyboard.
If you buy a mobile phone without a contract, you will go to the first time setup wizard which will ask you what language you want to use. You will, among other languages, have Српски (Serbian) and Srpski (Serbian Latin). Depending on what you choose, you will get the appropriate keyboard.
There are also other keyboards which provide an easy way to input both Latin and Cyrillic characters from one keyboard application. Also, every key is large enough because we don't have a lot of letters in contrast to English (30 letters). The biggest alternative keyboard application is the Google's GBoard application[1][2].