 To introduce myself, I'm Ankitas Thana, a program manager in the Visual C++ team. One of my focus areas is to work on cross-platform mobile development experience for Visual Studio. Today, specifically, I'm going to start with providing you a very short overview of cross-platform mobile development. I will also follow this up by highlighting the key capabilities that Visual C++ is going to provide to aid the cross-platform development story. I will also demonstrate these capabilities through a help of a short demo. Modern development today requires developers to provide their applications across multiple device platforms. From an application development perspective, C++ serves as a great choice as it allows developers to reuse their cross-platform code across a variety of device platforms, keeping the developments costs low. Starting with Visual Studio 2015, Visual C++ will provide a great experience for cross-platform development. Using Visual C++ 2015, developers will be able to acquire all their cross-platform mobile development software easily and stay current with frequent updates. Visual C++ 2015 will also allow developers to build cross-platform mobile applications leveraging C++ for all major mobile platforms. In addition to this, Visual Studio Experience will also allow developers to share and reuse their cross-platform code easily and top this by providing the fastest debugging experience for all these mobile platforms. With that said, let's now demonstrate these capabilities through a short demo. As a part of the File New Project menu, developers will now see the cross-platform node light up under Visual C++. With this node selected, developers can view a wide range of templates made available to them. Let's take a look at a few of them. The Dynamic Shared Library template will allow developers to create a Dynamic Shared Library for the Android platform. This library will contain all the CC++ code and can then be used to create an end-to-end application using Java or Samarin. The other newly added basic application Android template allows developers to create an end-to-end application in Java. The Make File Project template will allow developers to port over their source code easily for other IDEs as it leverages NDK build. Also notice the cross-platform templates, which are used to target and share a cross-platform code between multiple platforms including iOS, which we enabled recently. The last template that I want to talk about is the Native Activity template. Android with API level 9 released the ability to create a complete end-to-end application in C++. This style of application is popular with game engines and other game-like things. Let's further explore this template type by looking at an example. So here I have the OpenGL example solution. It has two projects. The Native Activity project contains all the C++ code. Let us further explore the project by taking a look at the project properties. Project properties allow users to view, edit, modify important project characteristics. For example, using the target API level project property, developers can set the API level that they want to target for their application. Using the platform toolset property, developers can choose the platform toolset that they want to choose for building their application. We currently support both Clang and GCC toolchains. The last property that I want to talk about here is the configuration type project property. This property allows developers to choose what kind of application they're building. In this case, we're building a dynamic shared library or an SO file. Let's now hit cancel and take a look at the other project. The packaging project is used to take the existing dynamic shared library and create an end-to-end Android application using the Anvil system. For the next part of the demo, I'm going to bring up some source code to demonstrate the feature capabilities. For doing so, I'm going to bring up the main.CVP source file and traverse to the android underscore main function. Android underscore main function is a characteristic function for native activity application type and acts as an entry point. As I play around in this function, notice some of the code authoring features that we've introduced. For example, the Android specific intelligence experience lighting up here as I choose the Android LockPrint API. Other features for code editing and authoring such as code navigation work well as well. To demonstrate this, take a look at the peak definition feature in action here. All in all, we've ported most of our code authoring features from the Windows experience and extended them for the Android platform as well. This will provide you a good code editing experience when developing inside Visual Studio. For the next part of the demo, I want to go ahead and show you the debugger capabilities. For doing so, I want to set a bunch of breakpoints. Notice the drop down debugger menu is already populated with the fast x86 Microsoft Android emulator. This emulator is already running in the background. So I'm just going to go ahead and hit F5. On hitting F5, my application is built and then deployed onto the emulator. Notice the breakpoint that I set was hit. Also notice the debugger windows such as the auto window, the locals window, the threats window, and other debugger windows such as the call stack all light up nicely as well. As I mentioned, the Android debugger inside of Visual Studio that we've developed is the fastest debugger on the Windows platform when debugging Android code. To demonstrate this, notice as I actually move between different breakpoints. Furthermore, using this debugger experience, developers can also pass commands directly to GDB using the command window. For example, in this case, I'm viewing the back trace for my application that's currently running using GDB exec. Next, I'm going to hit continue and let the app run. This app is a basic OpenGL app and a response to user touch by changing screen color. Notice that happening as I click on the emulator screen. The emulator itself also has other capabilities. For example, you can rotate the screen and view how your application actually operates. I'm going to hit continue again because my debugger breakpoints were hit. Or you can also leverage other sensors that the debugger actually provides. We currently support the accelerator sensor, the location sensor, the network sensor, and so on. All in all, this is our development experience for Android when using Visual C++. In the next part of this demo, I'm going to show you how to debug a pre-existing Android application package file that you built in another IDE. For doing so, bring up the File New Project menu and choose the Dynamic Share Library application type. I'm going to name this project Debug Pre-existing BigMaps APK and click OK. On doing so, this creates the Debug Pre-existing BigMaps APK project type. Choose the configuration that you want to debug for and hit build. Next, bring up the debugger property pages and fill in the following information. This information includes the package to launch, which is the path to the APK, the package name itself, which can be found in the AndroidManifest.xml, the launch activity, which can also be found in the AndroidManifest, and last, the symbol search path, which contains the symbols for your application type. Click OK. The next thing we need to do is bring some source from the BigMaps application so that we can debug it into Visual Studio. For doing so, I'm going to bring up the map.networkmanager.cbpsource file into VS. Since we will be using this project only for deploying this application and not building, I'm going to uncheck Build in Configuration Manager and click Deploy. I'm going to set a break point in this begin get URL function, which gets called during the BigMaps initialization. At this point, I'm ready to debug my BigMaps APK using Visual Studio. All I need to do now is hit F5. Notice that this application is getting deployed to your device. The BigMaps APK is pretty large in size, and the symbol search path contains over 500 MB of debug information, which is currently getting loaded, as you can see from the loading symbols. Notice that the break point that I set was hit, and the autos and the locals window are light up nicely as well. Using this experience, developers can use the Visual Studio debugger for their pre-existing Android application package files without moving completely into Visual Studio. Thanks for watching this video. To learn more about cross-platform mobile development, follow us on visualstudio.com or vcblog.