Ok i figured it out myself. Just in case someone else faces this issue in future;
i'll try to explain what the issue was.
So i had a library project with GCM integration say com.test.gcm-library. I wanted to use this library in another application project say com.example.gcmtest. By following the accepted answer here i managed to to use the library successfully in my com.example.gcmtest project. It worked fine with API level 17 but when i tried it with api level 10, none of the GCMIntenetService methods would get called and no response would be generated as i posted in my question but i managed to fix it finally. The trick was to change the intent category for receiver in the manifest file. To be precise, i changed the receiver declaration in the manifest file of com.example.gcmtest from this:
<receiver
android:name="com.test.gcm-library.MyCustomBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.test.gcm-library" />
</intent-filter>
</receiver>
to this:
<receiver
android:name="com.test.gcm-library.MyCustomBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<!-- Receives the actual messages. -->
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<!-- Receives the registration id. -->
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.example.gcmtest" />
</intent-filter>
</receiver>
I don't know why but the receiver category field looked like a "dont care" condition for API 17 but for lower APIs this is what i had to do to make it work.