MOE 1.3.0 released

We are pleased to announce the release of MOE 1.3.0. Most of MOE users already moved to the previous betas, if you are still on MOE 1.2.x, it is time to update now.

MOE 1.3 is a big improvement over 1.2 with lots of new features. Most of these features were already included in the previous beta releases. Read on to find out what new stuff we included in the final release of 1.3.

Feedback is very welcome here in the comments or on the forum.

What’s New in MOE 1.3.0 (compared to beta 2)

Updated iOS Bindings

The iOS bindings were updated with more accurate type information in function pointers and blocks. We also updated internal bindings for clang and libimobiledevice.

MOE Bindings for 3rd Party Libraries

We started a new MOE Bindings repository with pre-generated MOE bindings for a number of frequently used libraries:

  • Crashlytics
  • Facebook
  • Firebase (partial)
  • Google GPG
  • Google Plus
  • Google SignIn
  • MoPub

The generated bindings can be published to your local maven repository using the following command:

./gradlew :<module-name>:publishMavenJavaPublicationToMavenLocal

Then you just need to add it as a regular Maven dependency in your MOE app. Don’t forget to link to the native part of the library as well, e.g. using CocoaPods.

Each binding project also doubles as a test project for the bindings, so you can import them into your IDE and try them out.

We intend to publish these bindings to JCenter, once they received a bit more testing.

Updated Samples

The samples were updated to MOE 1.3. Some obsolete samples were removed. A new SimpleCharts based sample was added showing the use of a Swift library in a MOE App.

Updated NatJGen

  • Improved logic for resolving types in function pointers and blocks
  • Unwrap typedefs when looking for opaque pointers
  • Support for NBC file format
  • Options for keeping logs and generated .natjgen files

IDE Plugin improvements

  • Fix action and outlet generation in Maven projects
  • Add Kotlin project templates
  • Add new settings to the Binding Editor
  • Fixed escaping for argument passing in the launcher

Gradle Plugin Updates

  • Added additional parameters in the IPA build task
  • Use archive and export archive to generate IPA build
  • Generate Xcode schemes if they don’t exist (required for Xcode workspace based projects)
  • Added moeNatjgen task to generate bindings from the command line (IDE plugins now use this task internally)
  • Specifying a custom SDK version for the plugin

Various other updates

  • NatJ: Fixed use-after-free bug
  • Maven plugin: Add support for generating actions and outlets
  • Internal documentation updates
  • Cleanups all over the codebase
  • Device launcher: added support for waiting for the user to unlock the connected device
  • Various other fixes and cleanups

Upgrading to MOE 1.3

If you are a 1.3 beta 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
  • You may install or upgrade to the MOE 1.3.0 plugin in IntelliJ (and Android Studio) using the standard plugin repositories, no need to configure the beta cheannel manually.
  • To install or upgrade to the MOE 1.3.0 plugin in Eclipse, you need to add the following plugin repository:

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

Known Limitations

Adding MOE to an existing Xcode project

The command line tool is not present yet, 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 update is in progress

We wanted to get the new version out to you as soon as possible. We will continue working on updated documentation and release updates as the become available. 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.

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