You have two options: either make the app work natively with your platforms, sharing all the code that does not directly work with platform only features, or use something that can run things on multiple platforms.
I would personally lean towards doing the last, with the target being the JVM -- that doesn't have to mean use Java, as there are many much better languages that target the JVM.
I would personally lean towards doing the last, with the target being the JVM -- that doesn't have to mean use Java, as there are many much better languages that target the JVM.