MOE 1.3.0 beta 2 released

We are pleased to announce the release of the second beta of MOE 1.3. We already shared our plans for MOE 1.3 in a previous blog post and since the last beta a lot of improvements have been made.

Please, keep in mind that this is a beta release, so be prepared for some bugs and rough edges. Feedback is very welcome here in the comments or on the forum.

What’s New in MOE 1.3.0 beta 2

Updated Bindings

iOS bindings in the new beta contains support for iOS 10.2. Also added bindings for the community requested SystemConfiguration/CaptiveNetwork.h.

There were also some fixes in existing bindings:

  • @ReferenceInfo annotation generation was improved.
  • +initialize and +load method bindings were removed. Both of these methods shouldn’t be invoked directly and only caused issues with third party library bindings.

Custom Objective-C Class and Protocol Runtime Names

The binding generator with the new nbc file support is already a big change, however there is always room for improvement. In this release we added support for handling custom runtime names for Objective-C classes and protocols. This allows our users to create bindings for 3rd party libraries which are written in Swift but are Objective-C compatible. Our new sample - SimpleChart - already makes use of this feature.

MOE SDK Distribution

The SDK installation process was removed in this beta. When Gradle downloads the MOE SDK, there are no additional processing steps other than extracting it. In return the SDK is prepared faster and the process is much less error prone.

NBC Binding Generation

We added support for choosing between generating hybrid or binding classes. By default we supported binding classes. This gave you access to Objective-C APIs in Java. Hybrid classes extend on this by enabling you to extend existing Objective-C classes with Java code without inheritance.

This feature is mostly used to implement / extend UIViewController classes, that were created in Xcode and used in Storyboard designs. (Note, that MOE supports also generating Objective-C UIViewController stubs in Java UIViewController classes, if you prefer to start the implementation of your UI code from Java.)

Resource Handling in Gradle

In this beta we improved resource handling in the Gradle plugin. All resources should be correctly collected. Jar dependencies, custom resource directories, source set dependencies, etc. should work just fine.

UI Actions and Outlets Generation

Generating UI actions and outlets can now be configured. We added support for adding custom code snippets, disabling library imports and specifying which classes should be used during generation. You can read more about this here.

Other Changes

Other than the above changes, we also made a lot of under-the-hood improvements in NatJ, NatJGen, Gradle plugin, Maven plugin, IDEA plugin, Eclipse plugin and other components.

Upgrading to MOE 1.3 beta 2

If you are a 1.3 beta 1 user, then you can upgrade the following:

  • To upgrade the Gradle plugin make sure you are using a plugin version which enables upgrading to 1.3.0-beta-2, for example 1.3.+. To force the upgrade, you can run ./gradlew --refresh-dependencies.
  • To upgrade to the new Maven plugin, use the following dependency.
  • To upgrade your project, please install the latest Eclipse and/or IntelliJ plugin, open your project, right click on the MOE module and select Multi-OS Engine Actions > Inject/Refresh Xcode Project Settings
  • To install or upgrade to the MOE 1.3 beta 2 plugin in IntelliJ (and Android Studio), you need to add a custom plugin repository with the following URL:

    After refreshing the repository contents, the 1.3.0-beta-2 plugin version will be available for installation or upgrade.

  • To install or upgrade to the MOE 1.3 beta 2 plugin, you need to add the following custom plugin repository:

We created a more detailed guide for upgrading from MOE 1.2.

Known Limitations

This is a second beta release, so we have a few known limitations.

Not all sample apps were updated

Most of our Java samples are updated to 1.3. Don’t worry, Kotlin samples are on our TODO list!

Adding MOE to an existing Xcode project

The command line tool is not present yet in this first beta, but if you create a new MOE project, then replace the Xcode project with your existing one, then you can already run the Xcode updater command from your IDE.

Documentation not yet updated

The MOE documentation in general was not yet updated for the new version. This blog post contains the most relevant information about the new version. If you get stuck, or run into a bug, you can contact us on our forum.

Windows support

This beta should have a working Windows support, but is was not heavily tested.

Request for Comments

We designed MOE 1.3 based on the requests and reports from the MOE Community. We hope, that you will like these new features, and they will make your life easier as a developer.

As always, leave your comments below, so we will know your opinion on all the changes and plans. The development of MOE is based on the requirements of the community, so we are open to discuss any changes in direction or features for future releases.

If you need a specific feature in MOE, you may consider contracting Migeran, the core developers and project lead of the MOE project to develop it.

Also, if you are working on a commercial project with MOE, Migeran offers commercial support, including live online support with Migeran’s top engineers. Contact Migeran for more details.


Leave a Comment