What error are you getting?
This is working great for me:
Library Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.plasync.client.android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<!-- Needed for devices with 4.02 or earlier android -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission android:name="org.plasync.client.android.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="org.plasync.client.android.permission.C2D_MESSAGE" />
<!-- <uses-permission android:name="com.playsnc.client.android.data.permission.READ_WRITE"/>-->
<application android:label="" android:icon="@drawable/ic_launcher">
<!-- This is the signin activity for plAsync -->
<activity android:name="org.plasync.client.android.AsyncMultiplayerSetupActivity"
android:label="@string/SETUP_ACTIVITY_NAME"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<!-- This is the intent for getting the local user. Apps that use plAsync must use this
intent to retrieve the local user, or allow the user to signin. Apps should
use startActivityForResult as the sigin activity may require user interaction -->
<intent-filter>
<action android:name="@string/SETUP_ASYNC_MULTIPLAYER_SESSION_ACTION"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<receiver android:name="org.plasync.client.android.gcm.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
</intent-filter>
</receiver>
<service android:name="org.plasync.client.android.gcm.GcmReceiveIntentLauncher"/>
</application>
</manifest>
Application Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.plasync.client.android.testapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="org.plasync.client.android.testapp.AsyncMultiplayerTestAppActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".search.FriendSearchActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<service android:name=".AsyncMultiplayerTestAppMessageReceiver"/>
</application>
</manifest>
Also, I wonder if you solution with services and AIDL is overkill. I started down that route, but got turned off by the complexity of the interprocess communication for my situation. I have been able to simply define a broadcast receiver and intent service in my library, that launches an intent service in my app. You just have to be careful with package names. and component names. The package name will always be the package name for your app, but the component name will be the class name for your service.