The Android++ extension gives developers working in Visual Studio a way to develop C and C++ applications for Android without leaving Microsoft’s IDE. Justin Webb, lead programmer at gaming company NaturalMotion in Oxford, England, is the coder behind the extension, which also ensures native source-level debugging.
Webb has worked in the gaming industry for about six years, and in a more Android-specific role for the last two. He’s been surprised by the unexpected popularity of Android++ in the developer community, considering he started the project as a way to reduce his own daily aggravation of working with Android. SD Times talked to Webb about how the extension came to be, why it does not support C#, and how it could help bridge the platform gap.
SD Times: When did you start the Android++ project, and what was your initial motivation for creating the extension?
Webb: I’ve been working on this project for about two years, on and off, and have only had the website completed for a…[short time]. It (the motivation) was one of irritation, predominantly. I was frustrated at the state of native Android development and at how Google was taking a very hands-off approach toward the NDK. I’d worked on a number of different platforms previously, and it seemed like they didn’t particularly care about making anything developer friendly.
I felt it was unreasonable for them to expect every developer to know enough to augment their standard build systems when they hit obstacles, and the debugging situation was laughable. So I just decided to investigate making it better.
Considering Visual Studio is Microsoft’s IDE, and the majority of developers using it are working in C#, does Android++ have any features related to writing Android applications in C#? Is that something you’re working on?
Unfortunately no. Android++ is designed to support high-performance native applications, primarily games. I’ve received a number of questions from C# developers under the impression that Android++ supports C#; it does not. If the interest is high enough, I may look at developing a separate product, but that’s purely speculative at the moment.
As far as future support, compatibility and features, what are some of your other plans and ideas for future development of Android++?
I have a number of ideas, basically a bunch of potential ways to improve handling multiple architectures, including integrations of vendor-specific CPU and GPU performance tools. It really depends which features people prioritize. I have my own ideas of where I’d like to take Android++, but for the moment I’m concentrating on stability and basic workflows and will build from there.
Right now Android++ is in 0.1.0 beta. When might the extension emerge from closed beta release and continue the development process?
The closed beta status is a precaution on my part to ensure that users are fully aware that the software is actively in development. It enables me, a sole developer, to improve my working practices and testing to at least mitigate any problems. I expect in the coming month or so to have an early public beta. I’m relieved it’s not publicly available as my hosting bandwidth would have been gone long ago.
Are there any plans to ultimately make Android++ open source?
Yes and no. The MSBuild scripts I can definitely see being open-sourced. However, the situation with the debugger extension is slightly more complicated. I have concerns about manageability, and the risk of actually polluting developers with different (branched) variations. For now I’ll stick with closed source and evaluate it later on.
What is your vision for what Android++ can accomplish in terms of Windows/Windows Phone and Android cross-platform development?
Android++ is designed to help people who are already using or are comfortable using Visual Studio make applications in a way to which they’re accustomed. The idea is essentially to make people more confident about targeting Android, and to reduce a large proportion of the overhead expected of developers when they first try the platform. That said, it is targeted at developers who are producing NDK-heavy applications, predominantly C/C++ sources over Java, so it may really be most useful to that subset.
How do you think this extension could expand the possibilities for mobile developers of different platforms?
The basic premise of Android++ isn’t all that new or unique. Visual Studio is actually very flexible and could support development on a number of different platforms. The approach to creating native applications isn’t usually all that different on the existing mobile platforms. Suitably abstracting compilation and deployment can be done through MSBuild, so I wouldn’t be surprised if other developers applied it to more platforms—Tizen, for example.