Jump to content

  • Log In with Google      Sign In   
  • Create Account






Android/NDK experimentation

Posted by matt_j, 28 December 2011 · 1,144 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.





July 2014 »

S M T W T F S
  12345
6789101112
13141516171819
20212223 24 2526
2728293031  

Recent Entries

Recent Comments

Recent Comments

PARTNERS