Yes, I’m a complete noob when it comes to Android programming.
I’m trying to setup a cocos2dx app, and would like to understand how to setup the project. It’s Java+Native, so there’s a single call to LoadLibrary to load the app’s native .so. I need to be able to setup some cocos2dx static libraries projects that will generate a number of .a files to be linked into the .so. What’s the best way? There doesn’t seem to be an Android project template for static libs. I can select a native app template, then change the configuration to static lib, but that leaves me with a lot of auto-generated stuff I’m pretty sure I don’t need (or do I?).
I notice also that the nv_* static lib projects have a simple simple structure that I probably need to emulate, but what’s the best way to get there? Do I start with a native app template then remove all the bits I don’t need?
Also, the nv_* static lib projects contain an Android.mk, as to the other samples, which also contain an Application.mk. But these files does not seem to get auto-generated when I create a new java+native app. Must I create and maintain these myself, in parallel with the Visual Studio project? And if I must do this, are there plans to manage these via the Visual Studio gui in the future? I mean, if I add files to the project, I would expect them to be reflected in the Android.mk, for example, and for project compile settings to be available in the GUI, and reflected in Application.mk.
Is there a best-practices doc? I looked in the TADP ‘docs’ directory, but it did not contain anything to provide direction.
Sorry we don’t have enough documentation for this. Android.mk and Application.mk are used by NDK-build, that’s not auto generated in the Visual Studio tool. We provided those files to make the project compatible with ndk-build. Changes in VS will not be reflected in .mk files. We don’t have plan to support maintain .mk files so far.
To make a static lib project, you can start from any template and remove the bits you don’t need. Just to change the “Configuration Type” in project setting to "Static Lib (.a) "
I was trying to add a Box2D static library onto my main project. I finally got it working!
Because I didn’t know how to do it without the MK files, I’d struggle a lot searching the solution. Thankfully with the sample projects provided with the DevPackt, I saw light at the end of the tunnel!
Comparing with the traditional way, In VS I had to create the right hierarchy of folders one by one so the include files path don’t change. In the case of a huge library, that’s really unnecessary.
Other stuff I didn’t find inside the project config is the CFLAGS variable. Where is it? how do I declare it?
CFLAGS are additional switches passed to the compiler. You can add them on the project properties → C/C++ → Command Line page in the Additional Options textbox.
Yes, exactly, just add the line to the C/C++ properties → Command Line. According to the GCC docs you may write -std=c++0x or -std=gnu++0x for any GCC version (including 4.7+) that supports the standard as well as -std=c++11 or -std=gnu++11 for GCC 4.7+