After spending couple of days to solve this strange problem, Finally found the cause of the crash. Although the error persists, program runs without any problem now.
The reason why the program runs fine with API level 22 and not not with below 21 is the method limit in android which is 65K. Above 21 natively supports loading multiple dex files from application APK files where below 21 does not. Documents states it here
The solution for this problem is solved at this stackoverflow post
or
if you use google play services, instead of compiling the whole APIs, selectively compile may help. You can find more details here.