(Part 5) Automated Testing on Android Devices: Bringing everything together through shell scripts

Posted by & filed under Android, Corona SDK, iPad, iPhone, Lua, Tutorials, Tips and Demos, Videos.

There has been a lot of material presented over the last four parts. In this final part, we will finally go into some detail about our automated testing system for Android. We will also finally get an opportunity to bring everything together by looking a little more how our shell scripts orchestrate the test run and connect components from the previous parts. Android was a lot easier to setup automated on-device tests than iOS because the entire toolchain is command line driven. But ironically, actually running the tests has been more unreliable for us, mostly due to some bug related to adb. For some reason we can’t explain, adb will hang on us and it will not allow us to communicate with our device. This has


(Part 4) Automated Testing on the iOS Simulator: Scripting Bridge/LuaCocoa & System Events

Posted by & filed under Corona SDK, iPad, iPhone, Lua, Partners, Tech, Tutorials, Tips and Demos, Videos.

We allow Corona developers to also build for the Xcode iOS Simulator. Sometimes the simulator is preferable to our Mac or Windows simulator because the Xcode Simulator behaves more like a real device. Since we officially support the Xcode Simulator, we run our automated tests on the Xcode iOS Simulator to help verify our stuff actually works. While we could theoretically reuse the same process of scripting Xcode that we described in Part 2, we opted for a slightly different approach. As described in Part 2, Xcode 4 broke everything so we didn’t want to put this in the same critical path. Furthermore, Xcode 4 has some very nice speed improvements and reduces our build times to almost half. So instead, we simply use the command


(Part 1) Automated Testing on Mobile Devices for iOS and Android

Posted by & filed under Android, Corona SDK, iPad, iPhone, Lua, Tutorials, Tips and Demos, Videos.

Preamble: This post is going to be a little different than usual. What we present here is behind the scenes stuff used in making the Corona SDK. But we hope the information presented here goes beyond satisfying simple academic curiosity. We hope this information will actually be useful for others to directly use in their own projects. And the target audience for this post goes beyond our normal demographic. In addition to Corona developers, we are also reaching out to all Xcode/iOS/Mac developers, all Android developers, all Lua developers, and anybody interested in automated testing/software reliability. Also, as a consequence of our solution, people interested in Applescript, Scripting Bridge, and/or LuaCocoa may also find things of interest. Because the topic is vast, not every single


The secret/undocumented audio APIs in Corona SDK

Posted by & filed under Lua, Tutorials, Tips and Demos.

A few months ago, the developers from Yobonja (who made hits like Blast Monkeys) posted they discovered a ‘Hidden Audio Module’ in the Corona SDK. Since Daily Builds have been temporarily suspended until Aug 2, this seemed like a good time to talk about the secret/undocumented audio APIs in Corona to give you something to play with in the meantime. But before I go on, let me set up the disclaimer and ground rules. Disclaimer The features I talk about in this article are untested, unsupported, and we reserve the right to remove these APIs at any time. Use at your own risk. We do not want these features to be support issues for us, so do not send us bug reports with code using


Pathological sleep disorder on iOS

Posted by & filed under Corona SDK, iPad, iPhone, Tech.

Soon after the rollout of our new audio engine, a few of our users reported some performance problems. We believe we have fixed this performance problem, but the problem itself was actually a rather bizarre bug that seems to be an Apple performance problem. So, I thought it might make for an interesting blog post.


Using closures in Lua to avoid global variables for callbacks

Posted by & filed under Corona SDK, Lua, Tech, Tutorials, Tips and Demos.

This type of question has appeared on the forums multiple times. Basically, it goes something like this: I have set up a listener callback function. But when the callback function is invoked, I would really like access to a specific variable in that callback function. The event that is passed back to me doesn’t give me access to the variable I want. How can I access my variable? There are multiple solutions to this problem, but often using a global variable is the path of least resistance. But nobody really likes being forced to use global variables when they don’t have to. Well, I’m going to introduce a much more elegant solution that leverages the true power of Lua. If you read Programming in Lua,


Preview: New Audio Engine Powered by OpenAL

Posted by & filed under News & Announcements, Tech.

We’ve been working diligently on a brand new audio engine for Corona which we will hope you will love. Our new engine is built from the ground-up, on top of the industry standard, OpenAL, which is designed for low-latency, high performance mixing, and a darling technology of the video game industry. We have many features planned for our new audio engine, but here is a tiny taste of it. In our prior sound engine, you could only play one “streaming” sample at a time. Our new engine no longer arbitrarily limits you to the number of streams you can play. So if you had large files like background music and speech you needed to play at the same time, you would have a hard time.