Porting an existing (legacy) application to other platforms often takes a lot of development time, depending on how portably it was initially developed. I’d argue that if you start out with the intention of supporting many platforms and throughout the project do not tie it unnecessarily to OS-specific APIs and features, then releasing for multiple platforms becomes much less of a development effort. Stick to platform-neutral languages, use the standard libraries whenever possible, minimize and isolate the platform-specific code (probably just the UI), and you’re well on your way.