You will need OS X (or Windows - it is a little bit harder there) and completely working Android Studio and Xcode. Full specification is available here.

Install Multi-OS Engine plugin for Android Studio:

Go to Settings > Plugins > Browse repositories > Manage repositories > Add:

Refresh plugins and install Multi-OS Engine Plugin (v. 1.3.0-beta-2 or newer)

Multi-OS Engine MVP project structure

Project structure

Enabling iOS support is basically adding a new java (or kotlin) module to the project.

If you keep your Android project in a clean Model-View-Presenter architecture adding iOS view layer by Multi-OS Engine is quite easy.

That’s next steps of enabling iOS support can be done at any point of developing an Android app. You can start with iOS in the beginning or add it later.

Add Java (or Kotlin) based iOS module to Android project

Basic structure visible in Android Studio

In project view click New > Module > Java Module and name it “commons”,

and name it “commons”, Right click on your Android module > Open module settings > Dependencies > Add module > commons ,

, In project view click New > Multi-OS Engine Module > Single View Application. Good practice here is to name the module “ios” in the last step,

> Good practice here is to name the module “ios” in the last step, Right click on your iOS module > Open module settings > Dependencies > Add module > commons ,

, Now move your model and presentation layer to the commons module - now you can access it both in Android and iOS modules.

Take a look at your run configurations. Now you are able to run and debug your iOS app from Android studio while working on a iOS Simulator or connected iPhone/iPad device.

Now, let’s switch to Xcode and add some native views. Right click on iOS project and Multi-OS Engine Actions > Open project in Xcode.

Create iOS view and generate Java bindings

In Xcode open your storyboard file and modify the views as you wish. I highly recommend here to spend some time and watch some iOS UI tutorials. To continue you should have your views created and linked to view controllers classes headers.

Then proceed back to Android Studio, select your iOS project with right click and select Multi-OS Engine > Create new binding. Name it and fill it as below:

Nat/J binding generator.

It will create an Java class named MainViewController in selected package.

Here you have remember to:

Change the class annotations to these visible above,

Override an viewDidLoad() method,

method, Access desired method by removing the @Generated annotation, native keyword and adding an body.

Now you are able to use your Java classes from commons (maybe subscribing to some RxJava subjects?) and fully access native iOS SDK.