Lessons Learned Bringing My Corona Apps to Windows Phone

It’s been a long time since I’ve done a blog post so bare with me and hopefully you will get something out of this.

I just finished bringing my apps to the Window Phone ( and wanted to share what I learned.


What You Need/Should Do Prior to Starting

1) Developing for Windows Phone requires Windows 8.1 (8.1 Pro for emulating on your computer).  I picked up my copy off ebay for $117.  It was Windows 8 Pro, but you can update to 8.1 for free once installed.  I have Windows 7 installed on my main computer and did not want to do anything to it, so I ended up boot camping my Mac to run Windows 8.1 on it.  It’s been all good.

2) Do I need a device?  It depends.  I really could have gotten away with the emulator.  All external buttons function in the emulator, so you can test those.  It also appears to set the memory of the emulated device appropriately as well.  I did not end up doing IAP, so I am unsure if you can test it in the emulator, but I suspect you could.  It was easy enough for me picking up a cheap Windows Phone.  This is what I went with for around $50:   I also used a cashback site to get me an extra 5% off.  If you never use them and you shop online, consider it.

3) Microsoft has a lot of programs to entice users to develop for Windows.  The one to check out prior to getting started is: can get a free registration for Windows Dev Center to publish apps in the Windows Store or Windows Phone Store.  This could save you $100.  You have to sign up for this prior to signing up for your developer account though.  So do this now.  There is also BizSpark, which is for startups.  Most app developers would qualify for this program:

4) Setup your developer account – Again, if you signed up at dev center benefits and are waiting to see if yo get a free registration, hold off.  You can still work on porting your apps without a dev account.  Once you get your answer though, sign up as it can take several days to a week before they get your account set up.


What sort of problems can I expect when porting my apps with Corona Cards?

1) A lot of features are still not supported (and some likely never will be).  You can check out the current list here:  So currently there is no Corona access to the camera, video, mp3, and in-app purchasing.  The good news is you can add these natively (if you want to take the time).  Here is a link to an example of in-app purchases done here:

2) Text performance is a big issue on Windows Phone and was my biggest problem.  Luckily most my apps use minimal text, so it wasn’t a big deal.  Those that used a moderate amount of text on screen or had text that changed frequently caused a noticeable lag.  Check out solutions to this problem at this link:

3) Your app needs to have back button functionality in order to be accepted into the store.  My first app was rejected as it lacked this.  If your app already has it, then this should not be a big deal.  If not, it was not that difficult to add.  Check out Key Processing on this page: for more info.

4) Your app will not detect languages selected using Corona’s code.  You will either need to drop multi-language support in your apps, change it to manual selection, or code it in natively.


Windows 8.1 is installed I’m ready to get started

1) Download and install Visual Studio Express 2013 for Windows:   The express version is free and should be all you need.

2) Download CoronaCards for Windows Phone 8 here:

3) Follow these instructions to install CoronaCards for Windows Phone 8 here:

4) Get your CoronaCards License for Windows Phone: (you should see it on the right hand column in big letters – CoronaCards License.


Lets Port an App!

1) Open Visual Studio and start a new project:

2) In Visual Studio, in the solution explorer, go to Assets->Corona-> and then delete the 3 starter files (config, main, and world)

3) Follow these steps to porting:

- Note that there were times when some of my files were in sub folders and that selecting the build action as content in mass did not work, I ended up needing to go into each directory and adding them.

4) Go to Solution Explorer-> Properties -> AssemblyInfo.cs -> WMAppManifest.xml

1) Input your display name.  This is the title of your app and must match your info when you submit.  You only have around 48 chars max here.  If you go over, your app will not build.

2) Scroll Down and input your Tile Title.  This is what is displayed like the icon text on other devices.

3) Click on the Capabilities Tab.  The term “capabilities” are like Androids “requirements” or “uses” -> Deselect what you do not need otherwise it will show up on your listing on the store.

4) Click on the packaging tab.  Here you can set your version, publisher name, default language, and select supported languages.  The Product ID and Publisher ID listed here seem to change automatically to the correct one once uploaded and approved to the store.  It is possible that setting these may show some benefit in testing.

5) Build it!

6) If you want to debug after building, click debug in the pull down menu and select start debugging.  Print statements will be displayed in the Output window.


More info on Linking and Icons

1) Linking can be a bit of a pain.  Here is how I did it.  You can get the link to a specific app before submitting.  You will need to have your dev account setup and ready.  Login and click submit app.  Click app info.  Input your info and save.  Click the dashboard tab.  Click on the in-progress submission app.  Click the details tab.  Find the app ID.

- Review Link:  system.openURL(“zune:reviewapp?appid=appe90db9a1-94ca-43a4-8a5a-67f1c4e0434d“) – replace bolded with your link.

- Link to all your apps:  system.openURL(“zune:search?publisher=scott adelman apps inc&contenttype=app”)  – replace the bolded – Note this is a search method for finding developers of apps, but it works.  Might be something better out there, but the other links I tried failed.

- Link to existing app:  system.openURL( “zune:navigate?appid=98b40253-6660-40c8-82cf-1d27631118d7“)    – replace bolded.

2) Icons & Tiles – You only need one 100×100 icon that goes in the assets folder.  The icon fills the entire space and is not rounded.  If you have a border, it will look odd on the store unless you extend the border out to the edges.  Im still a little unsure on how all the tiles work, but I just put my square icon into their sizes required and center it.  So:

FlipCycleTileMedium -  336×336 square

FlipCycleTileSmall – 159×159 square

FlipCycleTileLarge – resize icon to 336×336 and center to 691×336

IconicTileMediumLarge – resize icon to 130 and center on 130×202

IconicTileSmall – resize icon to 70×70 and center in 70×110

I setup a script to do this all for me based off existing icons.

3) Screen shots – Screen shots need to be 1280×768.  Unfortunately it is yet another different screenshot size


Account setup.  App built.  Submitting Your App.

Please know this may be the worst developer console out there.  There is a delay when uploading, lots of potential mistakes, things need to line up exactly with your app build, etc.  Some things to note as you begin submission:

1) Most app information, such as screen shots and icons are linked to a specific app file.  If you upload the wrong app file and add all these assets, you will need to delete it and start ALL over. When updating though, you can replace the existing apk with a new one and maintain the current assets

2) If you did not select supported languages in the manifest of your app build, then you cannot add other languages.

3) If you do have more than one language, assets will need to be uploaded for each language.

4) Your reserved app name most match exactly to what you put in your manifest.  Watch for extra spaces or misspellings.

Other than that, it should look pretty familiar.  Responses usually come in 24 hours or less (yay!).

I’m hoping this was helpful to you.  Please let me know if you think I missed something or found it helpful.




Leave a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>