You can write shared functionality in pure Ruby using RubyMotion then write your view layers for iOS and Android and have them each compiled correctly to native apps for each platform. I'd rather use Ruby than Swift or Kotlin.
RubyMotion 3.0 for Android is still in the early beta phase and it probably won't be publicly available before the end of the year (it's not been announced, but I've seen the beta and that's my guess).