Well, I solved my own problem.
libicuuc.so is present in my device / AVD, many devices do come with libicuuc.so, but the shipped version of the this so file doesn't contain the symbol which my code is dependent upon. So essentially trying to load the libicuuc.so by using system.loadlibrary() somehow loads the system library, which I don't want.
So I build the libicuuc.so with a different module name lets say icuucx ,thus it gives me libicuucx.so , which I loaded by using system.loadlibrary() and it worked.