Friday, April 22, 2011

My battle with the NDK

My next step in development is to code a file scanner to eliminate the dependency completely on the built in media store in order to use gmmp.  There are some tag libraries written for java I believe but from day 1 intended to use taglib. It supports many file types "Currently it supports both ID3v1 and ID3v2 for MP3 files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC, Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files." and is supposed to be pretty fast.

In order to use taglib, I would have to figure out how to compile C/C++ code using the Android NDK.  Let me tell you this was an adventure.  Taglib is setup to build with cmake so after googling around I found some others who were able to get their projects to build using cmake.  I followed all the tutorials/instructions using cygwin and ubuntu and got no where even close.  Cmake chokes when testing the android c compiler so I could not even make the makefiles.  I tried to trick cmake into passing those tests but the end result were some dll files... yea not useful at all.

So I caved and decided to use the suggested method in the docs and create a makefile by hand (Android.mk + Application.mk).  I wish I did this from the start because I was seeing progress almost immediately.  Besides having to add some flags to use stlport and link with zlib.. the whole process was painless.

So my lesson to everyone else trying the same thing... just follow the android instructions and don't bother with cmake.

Now to deal with JNI.. bleh