26 September 2013
Daily Build Roundup: Win Simulator + Android + Transition 2.0 + iOS
We’ve been pushing a lot of changes into daily builds since the last public release. If you’re a subscriber, you’ll have immediate access to a boatload of cool new features across iOS, Android, and our frameworks. Here are the highlights:
Windows users can now enjoy the same workflow that Mac users have long enjoyed.
The first is a killer feature. Whenever you make changes to a file in your project, the Corona simulator can automatically relaunch your project. This lets you make edits to your file and see the Simulator change live and in real-time! You can control this via the ‘preferences’ to always relaunch, prompt, or never do it. Personally, it’s something I use all the time.
The other improvement is the ability to have the simulator open the last active project when you launch the Corona Simulator. It’s turned off by default, so if you want to use it, there’s a setting (“Automatically open last project”) to turn it on in the preferences.
We’ve been making a ton of Android improvements, including a smattering of items like:
- native.newVideo() which (finally) adds support for native video objects on Android.
- Application icon support for xxhdpi devices.
- system.getInfo(“androidDisplayDensityName”) which returns “xxhdpi” for those devices.
- Improved suspend/resume stability for apps using “location”, “heading”, “accelerometer”, or “gyroscope” events.
We’ve also make some significant infrastructure improvements to image and texture loading:
- display.newText() now can create text much faster and use less memory.
- Text objects can change their text much faster.
- JPEG files now load 2-3 times faster and use less memory.
These improvements are a big deal if you need to load lots of big images. Thanks to these changes, you’re less likely to hit out-of-memory errors in the Dalvik (Java) VM.
[Update] Another benefit reported on the forums: Tableview performance is significantly improved on Android devices!
We’ve started a long-overdue upgrade to our transition library:
- Pause/resume transitions by object, by tag, by reference — or all of them. See transition.pause and transition.resume.
- More options for transitions such as the ability to tag them or set them to repeat. See transition.to for a complete list.
- The complete set of Robert Penner easing functions.
- A bunch of convenient functions for fading in/out, blinking, moving, and scaling. See transition.
We’ve got more improvements planned, so in the mean time, take it for a spin, read up on the updated transition library guide, and let us know what you think!
Starting in Daily Build 1214, we’ve officially switched over to using iOS 7 as the “Base SDK.” By defaulting to iOS 7 as the Base SDK, your app will now be treated as an iOS 7 app. That means when you use native widgets like textfields, you’ll get the iOS 7 look on an iOS 7 device.
Previously, we defaulted to iOS 6 as the Base SDK which meant that when you loaded the app on an iOS 7 device, the app would be treated as an iOS 6 app, down to the look and feel of UI controls like the keyboard.
Now, we’ve also tried to make sure your app still runs properly on an iOS 6 device. If you use the widget library, the one thing you’ll have to do is to make sure you select the correct theme. You can dynamically choose between the iOS 6 theme and the iOS 7 theme:
local version = system.getInfo( "platformVersion" )
if ( string.match( version, "7.*" ) ) then
-- use iOS 7 theme
widget.setTheme( "widget_theme_ios7" )
-- default iOS theme
widget.setTheme( "widget_theme_ios" )
The more I think about it, the more it makes sense for the widget library to automatically select the iOS 7 theme when running on an iOS 7 device. Chime in on the comments if you agree.
One thing we had to do before changing the Base SDK was address various issues due to changes in iOS 7. For example, the status bar APIs in iOS changed so we had to make sure we could still change the status bar in both iOS 6 and iOS 7, using the correct API for each version of the iOS. We also worked around several random iOS 7-specific issues like textfields losing the last character (same code worked fine on iOS 6).
There is at least one known issue that appear to be an iOS 7 bug related to Game Center. The issue is that the achievement notification only shows for the first achievement. Specifically, this is the one that gets delivered to iOS’s Notification Center; you’re still free to present your own notification. We’ve seen other reports on the Apple dev forums on this issue as well.
Finally, if you want to skip the PNG crush step during device builds, you can add a “skipPNGCrush” flag to your build.settings file:
skipPNGCrush = true,