Time for a new release!

iOS 9 & Xcode 7 Support


ios9 xcode7

Already updated to Mac OS X El Capitan, iOS 9 and Xcode 7? We got you covered! This RoboVM release provides initial support for iOS 9 and Xcode 7. To try it out, download and install Xcode 7 next to your Xcode 6.4 installation, then drop to the command line, and make Xcode 7 your default:

RoboVM will then use Xcode 7 to compile your app and run it on your simulator or device. To switch back to Xcode 6.4, simply run the above command and provide the proper directory, e.g. /Applications/Xcode.app.

We’ve already begun binding the new iOS 9 APIs, such as the new contacts API. Work should be complete before the release of iOS 9 later this fall.

WARNING: You will need to recompile your apps to work on iOS 9! This includes existing apps already published to the app store, which need to be resubmitted after recompilation!
WARNING: Xcode 7, iOS 9 and El Capitan are still in beta. You will run into instabilities in both Xcode 7 and El Capitan. For production, we’d highly recommend to stick to Mac OS X Yosemite and Xcode 6.4!

Dynamic Framework Support

Thanks to contributions by Alex Itelman we were able to finish up support for including dynamic Objective-C and Swift frameworks in your RoboVM app. This is helpful if you plan on writing some native code for your RoboVM app.

Note that dynamic frameworks are only supported from iOS 8 upwards!

A full sample can be found in the samples repository

Thanks for your contributions, Alex!

Embedding RoboVM in Objective-C/Swift Apps

Screen Shot 2015-08-06 at 11.07.18

You can now embed your Java code as a dynamic framework in your Objective-C/Swift app. In this setup, you have a RoboVM project that only contains non-UI code, e.g. business logic, and an Xcode project containing UI and other Objective-C/Swift code for your app. RoboVM then lets you compile a dynamic framework out of your Java code, which you can then include in your Xcode project. The Java code can then be called from Objective-C/Swift via JNI.

A sample for this functionality can be found in our samples repository.

There are quite a few limitations with this approach:

  • No debugging support for your Java code
  • Null pointer exceptions and stack overflows will unrecoverably crash your application when debugging via LLDB
  • A lot of care must be taken regarding multi-threaded code, i.e. you need to attach/detach native threads via JNI appropriately
  • JNI is not for the faint of heart

This feature is currently in alpha, so expect some issues here and there. Once it stabilizes, it will be part of our commercial offering.

We love to give our users choices, which is why we implemented this feature. However, we’d strongly advise you to use the standard RoboVM workflow, where you write your app in Java, and include native code via static libraries or dynamic frameworks.

RoboPods

Pods

We have added 2 new RoboPods:

Make sure to checkout the dedicated samples for each RoboPod over on our samples repository. We’d specifically like to turn your attention to our new Parse sample, a highly sophisticated app that exercises many features you’d use in your own iOS app.

With this, we have finished our initial round of RoboPods, based on the voting results from 2 months ago. Going forward, we’ll evaluate more 3rd party libraries to be exposed as RoboPods. Reach out to us via hello@robovm.com if you require a specific 3rd party library to be exposed as a RoboPod.

RoboVM Studio 1.6

We’ve updated RoboVM Studio to version 1.6, which includes all kinds of fixes and enhancements listed in the bugfixes & enhancements section below. If you are currently using RoboVM Studio 1.5, you should get notified about an update. Simply download and replace your current RoboVM Studio installation!

 

Documentation

With Joseph joining our team, you no longer have to endure my Austrian accent in our tutorial screencasts! As a warm up, Joseph created a brand new screencast for our cross-platform basics tutorial. Check it out above!

We are in the process of creating new tutorials as well as developer guides on application fundamentals. Stay tuned for more!

Bug Fixes & Enhancements

As always, we squashed bugs, improved performance and added some bells and whistles. Here are the most important changes:

Please keep the feedback coming! Talk to us on our mailing list, our Github issues trackers or via hello@robovm.com.

Next Up!

As always, we’ll continue to improve RoboVM going forward. Our focus for the next release will be bindings for iOS 9, ironing out any issues with Xcode 7 and iOS 9, improvements to RoboVM Studio and additions to the cross-platform tooling.

We also have some more surprises up our sleeves we can’t talk about publicaly yet! Rest assured that they’ll improve your developer life.

Stay tuned and happy coding!