The goal of this site is to put relevant and applicable tools and information at the fingertips
With this blog we want to inform you on our latest initiatives.
Enjoy reading and stay tuned!
Visual Studio 2013, .NET 4.5.1, and Team Foundation Server 2013 are now available for download! DreamSpark subscribers can download Visual Studio FREE of Charge from either their Institutional DreamSpark ELMS store or direct from DreamSpark.com.
Visual Studio 2013 is the best tool for developers and teams to build and deliver modern, connected applications on all of Microsoft’s platforms. From Windows Azure and SQL Server to Windows 8.1 and Windows Phone 8, Visual Studio 2013 supports the breadth of Microsoft’s developer platforms.
As part of the Cloud OS vision, Visual Studio 2013 enables developers to build modern business applications that take advantage of the cloud and target a variety of devices and end-user experiences, all delivered within today’s rapid and dynamic application lifecycles.
Accessing Visual Studio 2013 via DreamSpark.com
When student download and install Visual Studio 2013 from DreamSpark.com, they will receive a static key to complete the installation. The key simply means the students do not have register or reregister the product every 90 days are per the RTM version..
For administrators and IT technicians the DreamSpark institutional ELMS Store contains a copy of Visual Studio 2013 with a Pre-Keyed serial number this version can be used to install on institution teaching and learning lab machines either manually or via a managed desktop image.
Visual Studio and Cloud services
When the student/institutions have installed Visual Studio 2013 on premise, they will get prompted to go an connect online to use online features of Visual Studio a Windows Live ID or Microsoft Account is required. If a student signs in with their WLID this will save there solutions to the cloud.
What are the new features
There are great new features and capabilities in Visual Studio 2013 for every developer, including innovative editor enhancements such as Peek and CodeLens, diagnostics tools for UI responsiveness and energy consumption, major updates for ASP.NET web development, expanded ALM capabilities with Git support and agile portfolio management, and much, much more. Check out what’s new with Visual Studio 2013 for details.
Want to know more about Visual Studio 2013
Visual Studio 2013 launch on November 13th. at the launch event the Visual Studio team will be highlighting the array of new features and capabilities in the Visual Studio 2013 release.
Visual Studio 2013 supports development of great Windows Store applications for Windows 8.1, which is also available for download today FREE of charge for all DreamSpark Premium subscribers.
Ok I have to confess, I am addicted! I have been playing with a .NET Gadgeteer FEZ Spider Kit from GHI Electronics. The .NET Gadgeteer kits enable you to quickly prototype and test a wide variety of functionality for embedded devices. As you are all aware from some of my recent presentations I am a huge fan of the Microsoft .NET Gadgeteer.
A number of you have asked me about about the .NET Gadgeteer kits and how easy is it for Teachers, Lectures and academics to grasp and teach this technology to school, college and University students? Well firstly you need to know some C# if you don't then watch the following tutorials. So for all of you haven't heard about Gadgeteer or are simply wondering what you can do with Gadgeteer the following guide will hopefully be of assistance.
The following guide is to:
1. Introduces you to the basic hardware components of the GHI FEZ Spider Kit
2. Give you some examples of how to create your first .NET Gadgeteer application.
.NET Gadgeteer development requires that you have Microsoft Visual Studio installed on your computer. You can use either of the following Visual Studio packages:
Both of these are free to download for all UK Students via http://www.dreamSpark.com there is an extensive .NET Gadgeteer support and learning materials available from .NET Gadgeteer http://www.netmf.com/gadgeteer/get-started.aspx and GHI http://www.tinyclr.com/support
So lets get started
The FEZ Spider Kit consists of components, which are called modules, and cables that you can use to create various types of functionality in your device. To create your first .NET Gadgeteer device, you will need the following parts:
The FEZ Spider Mainboard includes a processor and memory, as well as 14 sockets. The sockets are outlined by a white box that surrounds the socket number (1 through 14) and groups the socket number with a set of letters that indicate which modules can be connected to the socket.
.NET Gadgeteer-compatible hardware modules connected to the FEZ Spider mainboard by these connectors allow you to extend the FEZ Spider mainboard with communication, user interaction, sensing, and actuation capabilities.
The FEZ Spider mainboard includes a Reset button to reboot the system. There is also a small LED (labelled D1) which lights up whenever the FEZ Spider has power.
The USB Client Dual Power (USBClientDP) module (coloured red) enables you to connect the FEZ Spider Mainboard to your computer for programming and debugging. The dual-powered module is itself powered either by a USB port on a computer or by a 7 -30 volt DC power source. A USBClientDP module supplies power to the FEZ Spider and to any other modules that are connected to it. You can plug in both power sources of the USBClientDP module to program and to power at the same time.
Never connect more than one red module to the FEZ Spider Mainboard at the same time. This will damage the hardware.
The USBClientDP module has a black socket, identical to the sockets on the FEZ Spider Mainboard. Next to the connector, there is a letter D. This means that this particular module can only be connected to a socket labelled D on the mainboard.
In a similar way, all .NET Gadgeteer-compatible modules have letters next to their sockets that identify which mainboard sockets they can be connected to. Many modules are labelled with multiple letters. This means that they can be connected to any of the labelled sockets.
Red USB Device Module
Your hardware kit includes many module connector cables of different lengths. Apart from the length, these cables are all identical and can be used interchangeably to connect modules to the FEZ Spider Mainboard. Note that all sockets have a notch and the cable headers have a protrusion that fits into this notch, so the cables can only be inserted one way.
A .NET Gadgeteer-compatible Module Connector Cable
Connect the red USB Device module to socket number 1 on the FEZ Spider Mainboard, which is the only socket that has the letter D. Then, connect the small end of the mini USB cable provided with the kit to the USBClientDP module. However, do not connect the other end to your computer yet.
Connecting the FEZ Spider to the USB Client module
When plugging or unplugging any module into a FEZ Spider socket, always make sure that power is not connected, by unplugging either end of the mini USB cable. The mini USB cable supplies power to the FEZ Spider; if you plug or unplug a module on the FEZ Spider while it is powered, the hardware could be damaged.
After ensuring that the FEZ Spider mainboard is not powered, continue by getting a Button module from your hardware kit.
A Button with Multicolour LED
Turn the Button module over. Next to the connector are the letters X Y. This means that a Button module can be connected to one of the sockets labelled X or Y on a mainboard.
The Reverse Side of a Button Module
Get a Camera module from your hardware kit. Turn the Camera module over. This module has a single connector labelled H. Only socket 3 on the FEZ Spider mainboard supports modules labelled with the letter H. Plug one end of a connector cable to the socket on the Camera module and the other end to the FEZ Spider on socket number 3, also labelled HI.
Camera with Socket labelled H
Connect the Button and the Camera to the mainboard using module connector cables as described in the previous sections.
The .NET Gadgeteer designer can identify the sockets on modules and on the mainboard that are compatible. This method is described in the following section titled Using the .NET Gadgeteer Designer UI. In this example we will connect the remaining Display_T35 module manually.
The Display_T35 module has four connectors. Connect sockets 14, 13, and 12 to the Display_T35 module sockets labelled R, G, and B. As you might expect, these letters signify the colour distribution of the Display_T35 module. Connect socket 10 on the mainboard to socket T on the Display_T35 module. Socket T on the Display_T35 module facilitates the touch screen features of this module.
Make the actual connections between all modules and the mainboard before you connect the USBClientDP to the USB port on your computer.
The following illustration shows the mainboard connected to a Display_T35 module, a Button module, a Camera module, and the USBClientDP module. Now, with all the other modules connected, you can connect the USBClientDP module to the USB port on your computer.
.NET Gadgeteer Modules with Connectors
Start Microsoft Visual Studio 2010 or Microsoft Visual C# 2010 Express. The following sequence will get your first .NET Gadgeteer Application up and running in less than half an hour.
Microsoft Visual Studio
Microsoft Visual Studio, New .NET Gadgeteer Application Project
The .NET Gadgeteer Designer opens with the FEZ Spider Mainboard displayed on the canvas. If the Toolbox is not visible, click the View menu and select Toolbox. The Toolbox with a list of installed modules will open. You can resize or hide the Toolbox to make more work space on the canvas.
Microsoft Visual Studio, .NET Gadgeteer Application and Toolbox
If you want to use a different mainboard, open the toolbox, and drag the mainboard icon of your choice onto the designer surface.
When you drag a new mainboard to the designer surface, you'll be prompted, as shown in the following illustration, to confirm replacement of the mainboard. All existing connections will be removed.
To continue building the example device, open the Toolbox and drag the modules for this example on to the work canvas. You will need the following modules:
The Designer canvas with modules is shown in the following illustration.
Microsoft Visual Studio, .NET Gadgeteer Application and Modules
As indicated by the instructions in the text box on the canvas, the .NET Gadgeteer Designer will graphically connect all the modules for you. Right click on the design surface and select Connect all modules. You can move the modules around on the design surface to make the connections easier to read. You can also delete any connection by right clicking on the connection and selecting Delete.
Microsoft Visual Studio, Designer Connected Modules
To manually set a connection, click on a socket in the diagram and hold down the left mouse button. Then you can drag a line that represents the connection from a module socket to a mainboard socket or in the opposite direction from the mainboard to a module. The sockets that the module can use will light up in green, as shown in the following illustration.
Writing Code for Devices that use .NET Gadgeteer Modules
To specify what the modules should do in this application, now edit the Program.cs file. The following illustration shows the Program.cs file open in Visual Studio.
Microsoft Visual Studio, New Project, default Program.cs Code
When using the designer, the modules are automatically instantiated by auto-generated code. This code can be found in the file Program.Generated.cs, but during normal use it is not necessary to view this file, and this file should not be edited because the Designer will automatically regenerate it and undo any direct changes made to it. The Program.Generated.cs file is shown in the following snippet.Program.Generated.cs file.
Microsoft Visual Studio, Progam.Generated.cs Code
Next, you generate code that will enable the program to react to a button press. To do this, assign an event handler for the Button.ButtonPressedevent. The IntelliSense feature of Visual Studio makes this process very easy.
In the Program.cs file, after the comment that reads:
Initialize event handlers here.
Type button.(button followed by a period). IntelliSense displays a list of properties, methods and events as shown in the following illustration.
IntelliSense Feature Showing Members of the Button class
Using the arrow keys, select ButtonPressed. Then type += (plus sign followed by an equals sign). IntelliSense offers option to automatically insert the rest of the declaration:
IntelliSense Offers to Create the Handler Declaration
Press TAB to confirm. IntelliSense offers to automatically generate a delegate method to handle the event:
IntelliSense Offers to Generate the Event Handler Method
Press TAB to confirm. The following code is generated:
Event Handler for the ButtonPressed Event
This event handler will be called each time the button is pressed. Delete the following line from the method:
throw new NotImplementedException();
And replace it with:
Now when the Button is pressed, the Camera module will take a picture.
Take Picture in ButtonPressed Event
The Camera module raises an event when the Cameracaptures a picture. You can use the event to display the picture in the Display_T35 module.
The PictureCaptured event is an example of an asynchronous event. Calling Camera.TakePicturein the Button.ButtonPressed delegate starts the process, but the result of the action is not returned by the ButtonPressed delegate. Instead, the GT.Picture object returns as a parameter of the asynchronous PictureCaptured event.
When the PictureCaptured event occurs, you can get the GT.Picture object and display it by using the SimpleGraphics interface of the Display_T35 module. The SimpleGraphics interface supports the DisplayImage method, which accepts a GT.Picture object as a parameter, along with integer values to indicate the X an Y coordinates that position the image on the display.
All code required to display the picture is shown in the following implementation of the PictureCaptured event delegate.
All the code for a .NET Gadgeteer Application that takes a picture and displays it in the Display_T35 module is shown in the following example.
Entire Code Listing
To deploy this application to a mainboard and begin running it, select Start Debugging from the Debug menu, or press F5.
Make sure that the Output Window is visible by pressing the CTRL + ALT + O key combination on your keyboard. If you have enabled sounds, you should hear Windows make the "USB disconnected" sound, followed by the "USB connected" sound as the Mainboard reboots. The Output Window should show the process of loading various files and assemblies. The final line, which appears once the application begins to run, should read Program Started.
When you see Program Started appear on the Output window, you can take a picture. Smile for the Camera, and push the Button. Your picture will appear on the screen of the Display_T35 module. If it works - congratulations! You have completed your first .NET Gadgeteer application.
To exit debugging mode, select Stop Debugging from the Debug menu, or press Shift + F5.
Note: The mainboard continues to be programmed, and will run this application whenever it is powered up, even if it is not connected to a computer.
An interesting extension of the camera application in the previous example is programming the application to take pictures automatically at an interval set by an instance of the GT.Timer class.
To create an instance of the GT.Timer class, add the following global variable to the Program class, as shown in the following example. This line of code initializes the GT.Timer to raise the Tick event at an interval of 2000 milliseconds (2 seconds).
GT.Timer timer = new GT.Timer(2000);
Create the delegate to handle the GT.Timer.Tick event, but stop the timer until the button is pushed. The following code shows the set-up in the ProgramStarted method.
In the ButtonPressed handler replace Camera.TakePicture with the following code. The new code starts and stops the GT.Timer.Tick event and toggles the LED indicator on the Button. When the GT.Timer is firing events, you can use the event handler to take pictures instead of the ButtonPressed handler.
The implementation of the GT.Timer.Tick event is shown in the following example.
When the LED is off and the user pushes the Button, the LED indicator turns on and remains on while the Camera module takes pictures at two second intervals. When the user pushes the button again, the GT.Timer stops, and the LED turns off.
The following code contains all the code for the camera with timer. The boxes show the changes to the previous example.
Code for Surveillance Camera
This section describes common issues that you may encounter and provides suggestions for how to fix them.
If VS is running when you install GadgeteerCore, you’ll need to close and restart it before creating your first project. Otherwise you won’t see the .NET Gadgeteer Application template.
You may need to change the USB name of the target mainboard in your first project. The most efficient way to do this is using the MFDeploy tool.
Sometimes VS will hang at the display: “The debugging target is not in an initialized state; rebooting”. Push the reset button on the mainboard to fix this.
If you’re using the Display_T35 and see a null reference exception on startup, verify that the touch socket is connected both in the designer and on the module.
If you’re using a laptop and you see errors on deployment like “Please check your hardware”, try plugging a 7 volt DC power supply into the USBClientDP module.
The camera image is blurred or not in focus The lens is screwed into camera base, by unscrewing or screwing in you can focus it.
If you receive compilation errors when you attempt to deploy and run your application, read the error message carefully. Most errors fall into one of two categories:
If your application does not behave as expected (for example, pressing the button does not raise the event), start by checking that the physical socket to which the hardware module is connected agrees with the initializion in code of the identifier that corresponds to the module.
For example, if you connect a Button to mainboard socket 4, but initialize it to socket 8, the button will not work.
// Button is actually plugged into socket 4.
button = new GTM.GHIElectronics.Button(8);
The programming model for the .NET Gadgeteer platform is event driven. Events are raised that correspond to a hardware change or physical action. For example, when you press a button, the ButtonPressed event is raised, and when you release it, the ButtonReleased event is raised.
You can use debug statements inside your event handlers to make sure that your handler is receiving the event. For example, if your LED does not light when you press the button, you can insert a statement inside the event handler for the ButtonPressed event to make sure that your button is in fact receiving the event.
private void Button_ButtonPressed(GTM.Button sender, GTM.Button.ButtonState state)
When you deploy and run your application, check the Visual Studio Debug Output window for your message. If the message does not appear at the expected time (for example, when you press the button), make sure that the physical socket and logical initializer are in agreement, as previously described. If they are, the button or the module connector cable might be defective. Unplug the mini USB cable from your computer, swap the module connector cable or the button with another from your hardware kit, reconnect the mini USB cable, and try again.
Occasionally, you may receive an error as you attempt to deploy your application to a mainboard. This can happen if the mainboard is not connected to your computer, or the mainboard requires a restart. If the mainboard is disconnected, connect it and retry. If the mainboard is connected when this happens, disconnect it from your computer (by unplugging the mini USB cable), wait a few seconds, and reconnect it. Then try the deployment again.
When you install the .NET Gadgeteer core, the device drivers that are needed to communicate with a mainboard are also installed. This process usually does not require any intervention on your part.
In some cases, the .NET Gadgeteer core installation or kit installation might not install the device drivers automatically. If your computer is having problems communicating with a mainboard that you suspect are related to the device drivers, please refer to the Tiny CLR Forum.
If you get any error during installation of .NET Gadgeteer ensure that you have installed .NET Micro Framework Version 4.1 drivers and SDK from http://www.netmf.com/
Have something to add? Got a request or suggestion?
You can email the Gadgeteer team at firstname.lastname@example.org or follow them on Twitter @netgadgeteer.
Normally, if were installing the Windows Phone SDK 7.1 onto a single machine you do it through the web installer located here:
or via Microsoft Download centre at http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27570
However, if you need to install it on a disconnected machine (VM image) or deploy the SDK to a number of machines within a lab or cluster it’s helpful to have an .iso of the installation media to install from.
Microsoft also provides a download for the .iso as well. You can get it from here http://go.microsoft.com/fwlink/?LinkID=226694
Installing the Windows Phone SDK via ISO
Phone SDK consists of many packages/products and all these are installed on User’s machine as part of Phone SDK installation. Some of these packages are Emulator, XNA, Blend, Visual Studio Add-in for VS Ultimate, etc. Each individual package has got it’s own MSI.
When you extract the ISO (let’s say in dvd folder), you will find Setup.exe at the base level (dvd folder). This is a chainer and invokes all the MSIs one-after-another, the same way you mentioned below. Anyone who wants to install through ISO, should double-click Setup.exe and installation will start. It also gives you the option of Silent install same as MSI (option /q) and thus can be used through automation scripts as well.
This is an important folder which contains most of the package MSIs but they should not be invoked separately. The complete installation is dependent on the sequence in which these MSIs are installed.
After Uninstall, only Expression Blend entries are left back and this is known. Blend is a separately installed product and many Universities may therefore have this previously installed, as such we decided not to uninstall Blend in case a licensed version is present on the machine and our uninstall causes any problems with previously installed products.
In short, consider Setup.exe as your master MSI and use it in your scripts, everything should work.
The creation of MSI is primary used for legacy applications that were written prior to msi technology, and may be unreliable as the "snapshot" technique does not take into account existing software dependencies.
Windows does not natively contain the necessary tools for you to create your own MSI files. Instead, you will have to rely on a third party MSI creation tool. There are several good tools available for free. Two of the more popular choices are MAKEMSI (http://dennisbareis.com/makemsi.htm) and WinInstall LE 2003 (http://www.ondemandsoftware.com/freele.asp).
The reason why .MSI files are the preferred installer package for Windows is because of the file format’s capabilities. When you install or uninstall an MSI file on a machine running Windows 7, Windows creates a system restore point. Furthermore, MSI files allow the application to be “self healing”. I’ll talk more about this later on, but basically this means that if part of the application is damaged or removed, then Windows has enough information to replace the damaged or missing parts. Finally, MSI files allow the system to automatically perform a rollback to its previous state if an installation should fail.
With MSI files having so many capabilities, it should come as no surprise that MSI files tend to be a bit complex. MSI files are actually database files with information pertaining to every file and setting that the application installs or modifies. Because of this complexity, most of the MSI file creation utilities require you to do at least some scripting when you create an MSI file.
WinInstall LE requires you to have a machine with a clean Windows installation and network connectivity. The software then takes a snapshot of this machine and saves the configuration image. You would then install the application that you want to create the MSI file for and take another snap shot. WinInstall would then compare the snapshots and use the differences between the two images to create an MSI file and the corresponding installation package.
This method is a little time consuming, but is far less tedious than writing scripts. Another advantage to using this method is that it is possible to install multiple applications on to the clean machine prior to taking the second snap shot. This means that you can create a single MSI file and installation package that deploys multiple applications.
Now that you know how to create an MSI file, there is one last concept that I need to talk about before I show you how to deploy an application thorough the Active Directory.
As you may already know, in an Active Directory environment, group policies are the main component of network security. Group policy objects can be applied either to users or to computers. Deploying applications through the Active Directory is also done through the use of group policies, and therefore applications are deployed either on a per user basis or on a per computer basis.
There are two different ways that you can deploy an application through the Active Directory. You can either publish the application or you can assign the application. You can only publish applications to users, but you can assign applications to either users or to computers. The application is deployed in a different manner depending on which of these methods you use.
Publishing an application doesn’t actually install the application, but rather makes it available to users. For example, suppose that you were to publish the Windows Phone SDK tools. Publishing is a group policy setting, so it would not take effect until the next time that the user logs in. When the user does log in though, they will not initially notice anything different. However, if the user were to open the Control Panel and click on the Add / Remove Programs option, they will find that Microsoft Windows SDK is now on the list. A user can then choose to install Microsoft Windows SDK on their machine.
Assigning an application to a user works differently than publishing an application. Again, assigning an application is a group policy action, so the assignment won’t take effect until the next time that the user logs in. When the user does log in, they will see that the new application has been added to the Start menu and / or to the desktop.
Although a menu option or an icon for the application exists, the software hasn’t actually been installed though. To avoid overwhelming the server containing the installation package, the software is not actually installed until the user attempts to use it for the first time.
This is also where the self healing feature comes in. When ever a user attempts to use the application, Windows always does a quick check to make sure that the application hasn’t been damaged. If files or registry settings are missing, they are automatically replaced.
Assigning an application to a computer works similarly to assigning an application to a user. The main difference is that the assignment is linked to the computer rather than to the user, so it takes effect the next time that the computer is rebooted. Assigning an application to a computer also differs from user assignments in that the deployment process actually installs the application rather than just the application’s icon.
Setting up the actual deployment is simple. The biggest thing that you must remember is that the MSI file and the corresponding package must exist within a network share, and everyone must have read permissions for that share.
To perform the deployment, open the Group Policy Editor. To publish or assign an application to a user, navigate through the group policy console to User Configuration | Software Settings | Software Installation. Now, right click on the Software Installation container and select the New | Package commands from the shortcut menu. Select the appropriate MSI file and click Open. You are now asked whether you want to publish or assign the application. Make your selection and click OK.
The process for assigning an application to a computer is almost identical. The only real difference is that you would use the Software Settings | Software Installation container beneath the Computer Configuration container rather than beneath the User Configuration container.
The RTM versions of Visual Studio 2012 require developer activation to enable the developer to develop a Windows Store application.
This activation is via a registered LiveID/Microsoft Account, and simply enrols VS2012 for a 90 day development license.
I have a had a number of question how do we do this?
The process you must be undertaken by a local admin on the desktop, you must also have access to Visual Studio and register your LiveID/MicrosoftID against the machines copy of Visual Studio 2012..
To enable you to undertake the activation on a large scale deployment such as University or college lab environment here are some tips
We are in the process of producing necessary documentation and white papers but In the meantime the following FAQ is helpful:
· Does the developer license only have to be acquired/renewed in relation to Windows Store app development? Yes. To be precise: You need the developer license to install, develop, test and evaluate new style apps BEFORE you submit them to the Window Store. To be able to submit an app to the Windows Store, you'll need to open a separate Windows Store developer account through the developer website.
· Is the license per user or per machine? Per User and machine, see http://msdn.microsoft.com/en-us/library/windows/apps/hh974578.aspx
· It seems that you have to have local administrator privileges to renew the license, is that correct? YES
· Is the renewal of the license something that could be automated by an administrator via remotely deployed PowerShell scripts? YES, see section "Getting a developer license at a command prompt" at http://msdn.microsoft.com/en-us/library/windows/apps/hh974578.aspx
· How can I use a DreamSpark account? Here is how to associate your DreamSpark account to a Microsoft account and also get a developer license for Windows Phone/Xbox development http://blogs.msdn.com/b/uk_faculty_connection/archive/2012/02/29/dreamspark-and-apphub-account-creation-simplified.aspx
Next week I will be at the Develop Conference, attending some of the 103 sessions, 5 keynotes, and on the Microsoft stand at the Expo. I’m looking forward to networking with the 1500 developers and 450 companies during the event and discussing the opportunity of developing Windows 8 Metro Style games.
On http://msdn.microsoft.com/en-us/library/windows/apps/hh452780.aspx we list options for developing Windows 8 games.
At present there are over 50 games available in the store using the above technologies, here are some good links to get started
· Metro style app using C++, C#, or Visual Basic and XAML. You can use managed code languages like C# and Visual Basic to develop 2D (and lightweight 3D) games. If you have developed in Silverlight for Internet Explorer or Windows Phone 7, this model will feel very familiar.
· Metro style C++ with DirectX. You can develop both 2D and 3D games that effectively use the graphics processing horsepower on a range of Windows desktops and 3D-enabled Windows devices, from high powered gaming rigs to low power slates. It requires a strong working knowledge of Windows programming and native C/C++.
There are a number of online tutorial around Marble Maze which is a DirectX game written in C++. This leads you to the more basic “Hello World” example over here although while the results of that example are “Hello World” in nature.
There’s another, more realistic sample over here with a walk-through to build up a Metro style shooting game. It takes the form of a completed code sample and a walk through of what’s going on in that sample.
It runs to around 40 source files.
The key learning outcome for starting to build games for Metro are as follows as these would make excellent starting points for curricula development for Developing Metro Style Games.
1) Understanding how a Metro style app gets on the screen – i.e. the infrastructure around IFrameworkViewSource and IFrameworkView.
2) Understanding C++/CX which is a bunch of C++ extensions relatively familiar to people like me who’ve come from the C++/CLI world but a bit odd to a regular C++ developer.
3) Understanding some of the technologies used like the Parallel Patterns Library (PPL) which our default templates throw at you.
4) Understanding some of the C++ 11 techniques like lambdas which our default templates also throw at you.
5) Understanding how a Metro style app is meant to work from the point of view of lifecycle management (i.e. suspend/resume/terminate).
6) Understanding the WinRT APIs available and their main usage and purpose.
Steps 5 & 6 are common to any Windows 8 Metro style app developer.
As we are all aware, there are many game engines /frameworks (middleware) available. Some of these are already supporting development for Win 8 metro games whilst others are planning to support it within the coming months. I have listed the ones which are or have short terms plans to support W8 metro apps. I am sure that there will be more to come…
A full games development tool/suite – physics, rendering, scripting, AI etc.
Windows 8 Metro support: coming soon (for GA)
An Open Source, OpenGL implementation of the Microsoft XNA 4 Framework
Windows 8 Metro support: coming soon (‘later this year’)
Dev languages: C#/XNA
SharpDX is an open-source project delivering the full DirectX API under the .Net platform, allowing the development of high performance game, 2D and 3D graphics rendering as well as realtime sound application.
Windows 8 Metro support: Now
Dev languages: C#
Big Data Solution
Microsoft’s end-to-end roadmap for Big Data embraces Apache Hadoop™ by distributing enterprise class Hadoop based solutions on both Windows Server and Windows Azure. The roadmap includes Microsoft BI tools such as SQL Server Analysis Services, Reporting Services and even PowerPivot and Excel. This enables you to do BI on all your data, including those in Hadoop.
On the more technical front, we have been working on a simplified download, installation and configuration experience of several Hadoop related technologies, including HDFS, Hive, and Pig, which will help broaden the adoption of Hadoop in the enterprise.
The Hadoop based service for Windows Azure will allow any developer or user to submit and run standard Hadoop jobs directly on the Azure cloud with a simple user experience. Therefore it doesn’t matter what platform you are developing your Hadoop jobs on -you will always be able to take a standard Hadoop job and deploy it on our platform, as we strive towards full interoperability with the official Apache Hadoop distribution.
This is great news as it lowers the barrier for building Hadoop based applications while encouraging rapid prototyping scenarios in the Windows Azure cloud for Big Data.To facilitate all of this, we have also entered into a strategic partnership with Hortonworks that enables us to gain unique experience and expertise to help accelerate the delivery of Microsoft’s Hadoop based distributions on both Windows Server and Windows Azure.
Finally, in line with our commitment to Interoperability and to facilitate the high performance bi-directional movement of enterprise data between Apache Hadoop and Microsoft SQL Server, we have released two Hadoop-based connectors for SQL Server to manufacturing.
The SQL Server connector for Apache Hadoop lets customers move large volumes of data between Hadoop and SQL Server 2008 R2, while the SQL Server PDW connector for Apache Hadoop moves data between Hadoop and SQL Server Parallel Data Warehouse (PDW). These new connectors will enable customers to work effectively with both structured and unstructured data.
For more information see http://www.microsoft.com/bigdata
For all of you who have asked what Windows 8 devices will be available later this year? Here is a quick run down on Windows 8 devices from the Computex, as you may be aware from the press announcements Intel made the statement that more than 20 Windows 8 tablets with Intel innards are on the way, meaning these are new slates from Acer, ASUS and Samsung here are some of the models which were on display at Computex and reviews via the verge and engadget.
Samsung teases Series 5 Hybrid PC, a Windows 8 tablet with magnetic keyboard dock and pen support (update: hands-on photos)
The Hybrid is rated for 10 hours of battery life and has a pair of 2- and 8-megapixel cameras. It also supports pen input, and will come bundled with the same S-Pen and S-Memo software used on the Galaxy Note 10.1 (but modified for Windows, of course). This might be a good time to clarify that unlike the 10.1 (or any other Galaxy Tab, for that matter), this is not an ARM-based slate, but rather, an X86 PC.
Samsung Series 5 Ultra Touch hands-on
Samsung Series 5 Ultra Convertible hands-on
ASUS outs Tablet 600, a Transformer-like Slate running Windows RT
Like any Android-powered Transformer, this one packs a quad-core Tegra 3 chip, except it has twice the RAM (2GB). At the center of it all is a 10.1-inch (1366 x 768) IPS+ display with viewing angles similar to what you'll find on current Transformer tablets. Around back, it has an auto-focusing 8-megapixel camera with an LED flash, complemented by a 2-megapixel shooter up front. Other specs include WiFi, Bluetooth 4.0 and your usual array of sensors, including GPS, a gyroscope, e-compass and, last but not least, NFC
ASUS reveals TAICHI convertible notebook / tablet with dual 11.6-inch and 13.3-inch displays It http://www.engadget.com/2012/06/04/asus-taichi-n-trig-duosense-pen/
Two displays in one tablet? Yes you can. ASUS' new TAICHI series packs displays on both the front and the rear, letting you use the device in a variety of configurations. In 'notebook' mode, you can use TAICHI with a backlit QWERTY keyboard and trackpad. Once you close the lid, however, it's stylus time. TAICHI includes Intel Ivy Bridge Core i7 processors, 4 gigs of RAM, SSD storage, dual-band 802.11n WiFi, FHD/Super IPS+ displays and, naturally, dual cameras. Despite the display duo, both the 11.6-inch and 13.3-inch configurations are reportedly as thin and light as the Zenbook line. Both variants will offer 1920 x 1080 pixels on each side, and displays can be used independently, so you can even share the device with a friend -- with completely different content on each LCD.
Asus Transformer AiO dual-boots Windows 8 and Android 4.0 (hands-on video)
ASUS announces line of Transformer Books, laptops with detachable touchscreens
In addition to various Windows 8 tablets and a dual-booting all-in-one, ASUS announced the Transformer Book, a line of notebooks with detachable touch screens that can function as tablets -- not ARM-based tablets, mind you, but full-blown x86 slates. Look no further than the large screen sizes: 11.6, 13 and 14 inches. As mentioned, they pack laptop-grade chips to match, including a Core i7 Ivy Bridge processor, backed by discrete graphics. Storage options include SSDs and traditional hard drives, and we're told these lappies can accommodate up to 4GB of RAM.
MSI Slider S20 to make Intel's convertible 'Letexo' ultrabook concept a reality. MSI unwraps Slider S20 hybrid tablet with Windows 8 (hands-on)
S20 variant with a properly speedy low-voltage Ivy Bridge chip as well as 4GB of RAM, Bluetooth 4.0, HDMI and USB 3.0. Our friends at Engadget Spanish got an early look and found the tablet a bit chunky with a so-so display, but also thought that it looked like a "robust" design. Check our overseas companions' first impressions for more, and know that the Slider S20 is expected to reach Europe in September at €899 ($1,121) in its full Ivy Bridge glory along with a lower-powered model at €799 ($996).
MSI Slider S20
There's a Transformer-style tablet with detachable keyboard dock
Acer unveils 11.6-inch Iconia W700, 10.1-inch W510 Windows 8 tablets (update: hands-on pictures and video) http://www.engadget.com/2012/06/03/acer-iconia-w700-w510-windows-8/
That first flavor packs a relatively massive 11.6-inch full HD (1920 x 1080) display with touch support for up to 10 fingers, and ships with a cradle that positions the device at 70 degrees for landscape viewing or 20 degrees for touch use. It offers more than 8 hours of battery life and also includes a trio of USB 3.0 ports, along with Dolby Home Theater for enhanced audio. Acer appears to be marketing the W700 as a "desktop replacement" when paired with a cradle and keyboard. Unlike the W510, the dock is only used to hold and position the device -- you'll need to use Bluetooth to add an external keyboard. The tablet includes a bevy of connectivity options, including Thunderbolt, micro HDMI, USB 3.0 and a power jack on the left side, a pair of red-grilled speakers on the bottom, and a power button, headphone jack and volume rocker on the right. There's also a five-megapixel autofocus camera and microphone on the rear, and a Windows key and front-facing camera flanking the large, high-res display.
Acer introduces Aspire S7 Windows 8 touchscreen ultrabooks
The 1080p touchscreen laptop is coming in two sizes — 13.3 and 11.6 inches — and Acer is quoting 12 and 9 hours of battery life, respectively. Other details are light, but Acer is adding a glossy layer of glass to the outside of the 13.3-inch machine’s aluminum lid. It seems like the company is tempting fate a little by putting glass on the laptop's exterior, but the "trendy and elegant appearance" must be worth it
Acer introduces Windows 8 all-in-one U Series at Computex 2012 http://www.engadget.com/2012/06/03/acer-announces-windows-8-all-in-one-u-series-at-computex-2012/
Acer just introduced two Windows 8-equipped U Series all-in-one desktops here at Computer 2012 in Taipei -- the 27-inch Aspire 7600U and 23-inch Aspire 5600U. The 7600U features a 64-point capacitive multitouch tilt and swivel display and is only 3.5cm (1.38 inches) thick, while the 5600U is billed as "the thinnest AIO available" (no numbers specified). Both system feature HD visuals and Dolby Home Theater Surround sound, but the company isn't ready to share any other details on specs.
A1.5GHz dual-core APQ8060A with 2GB of RAM
Sony VAIO T ultrabook
Sony's 13-inch VAIO T ultrabook, on sale today
For the last few weeks, I have been attending a number of final year project submission meetings across the UK. I have seen a number of amazing apps/games and projects from students across the UK many of these have been produced as part of their academic coursework and now being used to demonstrate the skills which the students have mastered to potential employers.
One of the key things which frustrates me is the number of students who have built amazing apps or games and simply haven't published these a app store! to simply demonstrate their understanding of app development and more importantly have a app/game which they can demonstrate to a potential employer as part of their portfolio.
So the following blog is to simply help you all understand how to publish and maintain your published app or games and ideally help you get started on the development of a real portfolio of apps and games in the Windows 8 store.
So get your completed course, assignment or module published.
Log in to the Windows Store
Before you can publish your app, you need a Windows Store account. Go to the Windows Store to register. If you haven't claimed your free Windows Store account via dreamspark go to https://www.dreamspark.com/Student/Windows-8-App-Development.aspx
After you log in to the store with your live ID (the one you used for your store account), go to “Dashboard”
If this is your first time logging in since you created your account, you may see a message that says
“Before we can list any of your apps in the Store, you’ll need to verify your payment method. Verify your payment method.”
When you created your account you entered credit card information. A small amount was charged and then reimbursed on your credit card to validate the card. You need to find your billing statement (or call your credit card company) to find out the transaction amount that was charged.
Select the Verify your payment method link and you will be taken to the Payment account verification screen. When you get there scroll to the bottom of the screen. using the information from your credit card billing statement, enter the amount that was charged or the 3 digit code from the transaction description and select Next.
Once you see the message saying “We successfully verified your payment account” You are ready to begin submitting your app!
From the top menu, select “Dashboard” then select “Submit an app” from the menu on the right.
Use the dashboard to see all the applications you submitted and their status in the store certification process. It can take as little as 2 days or as much as 2 weeks for an app to be published after you submit it.
Choose a Name for App/Game Your app/game name is important! It is the first thing a customer sees when they find your app in the store. Be creative! Make sure you don't use names that are trademarked by others or those who own the trademark could ask to have your app removed from the store.
So step1. is do some research, search the store for names, phrase, titles and ensure you pick a unique one.
Enter the app name you wish to use and select Reserve App Name. If you get a message back informing you your app name is already in use, you will have to enter a different app name.
NOTE: The app name you enter here must match the Display Name in your app manifest in your created app/game
TIP: You can just do this first step to reserve your app name before you have the code ready to publish. Your name will be reserved for 12 months.
Price - This is where you set the price of your app, and your free trial options. If you choose to charge for your app, pricing can start at £0.99. The price you select may include a sales tax that the customer must pay. Your proceeds will be based on the pretax amount.
TIP: Apps with free trials of some sort usually get more downloads, you can either limit the duration of the trial, or in your code you can limit the features available on the trial version. Use the license Information class to determine if a trial has expired, or if a user is running a trial version. You can find more information about handling trials in your code here.
Markets - Select the countries where you want your app to be available. Selecting a country does not guarantee your app will be published there. There is some content and features that is restricted to certain regions, you could be using a feature that is not available in a particular region yet. You might want to consider the primary languages spoken in a particular country when deciding which countries you select.
TIP: When publishing a game, the countries Korea, South Africa, Brazil, and Taiwan require a game to be rated by a rating board and certified to prove the age rating of the game. If you do not have certificate files to prove you have completed that process, make sure you do NOT select those markets or your app will fail certification.
Release Date - If you want your app to be published as soon as it is certified select the first option.
Category - Now, select the category that best matches your app, this will affect where your app will be listed in the store, so consider your choice carefully. If a Windows user was searching for an app like yours in the store, which category would they choose to search? It's important to make it as easy as possible for users to find your app in the store. Picking the wrong category can also result in failing certification, because the testing team may not feel the category is appropriate for your app.
Hardware requirements – If your app has minimum RAM or DirectX requirements, you can specify that here.
Accessibility – Only select this check box if you have gone through all the accessibility guidelines and tested your app to ensure it is accessible. Accessibility includes testing for users with low vision or screen readers.
Advanced features - You only need to complete this section if your application supports push notifications (often used to update tiles), connect services such as SkyDrive and Single Sign-On, or in-app purchases. In app purchases is a popular way of making money with apps, the app is free, but a user can make in app purchases improve their app experience. For example, there are games where players can purchase weapons or armour. If you have not implemented any of the above features you can just leave all the fields in this section blank.
Age rating and rating certificates - This section is to describe the audience for your app and upload your rating certificates. If you can't decide between two age ratings, for example your app has content you feel is suitable for 12 and older, but requires an account that can only be created by users 16 or older, choose the higher age rating. Some countries requires will also require that your app be rated through a ratings board, especially for games. So check the list to see if a market you selected requires a rating certificate. If you try to publish to a market that requires a rating certificate and you do not provide the certificate file, your app will fail certification.
Cryptography - You must declare whether your app calls, supports, contains or uses cryptography or encryption. There are US regulations regarding the exporting of technology that use certain types of encryption. Apps in the Windows store must comply with these laws because the app files can be stored in the US. These rules apply even if you are a developer in UK selling apps in the UK through the store. So if your app is doing some type of cryptography or encryption you should read up on the regulations to see if your app requires an Export Commodity Classification Number (ECCN).
Packages - Now it's time to upload your app to the Windows Store. But there are a couple of things you need to do first:Build your package and run the WACK test.
· In Visual Studio, change the Build type from Debug to Release and Build the solution by choosing Build | Build Solution from the menu.
· From the menu choose Project | Store | Create App Packages…
· When asked “Do you want to build packages to upload to the Windows Store”, select Yes. and then select Sign In.
· Sign in with the same email account you used for the Windows Store.
· Select the app name you reserved to indicate the app for which you are creating a package. If you are resubmitting after a failed attempt to publish or to update your app in the store, you will want to select the checkbox “Include app names that already have packages” so you can see your app in the list.
· After you select the app name, select Next.
· Now you must choose which platforms will be able to install your application. If you pick Neutral, you will get a single package with builds that will run on any Windows 8 hardware. If you select individual builds you will get a different package for each build type. NOTE: If you are building an app which requires a lot of memory and processing power and you have not tested it on ARM, you might want to consider selecting x86 and x64 specifically and not including ARM in your release.
· For the version number, I recommend using the Automatically increment. Otherwise you must make sure the version number in your app manifest file matches the version number on this page.
· Make a note of the output location, because you will need to upload the file from that location to the store after the package(s) is/are created.
· Select Create when you are ready for Visual studio to generate the app package.
After your package is created, you are prompted to launch the Windows App Certification Kit. This will run your app through a series of tests to check for issues that could cause it to fail certification. While it is running you will see the app occasionally launch and close. Do not interact with the app while the WACK test is running.
To start the WACK test select Launch Windows App Certification Kit. This process can take 10 minutes or so. You will know when it is complete because you will see the test summary page informing you if your app passed or failed. The results window does not automatically appear in the foreground, so you may want to occasionally check your task bar and desktop to see if the test is completed..
If your app failed, select “Click here to view full report” then investigate and resolve the issues that caused it to fail, then create a new package and try again. If your app passed, you are ready to upload the package to the store.
Once your package is created you will find a new folder called “AppPackages” inside your application folder. Inside the “AppPackages” folder is a file that ends with “.appxupload” extension. This is the file you will select when you upload your app.
If you made changes to your app and rebuilt the package, make sure you pick the most recent app package, the version number in the package file name or the date created can help you identify the most recent package(s).
Go to the Packages section in the application submission and then drag your package(s) to the app submission page. (remember if you chose to make separate builds for x86,x64 or ARM you will have multiple packages and you will need to upload all of them to the store.)
You will know when your package is uploaded because you will see it listed as an uploaded package.
App Description - This is where you describe what your app does and this is what users will see when they look at your app in the Windows store. If you want your app to be downloaded by a lot of people, make sure to take time to write a good description. Take a look at the descriptions of similar apps in the store, how will your description stand out? Make sure the first couple of sentences grab their attention. Make sure you have a short list of your app's best features. If you offer a free trial, this is a good place to explain how the trial works. There are some good tips on writing your app description here.
TIP: If your app will require anyone to log in to complete certain tasks, you must mention that in your description or you will fail certification.
Screenshots - After you add the description of your app, you will need to upload images of your app including a logo that the will be used to feature the app.
If you don’t have these images already, you can create them using the simulator in Visual Studio. Change the launch option to Simulator using the drop down key in the menu.
When the app launches, on the right side of the simulator is a button with a camera icon which will let you to take a snapshot of the screen and put it in your clipboard. Then you can open an app such as Paint paste it and save it as a .PNG file. If your image is larger than 2 MB you may have to use a tool like Paint .NET (which you can download for free) to save it at a lower resolution. You can’t just resize the image because it must be at least 1366 x768 pixels (landscape) or 768X1366 pixels (portrait).
Keywords – If someone was searching the store, what keywords would they use to find your app? Specify these as keywords to help users discover your app.
Copyright and trademark info – this is a mandatory field where you specify the copyright information for your application. Basically this is where you get to say, whose app is this.
Promotional Images – If you have a great app, make sure you include some extra images so your app has the potential to be featured in the store! Being featured always results in more downloads, so if you’ve done something amazing, make sure to include all the promotional images so your app could be highlighted!
Website – If you have a website for your app or other apps you have built, you can include a link to it here
Support Contact Info – you must provide a way for users to contact you if they have problems with the app. An email address, or a link to a website with a Contact Us option will suffice.
This is a place for you to add any notes you wish to share with the people who are testing your app for certification. For example, if your app requires a login to an online service, you must provide the login information for an account the testers can use. If your app is only intended for a limited audience, it is good to mention that in notes to testers as well, because your app can be rejected because it does not appeal to a wide audience. So, if you are making an app for a specific audience, make that clear in the description and notes to testers. The information you enter in this section is not seen by users of the app, it is only seen by the team who tests your app to see if it is suitable for the Windows Store.
After you have completed all the sections you should see a checkmark beside every section. If there is a section without a checkmark, go back to see if you either missed a mandatory field, or you have a field entered incorrectly.
If every section is marked as complete you can now select Submit for Certification.
Congratulations! You have just submitted your app to the store!
Once you submit your app, it will take up to 1 weeks to get certified, you can track the progress of your app in the main dashboard. You don’t have to keep coming back here to check the status. If you fail certification, you will receive an email and a detailed error report explaining why it failed so you can correct any errors and resubmit. If you pass certification, you will receive an email with a link to your app in the store!
The Windows team has created this great checklist to help you prepare and organize all the required info to make it easier to enter the info when you submit an app.
Your app is now live and ready for consumers to download and install.
But what happens when you make a update or find a bug that needs fixing or even adding extra functionality?
Here is how do you submit a new version of an app/game to the Windows store after you have made updates to the code
You’ve submitted your app, and now you’ve made some improvements based on comments or feedback from users, or maybe just because you had some time to improve it. Here’s how you do it.
Log in to the Windows Store at dev.windows.com and go to the Dashboard.
Select Details for the app you want to update
When you get to the Details page, select Create New Release
You will need to upload a new package to the store containing your new code.
Go to Visual Studio, open the .appxmanifest file, go to the Packaging tab and increase the Version number, so it indicates this is a new version of your app.
You decide how you want to increment the version numbers, but here is some general guidance:
Now go to the menu and choose Project | Store | Create App Package and follow the prompts to build your new app package. It’s always a good idea to launch the Windows Application Certification Kit on your updated app to make sure it still passes the tests with your updates.
After you have built your new package, return to your app submission screen, select Packages, and upload the new package from your Visual Studio project AppPackages folder (REMINDER: the package is the file with the extension .appxupload).
When you submit a new version of an app, you must indicate the contents of your update in the Description section.
Enter a description of the update in the Description of Update field.
Although it is not required, if you are adding new functionality to your app, consider updating other fields that describe your functionality to users. You want to ensure potential users are aware of the full functionality of your application when browsing the store. Attributes you might want to updated include the Description, the App features list, or the Screenshots.
If you wish you may change other attributes of your app such as price, age ratings, but that is not required to submit the update.
After you have uploaded your new package, completed the description of update and made any additional changes you wish to make, select Submit for Certification to submit your updated app to the store.
That's it you have just submitted an updated version of your app to the store.
For those who have been asked about running Windows 8 Consumer Preview on the retail version of Nike-Tab (sold as the Series 7 Slate)… please note that has Samsung created a new webpage to assist users with the install + drivers which can be found here: http://www.samsung.com/global/windowspreview/
Last week I had the pleasure of speaking to a few hundred people at Apps World on a session entitled Cross Platform Panel: Exploring Methodologies & Tools.
This is a fascinating area as today’s modern app developers are now ultimately having to become more agile in their abilities and use the best tools available to develop an app for as many platforms as possible within a shortest period of time to maximise the revenue their app or game can achieve.
However having to develop an application or game for a diverse range of mobile platforms iOS, Android, Windows Phone etc.. has a number of constraints which need to be taken into consideration for example each have their own ‘native’ development languages, UI/UX, developer tools and environments.
But for the modern developer there is an ever growing list of cross-platform frameworks that allow you to minimise the cost and effort of developing mobile apps, but which to choose?
Here is a list of some of the most common cross platform frameworks available for today’s mobile app builders.
Enyo is a free and open source (Apache 2.0 license) cross-platform and cross-browser application development framework that enables developers to create HTML5 applications and deploy them to many modern desktop browsers and mobile devices.
Enyo is built around the philosophy of fully-encapsulated components, which allow a developer to reuse component pieces (or even an entire application) in new or existing projects. It is possible to embed full Enyo applications in the DOM elements of existing Web pages.
Enyo has a dependency mechanism (package.js) to enable a basic modular approach to building applications. If you look at most Enyo projects, you will see references to a $lib directory in one or more package.js files, usually to include optional modules such as Layout (lists and responsive components) and Onyx (a widget library).
Intel App Framework is a framework for building cross-platform mobile application using HTML5 technologies. The framework started life as jqMobi, a mobile optimised version of jQuery, which was created by the team behind appMobi. Intel acquired the jqMobi tools and staff in February 2013.
Intel App Framework is free and open sourced under an MIT licence. Intel also offer XDK, which is a a full suite of tools built around the App Framework. XDK adds an IDE, build tools and an emulator.
jQTouch is a Zepto/jQuery plugin which provides a framework for developing iOS and Android applications. It is both open source and free to use.
jQTouch provides a structure on which to base the HTML, the majority of the application styling, page transition animations and touch based event handling; however, it’s not a fully featured application development solution.
iOS version uses the out-of-the-box jQuery Mobile styles
Windows Phone uses the jquery-metro-theme extensions to support the Windows UI style together with Windows Phone specific features such as the app-bar.
Kendo provide a suite of web development frameworks, all of which are built on top of the ‘core’ Kendo UI MVVM framework. The Kendo UI Mobile framework adds a set of UI widgets for the creation of mobile interfaces. The mobile framework has a look and feel that mimics the native Apple, Android and Windows Phone themes.
Lungo is a framework for developing cross-platform applications in HTML5. Lungo applications are run in the browser, similar to other HTML-based frameworks such as jQuery Mobile. Lungo provides 2 main workflows:
Lungo provides a rich set of classes to help decorate basic HTML5 markup. The markup is then given behaviour and interaction based on the structure by Lungo, without any developer code being required. Lungo’s philosophy is that you should be able to create a prototype of your application to show basic interaction and page flow without having to write any JS yourself.
Lungo also provides a JS API to interact and enhance the prototype. The Lungo API is similar to the common functionality you’d see in other mobile frameworks, such as DOM manipulation (through Quo.js), page routing and navigation, storage etc.
mgwt is an open source mobile widget framework build using GWT. mgwt provides a number of UI widgets, CSS styles and a PhoneGap API which make it easier to develop native-like applications using GWT.
PhoneJS is a commercial HTML5 framework for cross platform mobile application development from DevExpress. PhoneJS is free for non-commercial use.
PhoneJS uses the Knockout MVVM framework for structuring the application, with the PhoneJS CSS providing a native-styled UI for the various phone platforms. PhoneJS applications use PhoneGap for packaging.
DevExpress also offers a more integrated solution based on PhoneJS, called DXTREME Mobile, which adds Visual Studio tooling.
Titanium APIs provide an abstraction layer for the Android and iOS UI elements, allowing you to write your view code against the Titanium abstraction. Although, there are some view concepts which have not been abstracted, meaning that developers have to write platform specific view code
Xamarin have two commercial products, Xamarin.iOS for iOS development and Xamarin.Android. The Xamarin frameworks allow you to write applications using C# and the .NET framework. For each platform Xamarin provide bindings to the native platform APIs. As a result Xamarin applications make use of the native UI for each mobile platform. Xamarin do not provide a Windows Phone product because the C# and .NET code used for Android and iOS development is directly portable to Windows Phone.
What resources are available to help evaluate which is the best solution?
To help solve this problem PropertyCross presents a non-trivial application, for searching UK property listings, developed using a range of cross-platform technologies and frameworks. Property Cross has a simple aim is to provide developers with a practical insight into the strengths and weaknesses of each framework so this is a definite resource you should check out if your interested in cross platform development.
I would love to hear your experiences of developing apps and games for cross platform support and which tool you find the most useful?