• Advertisement
Sign in to follow this  
  • entries
    50
  • comments
    27
  • views
    46254

Android/NDK experimentation

Sign in to follow this  

1669 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:

  1. Compile the library (from the command line, using ndk-build.
    /cygdrive/c/android-ndk-r7/ndk-build

  2. 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

  3. Eclipse project "Build Clean", click OK. For some reason, updating the .so files does not cause them to be transferred to the device.

  4. 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. smile.png

    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.

Sign in to follow this  


0 Comments


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Advertisement