RoboVM 1.12 Released — Experimental tvOS Support

DZone 's Guide to

RoboVM 1.12 Released — Experimental tvOS Support

You can now try out tvOS integration within IntelliJ and the free RoboVM tool.

· IoT Zone ·
Free Resource

Last release we added experimental Bitcode support for iOS, a precursor to tvOS support. Today we are super excited to announce experimental tvOS support! Here’s how you can try it out, even without a tvOS device.

In RoboVM Studio or IntelliJ IDEA, simply create a new project and select one of the tvOS templates!

Screen Shot 2015-12-17 at 09.35.40

Once the project is created, you can find two new run configurations, one for any connected Apple TV device, and one for the Apple TV simulator. You can treat this just like any old iOS run configuration!

Screen Shot 2015-12-17 at 09.38.55

In Eclipse, create a new project and select one of the tvOS templates.

Screen Shot 2015-12-17 at 09.40.18

Right click your project, select Run As/Debug As and select a tvOS device or simulator!

Screen Shot 2015-12-17 at 09.41.02

We also added new tasks to our Gradle plugin:

./gradlew ios:launchTVOSSimulator
./gradlew ios:launchTVOSDevice

And of course our Maven plugin also got new goals:

mvn compile robovm:tvos-sim
mvn compile robovm:tvos-device

tvOS apps can be written using storyboards, just like iOS apps. Note however that simply running your existing iOS app on tvOS will not work. First of all, the APIs are slightly different. Also, you’ll have to add new launch images and add a new UIDeviceFamily to your Info.plist.xml


We will follow up with a more in-depth article and docs on RoboVM and tvOS in the next few weeks! For now you can play around with the project templates for tvOS and check out our updated game sample or the tvOS port of the HelloGL sample. Also check out Apple’s official documentation.

iOS 9.2 Support

In the meantime, Apple also released iOS 9.2, which comes with a few minor API additions. Check out our API diffs to find out what’s new!

Bug Fixes and Enhancements

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

  • The simulator will be brought to the front when you resume an app during debugging.
  • You can now select on which connected Apple device you want to run your app
  • Added @Availability annotations to all iOS APIs indicating the supported platforms (tvOS or iOS) and versions. In a future release we will emit compiler warnings and/or errors if you use unsupported APIs on a specific platform.
  • Added a setting in IntelliJ IDEA/RoboVM Studio to allow you disabling automatic run-configuration generation on project imports.
  • Updated the default launch images to look even more awesome.
  • Revamped the Eclipse project wizard. You can now select the type of project via the template dropdown. You now also have to explicitely specify a package name.
  • Added bindings to JavaScriptCore.
  • Android application id is no longer hardcoded in templates.
  • Fixed a GC issue when collecting soft/weak references.
  • Fixed a memory leak in IntelliJ IDEA/RoboVM Studio that would slow down the IDE to a crawl.
  • Fixed an issue in the debugger when dynamic proxies are used, e.g. in Retrofit code.
  • Fixed synchronization issues between IntelliJ IDEA/RoboVM Studio and Xcode when adding/removing@IBOutlet and @IBAction fields and methdos.
  • Fixed NetworkInterface#isUp().
  • Improved handling of primitive types in lambda compilation by removing unnecesssary boxing.
  • Made the conservative treeshaker the default if nothing else is specified. Previously, not using the tree shaker was the default.

Next Up!

Our focus for the next releases will be on implementing the new RoboPods, maturing tvOS support as well as full bitcode support.

Stay tuned and happy coding!

apple tv, intellij, iot, tvos

Published at DZone with permission of Mario Zechner , DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}