CoronaViewer: Instant on-device previews

CoronaViewer: Instant on-device previews

One of the things app developers love about Corona is the fast iteration — make edits to your project and preview them instantly in the Corona Simulator.

Today, we’re going to take that one step further with CoronaViewer. It’s going to dramatically improve your productivity. With CoronaViewer, you’ll be able to edit your project from your Mac/Win desktop and preview them right away on your device.

CoronaViewer is an app that you run on your device. It works by sync’ing project files that live in a special Dropbox folder. When you make edits to these files on your desktop, they’ll automatically be updated to CoronaViewer.

Here’s a quick video showing how CoronaViewer works in practice:

CoronaViewer is currently in beta on iOS (Android is not available yet). There are a few quirks around first-time use and switching between your projects, but you’ll find it’s well worth it to be able to preview your app instantly on device.

To access CoronaViewer, you’ll need a Pro (or higher) subscription. Install daily build 2014.2347 (or after), and then follow the instructions in the CoronaViewer github repo.

walter
51 Comments
  • GP Animations
    Posted at 05:47h, 26 June

    Anyone else getting errors trying to build the app? Is it because I have Xcode 5 and Xcode 6-Beta both installed?

    Unexpected build error (check the Simulator console for messages).

    2014-06-26 08:46:29.517 Corona Simulator[30152:507] Using Custom Build Id 00000
    Using additional build settings from: /Users/Greg/Downloads/CoronaViewer-master/build.settings
    WARNING: Your SDK may be out of date b/c the following SDK directory could not be found: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk
    WARNING: Using the following SDK instead: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk
    2014-06-26 08:46:39.312 Corona Simulator[30152:507] Runtime error
    /Users/Greg/Desktop/CoronaViewer.app/.build/libtemplate/Builder.lua:310: {“status”:32512,”message”:”sh: /Applications/Xcode5-DP3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++: No such file or directory”}
    stack traceback:
    [C]: ?
    [C]: in function ‘assert’
    /Users/Greg/Desktop/CoronaViewer.app/.build/libtemplate/Builder.lua:310: in function ‘checkError’
    /Users/Greg/Desktop/CoronaViewer.app/.build/libtemplate/Builder.lua:333: in function ‘build’
    ?: in function ‘buildExe’
    ?: in function

    • Walter
      Posted at 11:05h, 26 June

      From your log msg, I see “/Applications/Xcode5-DP3.app”, so it looks like you are using a Beta of Xcode5 (DP3 = developer preview 3).

      The issue seems to be a setup issue. You should be seeing this for any project that uses plugins.

      Try using a non-beta version of Xcode. You’ll need to set the path to xcode via xcode-select on the command line.

  • Ske
    Posted at 06:35h, 26 June

    This is awesome!

  • JCH_APPLE
    Posted at 08:48h, 26 June

    It certainly be useful to test how an app shows on different devices, and to test how things occur when simulator doesn’t show them (maps…)
    But I’m not sure this should be a priority. I mean that you provide something that will certainly help us but you have “spent” hours of work to give us a feature we can already have with “publish for device”.
    In the meantime, some promised features like Windows support are “close” but not available at all. Widgets could be improved, basic features could be added (print for instance…)
    My impression (and don’t want to offense anybody) is that Corona Labs is going into multiple directions (Cloud, Cards, Enterprise….) and that it would be better to focus on one strong product and then develop branches and related products.
    Am I alone to have this opinion?

    • Joe
      Posted at 09:26h, 26 June

      Absolutely!

      One important thing for Corona is to allocate more time & resources on bug fixing. There are many fundamental bugs that need immediate attention and there are also many advanced bugs to be fixed so we as developers can enhance our apps into the next level.

      It’s time for Corona to focus on keeping existing developers.

      • Walter
        Posted at 11:32h, 26 June

        Thanks for the feedback. I’ve put my e-mail below as this is a little off-topic.

        Let me address several things:

        First off, CoronaViewer is an enhancement to your existing workflow, not an entirely new product. We’ve heard numerous folks desire the ability to test features in the Simulator that were previously device only. This bridges that workflow gap.

        Second, everyone has features they’d like to see. We are actively working on Windows. It’s not been an easy port to say the least.

        For us, basic features means something that belongs in the core (while print is more like a plugin). Got other features in mind? Let me know: walter at coronalabs dot com.

        Finally, we do prioritize bugs based on community impact. If you’ve got bugs you’ve reported, send me a note on it: walter at coronalabs dot com. If there’s a good case, I’ll look into escalating it.

    • David Grant
      Posted at 19:50h, 26 June

      I agree 100% with you. While the feature is nice I feel like I’m trying to follow a kid with ADD. First they are building an awesome lego house and out of no where he goes and starts digging a hole to china a few minutes later he’s training to be in the NBA by shooting hoops. I used to love the fact that Corona developers were always thinking and innovating, in fact that was one of the reasons why I went the corona sdk route. Lately though it seems as though there is no real direction and deadlines come and go without any mention. I was super excited for windows builds promised by 1st quarter of 2014 and that’s long gone. Next week will mark the end of Q2 actually. I was super excited for corona cards. I built an app that utilized it and figured since iOS was already released the android version would be soon to follow. I’ve had that app sitting collecting dust for 2 months now since corona cards for android is still in beta and you get this stupid popup in your app letting you know that. Since I’ve been waiting on those though we’ve received a project editor which they said the production was halted on since they had better things to work on and since other options are available and now this. I don’t want to sound ungrateful I appreciate the work they are putting into it I just wish they wouldn’t get us excited about something that is a year or more away from becoming a reality.

  • Martin
    Posted at 09:41h, 26 June

    Sry that Corona Viewer is a joke. Really in which direction Corona is moving? Nobody seems to focus on keeping existing devs.
    It was in the past like that and its still is like that.

    • Joe
      Posted at 10:19h, 26 June

      Corona should also set up a decent QA team.

      But anyway, they are not fixing bugs quickly enough, why a QA team to find out more bugs?

      Look at the daily builds for the past month, can’t be disappointed more!

  • romanski
    Posted at 09:43h, 26 June

    Despite the fact that Corona should spend more time fixing existing bugs, this is quite an amazing feature. I have to say. Very cool.

  • Gremlin Interactive
    Posted at 10:05h, 26 June

    This is awesome, thanks!

  • Hey Topher
    Posted at 10:12h, 26 June

    This is great idea and very useful.

    What happens when you use APIs that are not available in the simulator (ie. Game Center and native.newVideo)? Are they ignored by Corona Viewer on the device?

  • Gremlin Interactive
    Posted at 10:25h, 26 June

    Has anyone had any luck getting this to work yet?

    After running (using daily build 2347)

    : HID: The ‘Passive’ connection ‘CoronaViewer’ access to protected services is denied.
    : Runtime error
    module ‘plugin.viewer’ not found:resource (plugin.viewer.lu) does not exist in archive
    no field package.preload[‘plugin.viewer’]
    no file ‘/var/mobile/Applications/A9FC1DBF-7D49-4C51-B387-F8F53AE79309/CoronaViewer.app/plugin.viewer.lua’
    no file ‘/var/mobile/Applications/A9FC1DBF-7D49-4C51-B387-F8F53AE79309/CoronaViewer.app/plugin.viewer.lua’
    no file ‘./plugin.viewer.so’
    no file ‘/var/mobile/Applications/A9FC1DBF-7D49-4C51-B387-F8F53AE79309/CoronaViewer.app/plugin.viewer.so’
    no file ‘./plugin.so’
    no file ‘/var/mobile/Applications/A9FC1DBF-7D49-4C51-B387-F8F53AE79309/CoronaViewer.app/plugin.so’plugin.viewer
    stack traceback:
    [C]: in function ‘require’
    ?: in function ‘require’
    /Users/Danny/Downloads/CoronaViewer-master/main.lua:1: in main chunk

    • Walter
      Posted at 11:43h, 26 June

      That’s weird. We’re not seeing these issues. Sent you a note offline for more info.

  • Mario Roberti
    Posted at 11:00h, 26 June

    NOICE!!!!!

  • nick
    Posted at 11:02h, 26 June

    Can’t get it to work. Is there a detailed how to?

  • Satheesh
    Posted at 11:26h, 26 June

    This is good news.
    I am trying to make it work.. No luck till now.
    That aside, will love an option to directly build using the device’s IP address(eliminating the use of Dropbox). Similar to how Gideros does..

  • George
    Posted at 11:34h, 26 June

    Wow, this is amazingly cool. Seems like it could also be used to distribute the app to testers & keep it updated on their devices.

  • Walter
    Posted at 11:46h, 26 June

    Great to develop faster! Want to try it on Android

  • Lerg
    Posted at 11:53h, 26 June

    Everytime Corona labs introduce some new feature, a lot of people start ranting “we need more bugfixes instead of this!” Even when Windows Phone support was announced.
    Corona team has many people and they can work on different tasks without impacting each other much!

    And seriously, such plugin can’t take many days to implement. So it has little to no impact on bug fix rate. And there always will be bugs, can’t get rid of all of them.

    Suggestions how to improve Corona Viewer:
    1. Remote control of the app. Reset & relaunch with a press of the button on your machine.
    2. Remote console built-in. That’s good for ordinary projects as well. Something built in into simulator. Makes more sense with Corona Viewer.
    3. Instead of Dropbox, transfer files via local network.
    4. Choose scenes to go from the simulator.

    Here is how I see it: start the app on your device, in simulator choose Run inside Corona Viewer, it then perform networks scan and detect all devices with running Corona Viewer instance. You choose the one you want, simulator transfers all the files and opens remote console window with Reset & Relaunch buttons available. Easily extendable later.

    And Walter, TextWrangler? Seriously? Haha.

    • Walter
      Posted at 16:54h, 26 June

      Lol, I thought TextWrangler gave everything a whole retro feel!

  • nick
    Posted at 13:30h, 26 June

    +1 lerg.

    I agree, people complain and maybe some of them have never worked in an enterprise environment or maybe just a regular place of business where there are separate areas that do different things. I work a day job, I support 1000+ people. We have something called departments, each department can work on different things. We have implementation teams, and design teams and QA teams.

    So apply that to corona, they probably have a bug fix team and *gasp* a design time, who probably designed this. They don’t affect one another.

    I say, keep it going.

    *

    • Kerem
      Posted at 15:48h, 26 June

      I bet, if you look carefully, where you work, there also exists another team called the “Leadership”. This team makes decisions as to where to allocate resources. In other words which team is to get more people. Depending on the market pressure and needs of customers this team typically decides on where various teams are to focus their energy.

      The fact that we have 1+ year old libraries still not performing to the best of industry standard expectations and the fact that many API gets released IOS only or Android only while the Corona SDK itself is marketed as a cross-platform tool tells me the “Leadership” here is not necessarily making the best decisions in its existing customers favor. Look at this tool. It is IOS only once again. If you ask me there should be no such thing. Yes, its ok to release a preview on one platform but you need to quickly follow-it with the matching implementation on the other platform.

      Releases like this are pushing me more and more away from Corona SDK because it is not truly IOS + Android for me and it is not truly 10x for me. I get 10x speed out of the 95% of what I do and then the remaining 5% takes as much time as it would have had I developed natively. So the allure (only barely) is the cross platform thing but its quickly melting away.

      • Kerem
        Posted at 16:39h, 26 June

        On a more positive note… this is from today’s daily build notes :

        Add the ability to set the jpeg quality for display.save().

        Now thats more like it!!! This is great!!! Thanks much.

    • Joe
      Posted at 20:27h, 27 June

      No matter how big the organizations are, the resources are always “limited”.

      So if the company does not put something in top priority, they don’t allocate enough resources (time/human resources) into it.

      This is why I kept telling Corona to allocate more resources into bug fixing, not that I don’t understand things can be done parallelly.

      And there is a strategy called “feature freeze”, why this strategy?

  • hgbrian
    Posted at 14:44h, 26 June

    Sweet! Very useful for multitouch apps!

  • Andreas
    Posted at 15:10h, 26 June

    For us this is great news: Our game “Freeze!” and the sequel we are developing right now depends heavily on multitouch input and we just need to test on the device all the time.

    And with this, as suggested by George we might even keep all our testers up to date with the newest levels and engine, without having to deploy using testflight or sending IPAs out.

    And after some of these comments I just have to say my bit, but please without starting a big pro/contra discussion:

    We released “Freeze!” more than 1 1/2 vears ago in Nov. 2012, we have 6.2 million downloads so far combined on iOS / Google Play / Amazon and an worldwide average rating of 4.2 to 4.3, got some rewards and more than 70K ratings on Google Play alone.

    The game was featured worldwide by Apple three times, by Google two times. And it is still in many “what’s hot” lists on iOS and on some special lists like “best game without internet” on Google Play.

    This success is based on the stable game we were able to develop using the Corona Labs SDK – “Freeze!” does not crash, runs perfect on more than 98% of all the supported Android devices (more than 5.000), even runs as a universal binary with an adaptive layout on the old iPhone 3GS, iPod Touch 2nd Gen, but still looks great on the iPad Air or the NEXUS 7 2nd Gen. retina devices.

    Google for example tested “Freeze!” for days before they sent me a big list of things I need to improve – and only after I did this the game was featured worldwide.

    For me as a single developer who hires an artist for the artsy stuff it would not have been possible to do this without the Corona Labs SDK, whose developers did all the hard work to support all these Android devices. And I worked with some of their guys on the Beta for Google Play Games Services, on the Beta for Google IAB v3 and they presented our game at the Microsoft Booth at the GDC this year, running on Windows for mobile. And it was always a pleasure working with them.

    I can only speak for games (I did not do any business apps yet), but for us it was a perfect decision to go with Corona.

    This said, where the h*** is the Amazon Game Circle support? 🙂

    Keep on the good work,
    Andreas

    • dingo
      Posted at 23:29h, 26 June

      hey Andreas, first of all congrats to all your success with freeze, have been following it since ever. And I think you made a valid point there. That’s why we also stick to Corona SDK, and it’s really awesome for doing casual games.

      Greetings from Grooh and good luck with your next game!

      • Andreas
        Posted at 00:55h, 27 June

        Hi Dingo, thanks!

        And wow, you’ve been really busy, “ATHLETICOOH”, “”COLOROOH”, the great & funny “BUFFALOOH”, and “ELAROOH” (this IS for girls, right?), you made six more fine games since 2012 while we only did some new worlds for “Freeze!” – now I feel a bit slow, will try to pick up the pace for the sequel.

        Whenever you’re around Munich send me an email and then let’s share some beer / wine / coffee (whatever your poison is) and some Indie stories.

        Best, Andreas

  • Bruno Pezzolo
    Posted at 15:30h, 26 June

    I’ve had no trouble getting Corona Viewer to work with its basic features.
    A simple app with all lua files on the root directory works fine for me.
    But when I placed one of the lua files inside a new directory, and tried to require it on my main.lua file, things just didn’t work. I’ve tested the code on my simulator and it works fine.

    Is there any limitation to the use of lua files in different folders with Corona Viewer?

    I’ve got the following crash log on my device:

    Jun 26 19:25:56 Brunos-iPhone CoronaViewer[10103] : Runtime error
    module ‘folder.rect’ not found:resource (folder.rect.lu) does not exist in archive
    no field package.preload[‘folder.rect’]
    no file ‘/var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/folder.rect.lua’
    no file ‘./folder.rect.so’
    no file ‘/var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/CoronaViewer.app/folder.rect.so’
    no file ‘./folder.so’
    no file ‘/var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/CoronaViewer.app/folder.so’folder.rect
    stack traceback:
    [C]: ?
    [C]: in function ‘require’
    ?: in function ‘require’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:20: in main chunk
    [C]: in function ‘run’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:3: in main chunk
    [C]: in function ‘run’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:3: in main chunk
    [C]: in function ‘run’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:3: in main chunk
    [C]: in function ‘run’

    [C]: in function ‘run’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:3: in main chunk
    [C]: in function ‘run’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:3: in main chunk
    [C]: in function ‘run’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:3: in main chunk
    [C]: in function ‘run’
    /var/mobile/Applications/B855B13D-4ABE-4DA4-9384-6D5B11BF3CAC/Documents/.CoronaViewer/main.lua:3: in main chunk
    [C]: in function ‘run’
    /Users/vulpix/Projects/CoronaViewer/CoronaViewer/main.lua:3: in main chunk

    • Walter
      Posted at 15:51h, 26 June

      Hmm, we specifically tested for Lua files in folders and that was working fine for us. Or else, do you mind sending us your project via (http://developer.coronalabs.com/content/bug-submission) and let me know the bug number?

      Can you try the “Reset Project” action, as described in the Readme? Maybe the file didn’t quite sync correctly. If that doesn’t help, we’ve seen force quitting the app and cold-launching can work.

      • Bruno Pezzolo
        Posted at 10:48h, 27 June

        You see, I was running a rather complex project, so I performed some more tests, starting from a very simple project and increasing the complexity of this project.
        Here’s my conclusion so far, lua files inside a simple folder worked fine for me as well, the problem appeared when I tried to nest folders. (e.g.: First/Second/myfile.lua). It really fails to find the lua file inside the second level of the hierarchy.

        I’ve reseted the project, unistalled the Corona Viewer app from the device and installed again. Even created a new dropbox account just for testing, still no success.

        I uploaded a test case via corona bug report and the case number is 33774.
        Thanks for the quick answer!

  • Dr. Burton
    Posted at 15:58h, 26 June

    This is wonderful Walter! I’m downloading it now. The last several projects that I have worked on have all used features that were device-only. This will definitely speed up the development process!
    Looking forward to the Windows-beta!
    Thank you for another great tool!

    • Walter
      Posted at 16:56h, 26 June

      Because you’re syncing with Dropbox, you should be able to make edits to your project from a Windows machine.

  • Jordan Schuetz
    Posted at 16:16h, 26 June

    Walter, why are you such a genius?

  • Ingemar
    Posted at 16:29h, 26 June

    Please, please, pretty please, consider using the local network (device IP address) instead of Dropbox!

  • Rob Miracle
    Posted at 16:40h, 26 June

    We have added a new forum to handle support of this product. Please go here with your issues, suggestions and such:

    http://forums.coronalabs.com/forum/641-corona-viewer/

    Thanks
    Rob

  • Crossman Wilkins
    Posted at 17:21h, 26 June

    Once I got the cog/build settings right this worked great.

    Just a warning don’t copy over the existing config/build settings, just adjust them to your apps needs otherwise this breaks.

  • Kerem
    Posted at 17:49h, 26 June

    Side question.

    In order to make Corona Viewer you have clearly built Dropbox capabilities into the viewer plugin. We have been asking for a Dropbox plugin now for quite a while. It looks like a win-win outcome for Corona Labs to spin off the Dropbox capability built into the Corona Viewer plugin and make it available as a separate plugin.

    Any plans to do this? Thanks

  • yo
    Posted at 23:57h, 26 June

    As a developer of business apps, which require a lot more device-specific testing than casual games which tend not to use native widgets, I greatly appreciate this new feature. I can see why casual game developers might not find this to be a big priority, but I’m sure most of us business app folks do. Plus, they probably developed this tool for in-house use first, so that they could test out device-specific code more quickly. So in the end, this might actually speed up the fixing of Corona bugs, rather than be a distraction from that important task.

    Finally, I understand why some would like to update via device IP instead of Dropbox, but for those who already use Dropbox, this is such a great, simple way to update rapidly with near-zero configuration. I kind of think of CoronaViewer as an internal tool that Corona decided to share with us. It doesn’t need to have every feature to be useful, and I’m glad they made it available before taking too much time to make it perfect for everyone.

    That said, Android please…. (it’s much more necessary on Android, which is quirkier with native widgets and more diverse with devices).

  • Serkan
    Posted at 05:07h, 27 June

    I couldn’t get it to work but that’s great, especially for testing of our multi-touch games! We’re still waiting for the Windows Phone build(seriously, any news on that?), Amazon Game Circle etc. but that’s nice too.

    Whenever I reset, I’m getting this:

    Jun 27 15:04:01 sekos-iPhone Viewer[841] : [ERROR] error closing file (file.cpp:27: file has already been closed)
    Jun 27 15:04:01 sekos-iPhone Viewer[841] : [WARNING] ERR: DROPBOX_ERROR_BADFILE: file.cpp:27: file has already been closed
    Jun 27 15:04:01 sekos-iPhone Viewer[841] : [ERROR] error closing file (file.cpp:27: file has already been closed)
    Jun 27 15:04:01 sekos-iPhone Viewer[841] : [WARNING] ERR: DROPBOX_ERROR_SHUTDOWN: DBHTTPRequest.mm:572: Request cancelled.

    Other than that, I can’t seem to have any other errors.

  • Rob Sondles
    Posted at 05:58h, 27 June

    I really like this idea. It is tiring to have to go into xCode to remove and install the test app over and over again. Thanks for streamlining the development process Corona Labs! I’ll try this out soon.

  • Austin
    Posted at 17:16h, 27 June

    This is why I use Corona, innovative features being added all the time! Cannot wait for my productivity on “Letter Bank” to go through the roof!

    Thanks guys!

  • Guy Moreau
    Posted at 06:59h, 29 June

    Sounds like a great idea. I would make one suggestion, support pulling from repositories such git, svn, cvs, etc. Version control is important and DB is not my idea of a code storage area – you lose control over your files (thanks NSA).

  • Kerem
    Posted at 11:23h, 29 June

    Ok. Public reversal of opinion and an apology. I still think CL should do more to bring stability and IOS vs Android feature equivalency but in the meanwhile allow me to say this tool ROCKS!!! It works as advertised for simple projects and helps greatly in expediting device dependent test activities. I just discovered one major side benefit…

    Using a Dropbox capable text editor on your iPad or even iPhone you can literally take your Corona SDK development on the road, away from your PC or Mac and do realtime work on the road, in the field, on top of a tree, where ever you like it! Finally Corona SDK breaks free from a PC/Mac bound development tool. This is AMAZING!!! Thank you very much Corona Labs.

  • nick
    Posted at 15:37h, 01 July

    I guess I’ll give this another shot. I didn’t get it working the first time.

  • Antheor
    Posted at 14:12h, 19 July

    Truly amazing ! Like Kerem explains Corona brings us mobile dev ! Thank you !

  • Andreas
    Posted at 14:19h, 20 July

    CoronaViewer works great, there is just the problem that folder names in the project are not allowed to have upper case characters because of the way the folders are handled by the Dropbox.

    This is bad when you are e.g. using 3rd party tools that create upper case folders in your project by themselves.

    I posted a solution here for the tool “LevelHelper”, but the workaround can be easily adapted for other tools:
    http://forums.coronalabs.com/topic/49622-guide-how-to-make-coronaviewer-work-with-levelhelper/

    Best,
    Andreas

  • John
    Posted at 17:43h, 03 April

    It would be really helpful if you guys could make a step-by-step video tutorial on how to get Corona Viewer to work. I still keep on getting errors every time I try to use it, it would be really helpful to have a video so I know if I’m setting this up correctly

    • Rob Miracle
      Posted at 07:00h, 04 April

      Can you make a post in the forums asking this? Please post the errors you are getting there!