Jump to content

  • Log In with Google      Sign In   
  • Create Account






Android/NDK experimentation

Posted by matt_j, 28 December 2011 · 1,172 views


So, I've successfully ported my game framework to Android. It currently runs on Windows, Mac, Linux, and iOS. Android has been added to the list!

However...

It's been an interesting adventure working with NDK, which I need to compile all the C/C++ code into a .so shared library. Suppose I make a change in the C code. Here's the steps to actually see it take effect on the device:
  • Compile the library (from the command line, using ndk-build.
    /cygdrive/c/android-ndk-r7/ndk-build
  • Copy the library into the project into the Eclipse project, if it isn't being built there already.
    cp -r libs/* /cygdrive/c/Users/Matt/workspace/MyProject/libs
  • Eclipse project "Build Clean", click OK. For some reason, updating the .so files does not cause them to be transferred to the device.
  • Click "Debug". Wait about 8-20 seconds, depending on if the app is already running and needs to be terminated or not.

App is now running!

What if there's a crash in the library? You have to use the addr2line utility on the unstripped version of your library. [ Reference ]

/cygdrive/c/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-addr2line.exe -C -f -e obj/local/armeabi/libmylib.so
  • Type in the pc value specified in the stack trace.
It might be a good idea to set up your PATH in .bashrc. Posted Image

Thoughts

This is incredibly tedious. That's about it, really. XCode 4.2 might be pretty sluggish these days, but at least the build process and simulator run at acceptable speeds, at least compared to Android.

I can really understand the popularity of the Corona engine now. Visual Studio still remains my preferred tool for main development work, and this experience has taught me to write games in such a way that the porting process is as quick and painless as possible.

Questions

Can anyone help me out with these?
  • Why does copying files into my workspace not cause them to be packed into the apk file without a clean build? I would think that Eclipse would notice that the .so files have been modified.
  • How do I move the compile+copy step into a build phase in Eclipse?
  • Having it print the output somewhere in Eclipse and fail if there's a compilation error is even more handy.





September 2014 »

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Recent Entries

Recent Comments

Recent Comments

PARTNERS