Time for a new release!
iOS 9 & Xcode 7 Support
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:
sudo xcode-select -s /Applications/Xcode-beta.app
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.
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.
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
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.
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 email@example.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!
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:
- Support for Gradle 2.5
- Fixed debugging support for Clojure 1.7.0
- Refactored the way projects are generated in RoboVM Studio/IntelliJ IDEA
- Refactored the way projects are automatically compiled on save in RoboVM Studio/IntelliJ IDEA
- Fixed cross-platform builds in RoboVM/IntelliJ IDEA so only affected modules are rebuild
- Fixed opening storyboards, which would occassionally fail
- Ensured the Eclipse and IntelliJ IDEA plugins work on Windows and Linux (you obviously can’t compile for iOS there)
- Rewrote Java 8 lambda and method handle support so it covers a few more corner cases
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!